Commit Graph

81 Commits

Author SHA1 Message Date
aferrer 68c2983d36 refactor: remove username from User model, login by email only 2026-06-16 16:18:42 +02:00
aferrer caf19575c6 refactor: rename DB columns recipientId to personId 2026-06-16 13:37:58 +02:00
aferrer cf6820a7aa refactor: rename remaining recipient references to person/people 2026-06-16 13:34:15 +02:00
aferrer 29c7c19cd8 refactor: complete i18n rename recipients to people, finalize tests 2026-06-16 12:25:57 +02:00
aferrer ecc3cf1b55 refactor: rename recipients route to people, update all frontend references 2026-06-16 11:26:21 +02:00
aferrer d67f31cf54 refactor: rename Recipient to Person, remove username, add userId FK 2026-06-16 10:04:24 +02:00
aferrer befe1f3f82 fix(validation): replace deprecated Zod error flatten calls 2026-06-15 21:59:02 +02:00
aferrer 20552ba68b docs: document i18n architecture and localized surfaces 2026-06-15 17:04:36 +02:00
aferrer 73552dbb05 feat(i18n): localize admin users UI surfaces 2026-06-15 16:01:19 +02:00
aferrer 0cbbe60299 feat(i18n): localize admin users backbone 2026-06-15 15:35:08 +02:00
aferrer 349559f4e0 feat(i18n): localize assignment validation messages 2026-06-15 01:15:24 +02:00
aferrer bfea2b77ab feat(i18n): localize inventory assignments UI 2026-06-15 00:47:25 +02:00
aferrer 9b713c42e2 feat(i18n): localize recipient validation messages 2026-06-14 22:41:20 +02:00
aferrer c0ae7a034a feat(i18n): localize recipients UI 2026-06-14 18:33:57 +02:00
aferrer ea37fc8d70 test(i18n): cover movement page localization 2026-06-14 02:05:01 +02:00
aferrer f62cd6fb37 feat(i18n): localize movement UI 2026-06-14 01:20:23 +02:00
aferrer 7d5ab64653 feat(i18n): localize asset validation messages 2026-06-13 17:23:01 +02:00
aferrer 3d6b13dc1c feat(i18n): localize inventory assets UI 2026-06-13 17:07:51 +02:00
aferrer c67e86c91b feat(i18n): localize item validation messages 2026-06-13 11:28:28 +02:00
aferrer 964b1648ca feat(i18n): localize inventory items UI 2026-06-13 11:12:02 +02:00
aferrer 9f7d1b8ef8 feat(i18n): localize category action messages 2026-06-12 23:21:08 +02:00
aferrer e9a07eb28e feat(i18n): localize inventory categories UI 2026-06-12 23:01:33 +02:00
aferrer 589b042e7c feat(i18n): localize submit button states 2026-06-12 09:51:19 +02:00
aferrer 2fa6611719 feat(i18n): localize shell and common UI 2026-06-11 17:54:56 +02:00
aferrer c3cf4182ad feat(i18n): add language switcher 2026-06-11 16:16:06 +02:00
aferrer 18a192a069 chore: apply Biome cleanup 2026-06-11 04:56:01 +02:00
aferrer ac3dfe69cd feat(i18n): add locale dictionaries and pilot surfaces 2026-06-11 04:55:47 +02:00
aferrer 2c6d6bffcd docs: document testing setup 2026-06-07 16:56:33 +02:00
aferrer f2b9239d82 test: add initial unit integration and e2e coverage
Adds the initial testing baseline for the project:

   Unit coverage:
   - Zod schemas for items, assignments, movements, categories, auth, recipients, users, and assets
   - password hashing and verification helpers
   - auth role helper functions

   Integration coverage with PostgreSQL Testcontainers:
   - item use-cases: create, duplicate names, delete constraints
   - assignment use-cases: create, insufficient stock, return, double return
   - asset use-cases: available/assigned creation and lifecycle transitions
   - user use-cases: create/update, uniqueness, admin safeguards, password reset
   - category use-cases: create/update/delete constraints
   - recipient use-cases: create/update and uniqueness constraints

   E2E smoke coverage with Playwright:
   - unauthenticated redirect to login
   - seeded admin login
   - dashboard load
   - admin users page
   - inventory items page
   - assignments page

   Also configures:
   - Vitest
   - Playwright
   - PostgreSQL Testcontainers helpers
   - deterministic E2E admin bootstrap
   - test artifact ignores

   Validation:
   - bun run test: 9 files / 37 tests passed
   - bun run test:e2e: 3 passed
   - bunx tsc --noEmit: passed
   - bunx prisma validate: passed
2026-06-07 04:14:01 +02:00
aferrer cb01f4f8ef docs: update README for use-case architecture 2026-06-05 15:30:21 +02:00
aferrer bc5926a5de chore(prisma): fold item name unique index into init migration 2026-06-04 22:42:51 +02:00
aferrer 16a68e01ab Merge pull request #3 from refactor/use-cases-architecture
refactor: split actions into use cases and repositories
2026-06-04 20:31:43 +00:00
aferrer a7f7ace527 refactor(structure): move legacy import and remove lib leftovers 2026-06-04 22:13:26 +02:00
aferrer da9ae0582b fix(auth): update login imports after action move 2026-06-04 22:13:00 +02:00
aferrer 24d2d59bbc refactor(recipients): move mutations into use cases 2026-06-04 22:12:36 +02:00
aferrer f48ccb8c50 refactor(categories): move mutations into use cases 2026-06-04 22:12:06 +02:00
aferrer 0af25417ab refactor(items): move workflows into use cases 2026-06-04 22:11:40 +02:00
aferrer 2b908b24f6 refactor(assets): move workflows into use cases 2026-06-04 22:10:43 +02:00
aferrer e88fb2e6d4 refactor(assignments): move workflows into use cases 2026-06-04 22:09:54 +02:00
aferrer 5034ec0646 feat(users): add admin user management and bootstrap seed 2026-06-04 22:03:13 +02:00
aferrer 12cbec92a0 feat(auth): add role guards and protect admin routes 2026-06-04 21:57:39 +02:00
aferrer 601dea9526 chore(tooling): align biome vscode and ui config 2026-06-04 21:53:42 +02:00
aferrer 9ecb543c18 chore(prisma): move schema and generated client workflow 2026-06-04 21:53:08 +02:00
aferrer 72973bfb3f refactor: use z.input for item schema form types 2026-05-14 12:58:26 +02:00
aferrer 4b40f50e7f refactor: add and use assignment data output type in services 2026-05-14 11:05:19 +02:00
aferrer feae1d2cda chore: update gitignore for prisma generated files and VSCode settings 2026-05-12 00:55:25 +02:00
aferrer 0d877cbba6 chore: update biome.json ignore configuration 2026-05-12 00:54:32 +02:00
aferrer eb07760748 fix: redirect to login page after sign out 2026-05-12 00:53:35 +02:00
aferrer d748e3e6c5 refactor: remove unused SITE_URL constant 2026-05-12 00:52:54 +02:00
aferrer 9c7e987d6e fix: add button type attribute to reset button 2026-05-12 00:51:24 +02:00