A Task Management application with a Spring Boot backend and React frontend.
| Area | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, Redux Toolkit, TanStack Query |
| Backend | Java 21, Spring Boot 4.0.2, Spring Security (JWT + OAuth2) |
| Database | PostgreSQL 16, Redis 7 (Cache) |
| DevOps | Docker, Docker Compose, Flyway (Migrations), GitHub Action |
| Monitoring | Prometheus, Grafana |
The easiest way to run the Database, Backend, and Frontend together is using Docker Compose.
Copy the example environment file to .env:
cp .env.example .envImportant: internal secrets (JWT, Google/GitHub Credentials) must be set in this .env file for the app to function correctly.
Run the application stack:
docker-compose --env-file .env up -d- Frontend: http://localhost:5173
- Backend API: http://localhost:8080
- Swagger Docs: http://localhost:8080/swagger-ui.html
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3010 (Credentials in
.env)
If you want to run the services individually for development:
You still need PostgreSQL and Redis. Simplest way is via Docker:
docker-compose up postgres redis -d- Use the root
.envvalues or configuringsrc/main/resources/application.properties. - Run with Maven:
cd todo-backend
./mvnw spring-boot:run- Configure Environment:
cd todo-frontend cp .env.example .env - Edit
.envto point to your local backend:VITE_API_BASE_URL=http://localhost:8080 - Run Dev Server:
npm install npm run dev
mini-task-tracker/
├── .env # ROOT Environment Variables (Docker)
├── docker-compose.yml # Orchestration for Full Stack
├── todo-backend/ # Spring Boot API
└── todo-frontend/ # React App (Strict FSD)