Rename lists -> projects and items -> cards throughout
Project scope shifts from a todo list to a project-management app. This is a
straight terminology rename across code, comments, migrations, tests, and
docs — no behaviour change.
- DB: table todo_lists -> projects, todo_items -> cards, column
todo_items.list_id -> cards.project_id, indexes renamed. Migrations 003/004
rewritten in place (destructive; recreate the volume with `down -v`).
- API: /api/lists -> /api/projects, nested /items -> /cards, reorder body
item_ids -> card_ids, JSON keys list/lists/item/items -> project/projects/
card/cards, item_count -> card_count, list_id -> project_id, and the
matching error messages.
- PHP: TodoList/TodoItem Repository + Controller -> Project/Card; shared SQL
aliases l/i -> p/c.
- Frontend: stores lists.ts/items.ts -> projects.ts/cards.ts (useProjectsStore
/ useCardsStore, MAX_PROJECTS), ListView -> ProjectView, TodoItemRow ->
CardRow, route /lists/:id -> /projects/:id (name "project"), types TodoList/
TodoItem -> Project/Card, and all UI copy. CSS .lists*/.list-head* ->
.projects*/.project-head*, .item* -> .card-row* (kept the generic .card
panel class), .items -> .cards.
- Product name in the header, PWA manifest, index.html title and package
descriptions -> "Project Manager" / "Projects".
Backend suite: 37 passing.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>