We try to build a simple room booking to make the best practices NodeJS in MSA.
- TypeScript language
- NodeJs / NestJS v9
- NextJS v13
- Flutter v3.3
- Keycloak
- Kafka
- PostgreSQL
- Docker
- Terraform
- FluxCD
- Kustomize
- Kubernetes
- Get the latest source code
- Add the following records to your host file:
127.0.0.1 traefik.local 127.0.0.1 identity.local 127.0.0.1 node-msa.local/api-docs 127.0.0.1 grafana.local 127.0.0.1 admin.node-msa.local 127.0.0.1 node-msa.local
To edit the hosts file on macOS or Unix-based systems:
sudo nano /etc/hosts
To edit the hosts file on Windows:
- Open Notepad or any text editor as Administrator.
- Open the file located at C:\Windows\System32\drivers\etc\hosts.
- Add the above records to the file and save it.
- Start the Docker Compose services:
docker-compose up -d
- Ensure your services are properly labeled to be picked up by Traefik. Accessing the Traefik Dashboard: Traefik dashboard will be available at http://traefik.local
This document provides an overview of the different services used in the project, including details on their implementation languages and functionalities
NO | Service | Language | Description |
---|---|---|---|
1 | homefront | Typescript | Homepage for listing all available rooms, show room detail, price and provide reservation function to guest. |
2 | merchant app | Dart | Provide a mobile app for merchant to manage their rooms, view booking detail, ... |
3 | admin app | Typescript | A web application for admin to manage users, rooms and bookings |
4 | BFF | Typescript | Prepare a GraphQL gateway for homefront, merchant app to communicate with internal services |
5 | identity | Provide OIDC authentication | |
6 | listing-service | Typescript | Lists rooms, views room detail, price... |
7 | reservation-service | Typescript | Manage room reservation |
8 | payment-service | Typescript | Processes payment |
9 | message-broker | A Kafka instance |