booking-microservices-expressjs
Practical microservices, built with Node.Js, CQRS, Vertical Slice Architecture, Event-Driven Architecture, Postgres, RabbitMQ, Express and the latest technologies.
File Explorer
Download Latest Version (.zip)- ci.yml
- release-drafter-labeler.yml
- release-drafter.yml
- booking-microservices.excalidraw
- booking-microservices.png
- booking.png
- logo.png
- vertical-slice-architecture.excalidraw
- vertical-slice-architecture.png
- infrastructure.yaml
- otel-collector-config.yaml
- booking-deployment.yaml
- booking-service.yaml
- configmap.yaml
- flight-deployment.yaml
- flight-service.yaml
- identity-deployment.yaml
- identity-service.yaml
- ingress.yaml
- jaeger-deployment.yaml
- jaeger-service.yaml
- kustomization.yaml
- namespace.yaml
- otel-collector-configmap.yaml
- otel-collector-deployment.yaml
- otel-collector-service.yaml
- passenger-deployment.yaml
- passenger-service.yaml
- postgres-deployment.yaml
- postgres-pvc.yaml
- postgres-service.yaml
- rabbitmq-deployment.yaml
- rabbitmq-pvc.yaml
- rabbitmq-service.yaml
- README.md
- secret.yaml
- zipkin-deployment.yaml
- zipkin-service.yaml
- prometheus.yml
- booking.dto.ts
- booking.entity.ts
- create-booking.ts
- flight.client.ts
- passenger.client.ts
- mappings.ts
- 1702553396443-create-booking-table.ts
- booking.repository.ts
- data-source.ts
- db.context.ts
- readme.md
- swagger.json
- http-client.extensions.ts
- logger.extensions.ts
- mediatr.extensions.ts
- otel.extensions.ts
- rabbitmq.extensions.ts
- repository.extensions.ts
- routes.ts
- app.ts
- .editorconfig
- .env.development
- .gitignore
- .prettierignore
- .prettierrc
- Dockerfile
- eslint.config.mjs
- jest.config.js
- package.json
- tsconfig.build.json
- tsconfig.json
- tsoa.json
- config.d.ts
- config.js
- config.js.map
- config.ts
- context.d.ts
- context.js
- context.js.map
- context.ts
- booking.contract.d.ts
- booking.contract.js
- booking.contract.js.map
- booking.contract.ts
- flight.contract.d.ts
- flight.contract.js
- flight.contract.js.map
- flight.contract.ts
- identity.contract.d.ts
- identity.contract.js
- identity.contract.js.map
- identity.contract.ts
- passenger.contract.d.ts
- passenger.contract.js
- passenger.contract.js.map
- passenger.contract.ts
- error-handler.d.ts
- error-handler.js
- error-handler.js.map
- error-handler.ts
- jwt.d.ts
- jwt.js
- jwt.js.map
- jwt.ts
- logger.d.ts
- logger.js
- logger.js.map
- logger.ts
- morgan.d.ts
- morgan.js
- morgan.js.map
- morgan.ts
- mediatr-js.d.ts
- mediatr-js.js
- mediatr-js.js.map
- mediatr-js.ts
- prometheus.metrics.d.ts
- prometheus.metrics.js
- prometheus.metrics.js.map
- prometheus.metrics.ts
- request-counter.middleware.d.ts
- request-counter.middleware.js
- request-counter.middleware.js.map
- request-counter.middleware.ts
- request-duration.middleware.d.ts
- request-duration.middleware.js
- request-duration.middleware.js.map
- request-duration.middleware.ts
- open-telemetry.d.ts
- open-telemetry.js
- open-telemetry.js.map
- open-telemetry.ts
- otel-diagnostics-provider.d.ts
- otel-diagnostics-provider.js
- otel-diagnostics-provider.js.map
- otel-diagnostics-provider.ts
- rabbitmq-connection-options-builder.d.ts
- rabbitmq-connection-options-builder.js
- rabbitmq-connection-options-builder.js.map
- rabbitmq-connection-options-builder.ts
- rabbitmq-connection.d.ts
- rabbitmq-connection.js
- rabbitmq-connection.js.map
- rabbitmq-connection.ts
- rabbitmq-consumer-options-builder.d.ts
- rabbitmq-consumer-options-builder.js
- rabbitmq-consumer-options-builder.js.map
- rabbitmq-consumer-options-builder.ts
- rabbitmq-consumer.d.ts
- rabbitmq-consumer.js
- rabbitmq-consumer.js.map
- rabbitmq-consumer.ts
- rabbitmq-publisher.d.ts
- rabbitmq-publisher.js
- rabbitmq-publisher.js.map
- rabbitmq-publisher.ts
- rabbitmq.d.ts
- rabbitmq.js
- rabbitmq.js.map
- rabbitmq.ts
- swagger.d.ts
- swagger.js
- swagger.js.map
- swagger.ts
- postgres-container.d.ts
- postgres-container.js
- postgres-container.js.map
- postgres-container.ts
- rabbitmq-container.d.ts
- rabbitmq-container.js
- rabbitmq-container.js.map
- rabbitmq-container.ts
- db-context.d.ts
- db-context.js
- db-context.js.map
- db-context.ts
- index.d.ts
- index.js
- index.js.map
- index.ts
- event.d.ts
- event.js
- event.js.map
- event.ts
- application.exception.d.ts
- application.exception.js
- application.exception.js.map
- application.exception.ts
- conflict.exception.d.ts
- conflict.exception.js
- conflict.exception.js.map
- conflict.exception.ts
- forbidden.exception.d.ts
- forbidden.exception.js
- forbidden.exception.js.map
- forbidden.exception.ts
- http-client.exception.d.ts
- http-client.exception.js
- http-client.exception.js.map
- http-client.exception.ts
- not-found.exception.d.ts
- not-found.exception.js
- not-found.exception.js.map
- not-found.exception.ts
- unauthorized.exception.d.ts
- unauthorized.exception.js
- unauthorized.exception.js.map
- unauthorized.exception.ts
- paged-result.d.ts
- paged-result.js
- paged-result.js.map
- paged-result.ts
- encryption.d.ts
- encryption.js
- encryption.js.map
- encryption.ts
- reflection.d.ts
- reflection.js
- reflection.js.map
- reflection.ts
- serialization.d.ts
- serialization.js
- serialization.js.map
- serialization.ts
- time.d.ts
- time.js
- time.js.map
- time.ts
- validation.d.ts
- validation.js
- validation.js.map
- validation.ts
- .editorconfig
- .gitignore
- .prettierignore
- .prettierrc
- eslint.config.mjs
- package.json
- tsconfig.build.json
- tsconfig.json
- aircraft.dto.ts
- aircraft.entity.ts
- create-aircraft.ts
- mappings.ts
- airport.dto.ts
- airport.entity.ts
- create-airport.ts
- mappings.ts
- 1702553492495-create-flight-table.ts
- aircraft.repository.ts
- airport.repository.ts
- flight.repository.ts
- seat.repository.ts
- flight.seed.ts
- data-source.ts
- db.context.ts
- readme.md
- swagger.json
- logger.extensions.ts
- mediatr.extensions.ts
- otel.extensions.ts
- rabbitmq.extensions.ts
- repository.extensions.ts
- flight.dto.ts
- flight.entity.ts
- flight-status.enum.ts
- create-flight.ts
- get-flight-by-id.ts
- mappings.ts
- routes.ts
- seat.dto.ts
- seat.entity.ts
- seat-class.enum.ts
- seat-type.enum.ts
- create-seat.ts
- get-available-seats.ts
- reserve-seat.ts
- mappings.ts
- app.ts
- .editorconfig
- .env.development
- .gitignore
- .prettierignore
- .prettierrc
- Dockerfile
- eslint.config.mjs
- jest.config.js
- package.json
- tsconfig.build.json
- tsconfig.json
- tsoa.json
- auth.dto.ts
- token.dto.ts
- token.entity.ts
- token-type.enum.ts
- generate-token.ts
- login.ts
- logout.ts
- refresh-token.ts
- validate-token.ts
- mappings.ts
- 1702550291057-create-user-table.ts
- auth.repository.ts
- user.repository.ts
- user.seed.ts
- data-source.ts
- db.context.ts
- readme.md
- swagger.json
- logger.extensions.ts
- mediatr.extensions.ts
- otel.extensions.ts
- rabbitmq.extensions.ts
- repository.extensions.ts
- routes.ts
- user.dto.ts
- user.entity.ts
- role.enum.ts
- create-user.ts
- delete-user-by-id.ts
- get-user-by-id.ts
- get-users.ts
- update-user.ts
- mapping.ts
- app.ts
- create-user.test.ts
- create-user.test.ts
- fake-create-user-request.dto.ts
- fake-create-user.ts
- fake-user.entity.ts
- end-to-end.fixture.ts
- integration-test.fixture.ts
- create-user.test.ts
- .editorconfig
- .env.development
- .env.test
- .gitignore
- .prettierignore
- .prettierrc
- Dockerfile
- eslint.config.mjs
- jest.config.ts
- package.json
- tsconfig.build.json
- tsconfig.json
- tsoa.json
- 1702553578224-create-passenger-table.ts
- passenger.repository.ts
- data-source.ts
- db.context.ts
- readme.md
- swagger.json
- logger.extensions.ts
- mediatr.extensions.ts
- otel.extensions.ts
- rabbitmq.extensions.ts
- repository.extensions.ts
- passenger.dto.ts
- passenger.entity.ts
- passenger-type.enum.ts
- get-passenger-by-id.ts
- get-passengers.ts
- mappings.ts
- routes.ts
- create-user.ts
- app.ts
- .editorconfig
- .env.development
- .gitignore
- .prettierignore
- .prettierrc
- Dockerfile
- eslint.config.mjs
- jest.config.js
- package.json
- tsconfig.build.json
- tsconfig.json
- tsoa.json
- .dockerignore
- .env.example
- .gitignore
- booking.rest
- CONTRIBUTION.md
- docker-compose.yml
- LICENSE
- README.md
# Installation Guide
git clone https://github.com/meysamhadeli/booking-microservices-expressjs
Downloads the entire project code from GitHub to your computer.
cd booking-microservices-expressjs
Moves into the project folder you just downloaded.
2. Docker
Easy Recommended- Git Needed to download the project code from GitHub.
- Docker Desktop Needed to build and run containers. Install it and keep it running in the background.
docker compose up -d --build
Builds and starts all defined containers (server, database, etc.) at once, in the background.
docker compose ps
Runs the command against the services defined in the compose file.
docker compose logs -f
Runs the command against the services defined in the compose file.
docker compose down
Runs the command against the services defined in the compose file.
docker build -t booking-microservices-expressjs-identity:latest -f src/identity/Dockerfile src
Builds a runnable image based on the Dockerfile.
Pulled directly from this repo's README.
3. Node.js
Easynpm run migration:generate -- src/data/migrations/new-migration-name
Type this command into your terminal and run it.
npm run migration:run
Type this command into your terminal and run it.
npm run build
Builds optimized production files.
npm run dev
Starts the development/run server.
npm test
Type this command into your terminal and run it.
Pulled directly from this repo's README.
