Application core (entity, API, CRUD UI, status enum) #131
Labels
No labels
area:auth
area:ci
area:db
area:infra
area:native
area:pwa
area:service
epic
feature
foundation
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
james/carol#131
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add the core Application entity so a user can record an application to a position and move it through its lifecycle.
Scope
applicationstable:(id, user_id, company, position_name, posting_url, posting_body, status, created_at, updated_at).user_idFK tousers, indexed; same per-user scoping discipline as every other domain entity.posting_urlandposting_bodyare both nullable so a user can record an application before the posting has been fully captured.statusis a fixed enum stored as text for SQLite/Postgres parity. The seven values:open,started,submitted,interviewing,accepted,rejected,closed. New applications default toopen.db/entities/application.ts; repository indb/repositories/applications.ts; migration underdb/migrations/.lib/dto/application.ts. Status is a zod enum so an unknown value fails validation before it reaches the DB.app/api/applications/(list, create, get, update, delete) — all session-authed by the default middleware, all scoped to the authenticated user, cross-user IDs return 404.app/(app)/applications/— list + create + edit using TanStack Query / Form per ADR-0012 and the pattern inapp/notes/. Status renders as a labelled badge and is editable inline on the detail page.Documents and status updates are separate tickets in this epic and ride on top of this entity.
Acceptance criteria
applicationsmigration applies on startup, both engines.Part of epic #129.