Skip to content

Latest commit

 

History

History
130 lines (85 loc) · 3.51 KB

README.md

File metadata and controls

130 lines (85 loc) · 3.51 KB

A Ticket reservation app built using microservices and runs on Kubernetes

App diagram

Tech Stack

- Typescript
- NestJS
- MikroORM
- MongoDB
- Redis
- RabbitMQ
- NextJS
- Mantine UI
- FusionAuth
- NX Monorepo

Development machine setup:

- Rancher Desktop
- Node 20
- Pnpm
- kubectl
- helm
- Lens
- Vscode

App is exposed at ticketing.dev via ingres. Edit your hosts file to add the domain.

127.0.0.1 ticketing.dev
127.0.0.1 auth.ticketing.dev

Installation of dependencies using helm

NGINX Ingress Controller Visit https://docs.rancherdesktop.io/how-to-guides/setup-NGINX-Ingress-Controller

Postgres https://github.com/bitnami/charts/blob/main/bitnami/postgresql/README.md

helm repo add bitnami https://charts.bitnami.com/bitnami
kubectl create namespace dev
helm install my-pg bitnami/postgresql -f bitnami-postgres.values.yaml --set auth.postgresPassword=postgres_pass --namespace dev

FusionAuth https://fusionauth.io/docs/get-started/download-and-install/kubernetes/fusionauth-deployment

helm repo add fusionauth https://fusionauth.github.io/charts
helm install my-fusionauth fusionauth/fusionauth -f ./fusionauth.values.yaml

MongoDB https://github.com/bitnami/charts/tree/main/bitnami/mongodb

kubectl create namespace mongodb
helm install my-mongo bitnami/mongodb -n mongodb -f ./bitnami-mongo.values.yaml

RabbitMQ

kubectl create namespace rabbitmq
helm install my-rabbitmq bitnami/rabbitmq -n rabbitmq -f ./bitnami-rabbitmq.values.yaml

This workspace has been generated by Nx, a Smart, fast and extensible build system.

Port forwarding

Use Lens app to easily port forward services deployed in kubernetes

Start the app

To start the web-client development server run nx serve web-client. Open your browser and navigate to http://localhost:3000/. Happy coding!

Generate code

If you happen to use Nx plugins, you can leverage code generators that might come with it.

Run nx list to get a list of available plugins and whether they have generators. Then run nx list <plugin-name> to see what generators are available.

Learn more about Nx generators on the docs.

Running tasks

To execute tasks with Nx use the following syntax:

nx <target> <project> <...options>

You can also run multiple targets:

nx run-many -t <target1> <target2>

..or add -p to filter specific projects

nx run-many -t <target1> <target2> -p <proj1> <proj2>

Targets can be defined in the package.json or projects.json. Learn more in the docs.

Want better Editor Integration?

Have a look at the Nx Console extensions. It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users.

Ready to deploy?

Just run nx build demoapp to build the application. The build artifacts will be stored in the dist/ directory, ready to be deployed.

Set up CI!

Nx comes with local caching already built-in (check your nx.json). On CI you might want to go a step further.