https://github.com/kareimgazer/to-do-microservices
Simple prototype demonstrating microservices at scale.
https://github.com/kareimgazer/to-do-microservices
busybox docker docker-compose express javascript microservices mongodb nginx nodejs proxy-server react redis single-page-app
Last synced: 8 months ago
JSON representation
Simple prototype demonstrating microservices at scale.
- Host: GitHub
- URL: https://github.com/kareimgazer/to-do-microservices
- Owner: KareimGazer
- Created: 2024-08-29T16:07:25.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-29T19:21:02.000Z (about 1 year ago)
- Last Synced: 2025-01-31T18:15:16.606Z (9 months ago)
- Topics: busybox, docker, docker-compose, express, javascript, microservices, mongodb, nginx, nodejs, proxy-server, react, redis, single-page-app
- Language: JavaScript
- Homepage:
- Size: 78.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# To Do (Single-Page App) - Microservice
![]()
Basic To Do application demonstrating the microservice architecture by deploying the frontend, the backend, the database, and cache all as its own service while providing an Nginx proxy-server as a defualt gateway to the app.
## Architecture 🛠️
The client first communicates with the Nginx proxy server to get initial single page data. The proxy-server acts as an CDN.
Then the app starts fetching data from the backend (express app)

The backend uses MongoDB as a permanent store. data are persisted locally using docker volumes. Redis DB is used for caching.

The containers use the default network bridge for communication with DNS lookups provided by Docker.
[BusyBox](https://www.busybox.net/) is provided as a service to debug the network of the containers internally.
## Getting Started (Docker 🐋)
```bash
docker compose -f ./docker-compose.dev.yml up
```## File Structure
```
To-Do-Microservices
├── todo-frontend frontend-app
├── todo-backend backend server contsaing express, Mongo, Redis
├── utils Databases configurations
├── mongo Mongo DB - NoSQL for simplicity
├── redis Redis DB - used for caching
├── .gitignore ignoreing data volumes from VCS
├── docker-compose.dev.yml development deployment composer file
├── nginx.dev.conf Nginx configuration for development deployment
└── README.md main documentation
```