No description
Find a file
2026-05-12 20:04:45 -04:00
backend listagem apenas das minhas tasks 2026-05-12 20:04:45 -04:00
docker/postgres/init project scaffold 2026-04-21 15:58:44 -04:00
frontend listagem apenas das minhas tasks 2026-05-12 20:04:45 -04:00
specification project scaffold 2026-04-21 15:58:44 -04:00
.gitignore project scaffold 2026-04-21 15:58:44 -04:00
backlog.md project scaffold 2026-04-21 15:58:44 -04:00
docker-compose.yml project scaffold 2026-04-21 15:58:44 -04:00
README.md project scaffold 2026-04-21 15:58:44 -04:00

TimeTrack MVP

Minimal vertical slice for task management using:

  • React + TypeScript + Tailwind CSS
  • Java + Quarkus
  • PostgreSQL
  • Keycloak prepared for future authentication

Structure

  • frontend/: Vite React app with task list, task creation, and status updates
  • backend/: Quarkus API with a simple Clean Architecture split
  • docker-compose.yml: local PostgreSQL and Keycloak services

Run infrastructure

Start PostgreSQL and Keycloak:

docker-compose up

Services:

  • PostgreSQL: localhost:5432
  • Keycloak: http://localhost:8081
  • Keycloak admin: admin / admin

Run the backend

The backend uses the Maven wrapper generated by Quarkus.

cd backend
./mvnw quarkus:dev

Default database settings already point to the local Docker PostgreSQL instance:

  • database: timetrack
  • user: timetrack
  • password: timetrack

Main API endpoints:

  • POST /tasks
  • PATCH /tasks/{id}/status
  • GET /tasks

Example create request:

curl -X POST http://localhost:8080/tasks \
  -H "Content-Type: application/json" \
  -d '{"name":"Prepare sprint review","description":"Collect release notes"}'

Run the frontend

cd frontend
npm install
npm run dev

The Vite dev server runs on http://localhost:5173 and proxies /api/* to the backend on http://localhost:8080.

If needed, you can override the API target with VITE_API_URL.

Architecture notes

The backend keeps the vertical slice intentionally small:

  • domain: task entity and status enum
  • application: use cases and repository port
  • adapter/in: REST API
  • adapter/out: PostgreSQL persistence with Panache

Important pragmatic decisions:

  • UUIDs are generated in the application layer to keep the slice simple.
  • Flyway owns schema creation with a single migration.
  • Keycloak is available locally now but not integrated into the app yet.

Verification

Backend:

cd backend
./mvnw test

Frontend:

cd frontend
npm run build