diff --git a/NEXT_STEPS.md b/NEXT_STEPS.md index f5ccc30..ed253ba 100644 --- a/NEXT_STEPS.md +++ b/NEXT_STEPS.md @@ -4,15 +4,16 @@ Items that were out of scope for the initial 6-hour build, with notes on how to ## Features -### User management UI -Currently, users are seeded via Flyway (`V2__seed_demo_data.sql`). A `POST /api/users` endpoint -with a "New User" form in the frontend would complete the CRUD cycle. Straightforward to add -following the same pattern as project creation. +### User creation / deletion UI +Users are seeded via Flyway (`V2__seed_demo_data.sql`) and the selected user's name/default rate can +be edited from the top bar. A `POST /api/users` endpoint with a "New User" form, plus optional delete +support, would complete the CRUD cycle. Straightforward to add following the same pattern as project +creation. -### Edit existing time entry (project-create form was shipped; entry edit is partially done) -The backend `PUT /api/time-entries/{id}` endpoint exists. The frontend `TimeEntryForm` handles -editing when `editEntry` is passed. Wire up the Edit button per entry row in `WeeklyView` — -already scaffolded, just needs end-to-end smoke-testing. +### Time entry edit smoke coverage +Editing existing time entries is implemented end-to-end (`PUT /api/time-entries/{id}`, `TimeEntryForm` +edit mode, and the `WeeklyView` Edit button). Add explicit frontend and/or MockMvc smoke coverage for +the edit path so regressions are caught. ### Notes / description field on time entries Add a `TEXT` column to `time_entries` (new Flyway migration), expose it in the DTOs, and add a @@ -31,9 +32,9 @@ Add a `GET /api/reports/weekly.csv?userId=&week=` and `/monthly.csv` endpoint th ## Technical quality ### Full backend test pyramid -The current happy-path tests cover the repository date-range query, service cost/budget logic, and -one end-to-end MockMvc flow. Gaps to fill: -- `@WebMvcTest` controller-slice tests for validation error responses (400 on invalid fields). +The current tests cover the repository date-range query, service cost/budget logic, one end-to-end +MockMvc flow, and a few validation cases for user/project updates. Gaps to fill: +- Dedicated `@WebMvcTest` controller-slice tests for validation error responses (400 on invalid fields). - More `@DataJpaTest` cases (zero entries, multiple users, rate fallback). - `@SpringBootTest` with Testcontainers so tests do not depend on an externally-running PostgreSQL. diff --git a/README.md b/README.md index 31e670c..22ccec8 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ Docker Compose — Flyway for schema migrations — Tailwind CSS v4 — Biome 1. ## Features -- **Daily time entries** — date, project, duration (entered as h:mm), automatic cost from hourly rate -- **Weekly view** — navigate by ISO week; see total hours per day and a running week total +- **Daily time entries** — date, project, duration (entered as h:mm), automatic cost from hourly rate; entries can be created, edited, and deleted +- **Weekly view** — navigate by ISO week; see total hours per day, individual entries, and a running week total - **Monthly view** — per-project summary with time and cost progress bars; red banner when a budget is exceeded -- **Project management** — create projects with time and cost budgets; set a project-level hourly rate or fall back to the user's default -- **Multi-user** — pick any seeded user from the dropdown; cost is calculated using that user's rate when no project rate is set +- **Project management** — create and edit projects with time and cost budgets; set a project-level hourly rate or fall back to the user's default +- **Multi-user** — pick any seeded user from the dropdown and edit that user's name/default rate; cost is calculated using that user's rate when no project rate is set - **Soft budget enforcement** — entries always save; over-budget projects are highlighted with a warning banner and colored bars ## Quick start @@ -68,7 +68,8 @@ Without mise: ```bash # one-time setup -sudo apt install openjdk-21-jdk nodejs npm docker-compose-plugin +sudo apt install openjdk-21-jdk docker-compose-plugin +# Install Node 22 with your preferred Node version manager or distro-specific package. export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 # adjust if your JDK is elsewhere npm --prefix frontend install cp -n .env.example .env @@ -99,7 +100,8 @@ for demo users and projects). Hibernate is set to `validate` — it never modifi **API shape** — aggregation is done server-side via two dedicated endpoints: `GET /api/reports/weekly?userId=&week=YYYY-Www` and `GET /api/reports/monthly?userId=&month=YYYY-MM`. -All other CRUD endpoints follow standard REST conventions under `/api/`. +Resource endpoints live under `/api/`: users can be listed and updated, projects can be listed, +created, and updated, and time entries can be listed by date range, created, updated, and deleted. ## Environment