416223e80b7cc0d4b75f09d07bd6bc7fa7928b5d
- TopBar: brand + nav links (NavLink active styling) + user dropdown
- TimeEntryForm: create + edit mode; date/project/h:mm inputs; pre-fills
on edit; posts to /api/time-entries or PUTs /{id}
- WeeklyView: ISO week navigation (← →); 7-day list with entry rows,
inline TimeEntryForm per day, delete; week total in header
- MonthlyView: year-month navigation; per-project table with time and
cost progress bars; BudgetBanner for breached projects
- ProjectsView: project list with budget bars + create-project form
- BudgetBanner: red banner displayed when any project is over budget
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
App
React 19 + Spring Boot 3.4 web app backed by PostgreSQL 17.
Quick start
Requires a full JDK (not just JRE) for Maven compilation.
mise installbelow handles this. Without mise:sudo apt install openjdk-21-jdk.
# 1. Pin toolchain — installs Java 21 JDK, Node 22, Maven, lefthook, gitleaks
mise install
# 2. Install deps and git hooks (or run the four commands manually)
mise run setup
# 3. Start the database
docker compose up -d
Open two terminals:
# Backend → http://localhost:8080
mvn -f backend/pom.xml spring-boot:run
# Frontend → http://localhost:5173 (proxies /api → :8080)
cd frontend && npm run dev
Verify everything
mise run check # format-check + lint + test (both stacks)
Without mise:
mvn -f backend/pom.xml spotless:check -q
cd frontend && npx biome check src
mvn -f backend/pom.xml test -q
cd frontend && npx vitest run
Environment
.env.example documents all env vars. mise run setup copies it to .env automatically on first run.
Description
Languages
TypeScript
57.7%
Java
41.2%
Dockerfile
0.8%
HTML
0.3%