This project implements a financial backend with NestJS and serves as a demonstration of how to architect and develop a scalable backend API application.
The project has three individual services:
- Auth Service (REST API): implements the authentication process with JWT tokens
- Financial Service (REST API): process and store financial data
- User Service (GraphQL): process and store usar data (profile)
- Showcases how to retrieve the account balance in a financial application
- Showcases how to authenticate, issue and invalidate tokens
- Demonstrates NestJS architecture and patterns.
- Demonstrates how to build a REST API and a GraphQL API
- Shows how to make a secure authentication with JWT.
- Shows how to work with monorepo using Nx.
- Integrates with PostgreSQL (using TypeORM) and Redis.
- Shows how to log in JSON with winston.
- Shows how to test with Jest, Supertest and Testcontainers.
- Shows how to deploy with Docker using multi-stage builds
- Shows how to Github Actions to E2E test the application and publish the compiled code to Docker Hub.
- Shows how to use OpenAPI/Swagger documentation for REST APIs.
- Shows how to use pre-request script in Postman to build powerfull collections.
- Code organization: monorepo with Nx
- Backend: REST API, GraphQL, Node.js, NestJS Framework, TypeScript
- Database and cache: PostgreSQL, Redis, TypeORM
- Security: JWT and BCrypt
- Tests: Unit and integration testing (Jest), E2E Testing (SuperTest and Testcontainers), Code coverage (IstanbulJS)
- CI/CD: GitHub Actions, Docker Hub
- Documentation: OpenAPI/Swagger, Postman collections, Compodoc
- Others: Docker (with multi-stage build), Docker Compose, ESLint, Webpack, JWT, winston