This project shows a simple task board made from three Node.js services and a PostgreSQL database. The API serves task data, the frontend shows a React interface, and the logger service stores request logs. Docker Compose keeps all containers connected on the same network.
- frontend/ – React app that talks to the API.
- api/ – Express server that manages tasks and contacts the logger.
- logger/ – Small logging service that writes events to disk.
- db/ – SQL script that creates the
taskstable and seed data. - docker-compose.yml – Starts every service together.
- .env.example – Copy this file to
.envfor your own settings.
Make sure these tools are installed:
- Docker 24 or newer
- Docker Compose plugin 2.24 or newer
- Copy the sample environment file:
cp .env.example .env
- Update
.envif you need other ports, passwords, or log levels. - Build and start every container:
docker compose up --build
- Open the app in your browser at http://localhost:3000.
Docker Compose also exposes:
- API at http://localhost:5000
- Logger service listening for POST requests at
http://localhost:4000/log - PostgreSQL at
localhost:5432for local tools
- Stop the stack but keep containers:
docker compose stop - Remove containers and network:
docker compose down - Watch logs from all services:
docker compose logs -f
- If ports are busy, change them in
.envand restart withdocker compose up --build. - If the database keeps old data, run
docker compose down -vto remove the volume.
- Code changes inside
api,frontend, orloggerdirectories update live because they are mounted as volumes. - Run
docker compose logs -f apito focus on the API output when debugging.
This lab project is shared for educational use within the Programming Technologies course.