TimeTaskTracker is a backend application for managing users, tasks, and subtasks. Built with Java + Spring Boot as two independently deployable microservices, and deployed to Oracle Cloud on a k3s Kubernetes cluster with a managed AWS RDS PostgreSQL database — demonstrating production-oriented backend architecture with JWT-based security, automated testing, and CI.
- User Service: Swagger UI
- Task Service: Swagger UI
- Authentication & Authorization — Secure login with JWT, token refresh & validation, handled by a dedicated User Service
- Task & Subtask Management — Create, update, and delete tasks with hierarchical organization
- Microservices Architecture — User and Task services deployed and scaled independently
- 23 REST Endpoints — documented and testable via Swagger UI across both services
- Database Migrations — Schema versioned and managed with Flyway
- Automated Testing — Unit and integration tests (JUnit, Mockito, MockMvc) run automatically in CI
- Containerized & Orchestrated — Multi-stage Docker builds, deployed to Kubernetes (k3s) behind an NGINX Ingress with TLS and CORS configured for multiple frontend origins
- CI Pipeline — GitHub Actions builds and runs the full test suite on every push
- Backend: Java, Spring Boot
- Security: JWT
- Database: PostgreSQL, hosted on AWS RDS
- Migrations: Flyway
- Testing: JUnit, Mockito, MockMvc (unit + integration)
- Containerization: Docker (multi-stage builds)
- Orchestration: Kubernetes (k3s), hosted on Oracle Cloud
- Networking: NGINX Ingress, TLS, CORS
- CI/CD: GitHub Actions
- API Docs: Swagger / OpenAPI
- Microservices architecture (User Service, Task Service)
- JWT-based authentication & authorization
- Database migrations with Flyway
- Unit & integration tests (JUnit, Mockito, MockMvc)
- Multi-stage Docker builds + local Docker Compose environment
- Kubernetes (k3s) deployment with NGINX Ingress, TLS, and CORS
- Managed PostgreSQL via AWS RDS
- CI pipeline on GitHub Actions (build + test on every push)
- CD pipeline (automated deploy to cluster on merge)
- Centralized logging & metrics (Spring Actuator + Prometheus/Grafana)
- Async communication between services (e.g. Kafka/RabbitMQ)
The APIs are deployed live — see the links above — but you can also run the project locally if needed.
Both services need a .env file with database and JWT secrets (this is gitignored on purpose — never commit real credentials). Copy the example and fill in your own values:
git clone https://github.com/BBohdann/TimeTaskTracker.git
cd TimeTaskTracker
cp .env.example .env
Then run with Docker Compose:
docker-compose up --build
This project was created primarily as a learning and portfolio application. Contributions are welcome, but the main focus is showcasing modern backend practices.
This project is open-source and available under the MIT License.