No description
Find a file
Gabriel Santana de Menezes 20c69bcb7e fix: include projectless tasks in org dashboard and member detail stats
Tasks with no associated project were being excluded from org dashboard
calculations because the query filtered by project.organization.id.
Now fetches tasks by active member emails, so all tasks are counted.
Tasks and history items with no project are grouped under "Geral" in
project-specific charts and calculations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 20:06:44 -04:00
.claude/skills chore: remove duplicated standards from new-task skill 2026-05-12 20:04:45 -04:00
.github chore: enforce coding standards and add project guidelines 2026-05-12 20:04:45 -04:00
backend fix: include projectless tasks in org dashboard and member detail stats 2026-05-12 20:06:44 -04:00
docker/postgres/init project scaffold 2026-04-21 15:58:44 -04:00
frontend fix: include projectless tasks in org dashboard and member detail stats 2026-05-12 20:06:44 -04:00
.gitignore project scaffold 2026-04-21 15:58:44 -04:00
CLAUDE.md chore: removing unecessary lines 2026-05-12 20:06:41 -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