All Projects → derekbar90 → Catalyst

derekbar90 / Catalyst

Typescript NodeJS Microservices Boilerplate with Generator CLI - Moleculer, GraphQL, REST, OAuth2, Jaeger, Grafana, Prometheus, Ory Hydra, Ory Keto w/ Access Control middleware, Moleculer-DB GraphQL mixin, Pug, Redis, sibling client repo (login, persistance layer, react-native-web, ios, android)

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Catalyst

Spring Petclinic Microservices
Distributed version of Spring Petclinic built with Spring Cloud
Stars: ✭ 814 (+2613.33%)
Mutual labels:  microservices, prometheus, grafana
Microservices On Cloud Kubernetes
Microservices demo application on cloud-hosted Kubernetes cluster
Stars: ✭ 213 (+610%)
Mutual labels:  microservices, prometheus, grafana
Go Notify
An email automation solution, written in Golang.
Stars: ✭ 143 (+376.67%)
Mutual labels:  redis, prometheus, grafana
Ultimate Backend
Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication
Stars: ✭ 978 (+3160%)
Mutual labels:  graphql, microservices, boilerplate
Edgerealtimevideoanalytics
An example of using Redis Streams, RedisGears, RedisAI and RedisTimeSeries for Realtime Video Analytics (i.e. counting people)
Stars: ✭ 305 (+916.67%)
Mutual labels:  redis, prometheus, grafana
Laravel Vue Boilerplate
🐘 A Laravel 6 SPA boilerplate with a users CRUD using Vue.js 2.6, GraphQL, Bootstrap 4, TypeScript, Sass, and Pug.
Stars: ✭ 472 (+1473.33%)
Mutual labels:  graphql, boilerplate, pug
Bricks
A standard library for microservices.
Stars: ✭ 142 (+373.33%)
Mutual labels:  microservices, redis, prometheus
Project Webcube
Continuously updated JS infrastructure for modern web dev
Stars: ✭ 141 (+370%)
Mutual labels:  graphql, boilerplate, generator
Express Graphql Mongodb Boilerplate
A boilerplate for Node.js apps / GraphQL-API / Authentication from scratch - express, graphql - (graphql compose), mongodb (mongoose).
Stars: ✭ 288 (+860%)
Mutual labels:  graphql, redis, boilerplate
Zenko
Zenko is the open source multi-cloud data controller: own and keep control of your data on any cloud.
Stars: ✭ 353 (+1076.67%)
Mutual labels:  redis, prometheus, grafana
Swagger Stats
API Observability. Trace API calls and Monitor API performance, health and usage statistics in Node.js Microservices.
Stars: ✭ 559 (+1763.33%)
Mutual labels:  microservices, prometheus, grafana
Graphql Ts Server Boilerplate
A GraphQL server boilerplate made with Typescript, PostgreSQL, and Redis
Stars: ✭ 643 (+2043.33%)
Mutual labels:  graphql, redis
Go Gin Api
基于 Gin 进行模块化设计的 API 框架,封装了常用功能,使用简单,致力于进行快速的业务研发。比如,支持 cors 跨域、jwt 签名验证、zap 日志收集、panic 异常捕获、trace 链路追踪、prometheus 监控指标、swagger 文档生成、viper 配置文件解析、gorm 数据库组件、gormgen 代码生成工具、graphql 查询语言、errno 统一定义错误码、gRPC 的使用 等等。
Stars: ✭ 730 (+2333.33%)
Mutual labels:  graphql, prometheus
Reactprimer
React component prototyping tool that generates fully connected class component code.
Stars: ✭ 743 (+2376.67%)
Mutual labels:  boilerplate, generator
Practical.cleanarchitecture
Asp.Net Core 5 Clean Architecture (Microservices, Modular Monolith, Monolith) samples (+Blazor, Angular 11, React 17, Vue 2.6), Domain-Driven Design, CQRS, Event Sourcing, SOLID, Asp.Net Core Identity Custom Storage, Identity Server 4 Admin UI, Entity Framework Core, Selenium E2E Testing, SignalR Notification, Hangfire Tasks Scheduling, Health Checks, Security Headers, ...
Stars: ✭ 639 (+2030%)
Mutual labels:  graphql, microservices
Tyk
Tyk Open Source API Gateway written in Go, supporting REST, GraphQL, TCP and gRPC protocols
Stars: ✭ 6,968 (+23126.67%)
Mutual labels:  graphql, microservices
Graphiti
Stylish Graph APIs
Stars: ✭ 783 (+2510%)
Mutual labels:  graphql, microservices
Prometheusalert
Prometheus Alert是开源的运维告警中心消息转发系统,支持主流的监控系统Prometheus,Zabbix,日志系统Graylog和数据可视化系统Grafana发出的预警消息,支持钉钉,微信,华为云短信,腾讯云短信,腾讯云电话,阿里云短信,阿里云电话等
Stars: ✭ 822 (+2640%)
Mutual labels:  prometheus, grafana
Graphql Redis Subscriptions
A graphql subscriptions implementation using redis and apollo's graphql-subscriptions
Stars: ✭ 829 (+2663.33%)
Mutual labels:  graphql, redis
React App
Create React App with server-side code support
Stars: ✭ 614 (+1946.67%)
Mutual labels:  graphql, boilerplate

Moleculer

Project Catalyst

Project Catalyst is a microservices framework which allows you to create and deploy secured base application development tools within 10 minutes.

CLI Demo

