Skip to content
This repository has been archived by the owner on Mar 22, 2024. It is now read-only.
/ keadex-einaudi Public archive

Keadex Einaudi represents the backend module of Keadex. It is based on microservices built with NestJS, Apollo and GraphQL.

License

Notifications You must be signed in to change notification settings

keadex/keadex-einaudi

Repository files navigation

Keadex Einaudi Logo

The backend module built with NestJS and GraphQL.


GitHub GitHub release (latest by date) GitHub Workflow Status

Description

Keadex Einaudi represents the backend module of Keadex. It is based on microservices built with NestJS, Apollo and GraphQL.

The API Gateway is exposed on: https://keadex.io/graphql

Keadex Einaudi workspace is a NestJS Monorepo, made up of different apps, one for each microservice.
For further details about the architecture, check the documentation.

Features

  • Microservice architecture & GraphQL
  • Database per service pattern
  • Event sourcing pattern
  • NestJS
  • Apollo Federation
  • Apollo GraphQL Gateway
  • Managed Federation
  • Mongoose
  • Apache Kafka
  • Winston
  • Winston Daily Rotate File
  • Quotable - Thanks to the open source project https://github.com/lukePeavey/quotable
  • Passport (Authentication Middleware)
  • JWT
  • GitHub Actions
  • PM2 - Advanced process manager for production Node.js applications https://pm2.keymetrics.io/

Getting started

  1. install and run Apache Kafka
  2. install and run MongoDB
  3. install Apollo Studio Rover CLI
  4. clone the repo: git clone https://github.com/keadex/keadex-einaudi.git
  5. run yarn install under the root folder
  6. check your environment variables under each microservice folder (/apps/*)
  7. build all the microservices by running the following command under the root folder: nest build MICROSERVICE_NAME_HERE (e.g. nest build gateway)
  8. publish the GraphQL schemas into your Apollo Studio account by running the following command under the root folder: yarn publish-graph --name MICROSERVICE_NAME_HERE --port MICROSERVICE_PORT_HERE (e.g. yarn publish-graph --name gateway --port 3000).
    For further details about the publish schema script, check the /scripts/publish-graph.ts file.
    Microservices configurations (e.g. port number) are defined in the environment variables.

Warning

Nest.js has a bug when using code-first approach in building Microservices with GraphQL and Apollo Federation. Check the following issue and PR for the solution:

About

Keadex Einaudi represents the backend module of Keadex. It is based on microservices built with NestJS, Apollo and GraphQL.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published