Personal bundle to create GraphQL Microservices and Gateways in matter of minutes
Includes also helpers like ReCaptcha validator, env variables or pre-configured shield rules for trivial permission management. Works great with cloudflare.
Stack:
- Typescript
- Fastify
- Mercurius
- GraphQL Shield
- JWT Authentication
- MongoDB Client
- Rate Limiter
- Redis Client
- Fastify Cors
Features:
- Generated gateway config from YAML file
- ReCaptcha V2 & V3 validator
- Schema -> TS Types generation
- Automatic schema + resolvers merge
- Executable service sdl schema
- JWT Verification
- Switchable logger
- Queries/Mutations over Websocket
- Restricting Query/Mutation only over HTTP or Websocket
- Flexible rate limiting for HTTP and Websocket requests
- Custom types for maximum Typescript support
- Automatic headers rewrite with Cloudflare support
- Every setting ENV controlled
Default ENV settings
export const PRODUCTION = process.env.NODE_ENV === "production"
export const TEST = process.env.NODE_ENV === "test"
export const LOGGER = +process.env.LOGGER === 1
export const NAME = process.env.APP_NAME || null
export const PORT = +process.env.APP_PORT || 3000
export const HOST = process.env.APP_HOST || "localhost"
export const JWT_SECRET = process.env.JWT_SECRET
export const MONGO_HOST = process.env.MONGO_HOST || null
export const MONGO_DBNAME = process.env.MONGO_DBNAME || null
export const REDIS_HOST = process.env.REDIS_HOST || null
export const REDIS_PORT = process.env.REDIS_PORT || null
export const REDIS_PASSWORD = process.env.REDIS_PASSWORD || null
export const REDIS_DB = process.env.REDIS_DB || 1
export const RECAPTCHA_KEY_V2 = process.env.RECAPTCHA_KEY_V2 || null
export const RECAPTCHA_KEY_V3 = process.env.RECAPTCHA_KEY_V3 || null
export const CORS_ORIGIN = process.env.CORS_ORIGIN || "*"
export const RATE_LIMIT_MAX = +process.env.RATE_LIMIT_MAX || 200
export const RATE_LIMIT_TIME_WINDOW =
process.env.RATE_LIMIT_TIME_WINDOW || "1 minute"
export const DISABLE_CODEGEN = +process.env.DISABLE_CODEGEN === 1