Initial setup

  • Pull submodule for the catalyst client.
    • git submodule update --init --recursive
    • Note: If you don't want to use the catalyst client then you can remove the service section from the docker-compose along with it's volume definition.
  • Run npm i first to setup any global dev tools which are used. These are defined in the package.json which is at the root of the project.
  • Setup acme config with your email at /traefik/traefik.toml
  • Run chmod 600 traefik/acme.json

Ports Configs

These can also be viewed by looking at the docker-compose.yaml file in the project root. Any exposed service is then label within this file for Traefik configuration

Port Service
3000 Traefik Main
3001 Traefik Admin
4444 Hydra Main

Required Setup Step: .ENV Config Setup

If you have not setup a .env file you must create one at the root of the project.

Example:

HOST_NAME={YOUR_HOSTNAME}
POSTGRES_HOST==#############
POSTGRES_USER==#############
POSTGRES_PORT=5432
POSTGRES_PASSWORD==#############
POSTGRES_DB=postgres
ADMIN_OAUTH2_CLIENT_ID==############# -- !!CHANGE THIS VALUE!!
ADMIN_OAUTH2_CLIENT_SECRET=############# -- !!CHANGE THIS VALUE!!
EMAIL_API_KEY==############# !! mailgun specific, use nodemailer config for help !!
EMAIL_DOMAIN==############# !! mailgun specific, use nodemailer config for help !!
EMAIL_PROVIDER==#############

If you are running the catalyst-client/using the consumer-app.json config to power a app, you'll want to modify/update the callbacks per deployment env

Notes

HOST_NAME: hostname of choice to have the stack run on, if you do this: make sure that LetsEncrypt can do a hostname validation, certbot can be run via nginx if you need it but traefik will auto setup the SSL cert and hold it on a volumes in traefik/acme.json. You may need to set the permission on this folder to 600

Global Make Commands

  • make start-stack - build and launch all containers
  • make start-stack-metrics - build and launch all containers with metrics
    • Tip: You need to restart any running services with a updated docker-compose.env where METRICS_ENABLED=true
  • make stop-stack - stop all launched containers
  • make dbash SVC=SERVICE_NAME - takes SVC arg and creates a bash command line inside the running service
  • make dlog SVC=SERVICE_NAME - takes SVC arg and logs with following and tails the last 400 lines of a service
  • start-code-server - create web served version of VS Code, helpful for working on an iPad (iOS 13 preferrable)

Global NPM Scripts

Hygen Specific:

  • npm run hygen - This is a link to the executable bin/script for the hygen generator library.

  • npm run hygen generator help - View generator help

  • npm run hygen generator new [name] - Create new generator

  • npm run hygen generator new-with-prompt [name]: Create new generator w/ prompt

Project Specific:

  • npm run hygen service new: Create new service

Per Service NPM scripts

  • npm run dev - Start development mode (load all services locally with hot-reload & REPL)

  • npm run build- Uses typescript to transpile service to javascript

  • npm start - Start production mode (set SERVICES env variable to load certain services) (previous build needed)

  • npm run cli: Start a CLI and connect to production. Don't forget to set production namespace with --ns argument in script

  • npm run lint - Run TSLint

  • npm run ci - Run continuous test mode with watching

  • npm test - Run tests & generate coverage report

  • npm run dc:up: Start the stack with Docker Compose

  • npm run dc:down: Stop the stack with Docker Compose

Roadmap

1.0 Goals:

  • [x] User Management
    • [x] User Registration
    • [x] User Login
    • [x] Account Verify
    • [x] Password Reset
    • [ ] Forgot Username
    • [x] Global User Registration Event
  • [x] Database Setup
    • [x] Local dev support container
    • [x] Configurable db adapter
    • [x] Migrations support
    • [x] Bootstrap on service at launch
  • [ ] Metrics Services
    • [x] Prometheus setup
    • [x] Grafana setup at /grafana
    • [x] Metrics config setup for services
      • [ ] Add to template generation
  • [ ] Tracing Services
    • [x] Jaeger setup at /jaeger
    • [x] Tracing config setup for services
      • [ ] Add to template generation
  • [x] SSL Support
    • [x] LetsEncrypt Setup
    • [x] Traefik Setup at :8080/dashboard
    • [ ] Domain setup instruction in README.md
  • [x] Redis Cache
  • [x] API Gateway
    • [x] REST
    • [x] GraphQL
  • [x] OAuth 2.0
    • [x] implicit flow
    • [x] consent flow
    • [x] auth code flow
  • [x] ORY Keto
  • [x] Email Suport
    • [x] Service setup w/ mailgun provider
    • [x] Templating
    • [x] User registration event consumption for welcome email

1.1 Goals:

  • [ ] Kubernetes configuation
  • [ ] Helm charts for each base service
  • [ ] Jenkins X Support

1.2 Gaols:

  • [ ] Social Login
  • [ ] Lerna multi repo support
  • [ ] One time password support

Links to main libraries to understand

-- Code Generator: Hygen

-- Router: Traefik

-- Containers: Docker

-- Microservice Framework: Moleculer

-- Message Bus: NATS

-- Database: Postgresql

-- Metrics: Prometheus

-- Tracing: Jaeger

-- OAuth2: Hydra

-- GraphQL: GraphQL

-- PassportJS: PassportJS

-- Kubernetes Middleware https://gist.github.com/icebob/c717ae22002b9ecaa4b253a67952da3a

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].