From 76a516a4171ca02f30161bf97b97ef73232fa7b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aerilyn=20Dziedzel=C4=97?= Date: Sun, 26 Apr 2026 18:44:59 +0900 Subject: [PATCH] Phase 5 cleanup --- .github/copilot-instructions.md | 9 + .vscode/settings.json | 10 +- CLAUDE.md | 18 + docker/docker-compose.yml | 2 + docs/frontend-redesign-plan.md | 247 +++++ docs/phases/phase-5-product-library.md | 124 ++- docs/phases/phase-6-recipes.md | 43 +- .../cabinet-events.repository.test.ts | 36 +- .../cabinet-events.repository.ts | 17 +- .../cabinet-events.routes.test.ts | 36 +- .../cabinet-events/cabinet-events.routes.ts | 5 +- .../cabinet-events.service.test.ts | 4 +- .../cabinet-events/cabinet-events.service.ts | 5 +- .../src/modules/cabinet/cabinet.repository.ts | 6 +- .../api/src/modules/cabinet/cabinet.routes.ts | 6 +- .../modules/cabinet/cabinet.service.test.ts | 92 +- .../src/modules/cabinet/cabinet.service.ts | 20 +- .../medicine-prices.repository.test.ts | 21 +- .../medicine-prices.repository.ts | 44 +- .../medicine-prices.routes.test.ts | 36 +- .../medicine-prices/medicine-prices.routes.ts | 2 - .../medicine-prices.service.test.ts | 27 +- .../medicine-prices.service.ts | 6 +- .../medicine-products.routes.test.ts | 4 +- .../organizer/organizer.repository.test.ts | 5 +- .../organizer/organizer.routes.test.ts | 25 +- .../organizer/organizer.service.test.ts | 4 +- .../modules/organizer/organizer.service.ts | 19 +- .../purchases/purchases.repository.test.ts | 22 +- .../modules/purchases/purchases.repository.ts | 4 +- .../purchases/purchases.routes.test.ts | 25 +- .../src/modules/purchases/purchases.routes.ts | 6 +- .../purchases/purchases.service.test.ts | 20 +- .../modules/purchases/purchases.service.ts | 12 +- .../refills/refills.repository.test.ts | 8 +- .../src/modules/refills/refills.repository.ts | 10 +- .../modules/refills/refills.routes.test.ts | 92 +- .../modules/refills/refills.service.test.ts | 150 ++- .../src/modules/refills/refills.service.ts | 41 +- .../modules/regimens/regimens.repository.ts | 7 +- .../modules/regimens/regimens.routes.test.ts | 24 +- .../src/modules/regimens/regimens.routes.ts | 16 +- .../modules/regimens/regimens.service.test.ts | 158 ++- .../src/modules/regimens/regimens.service.ts | 10 +- .../modules/stores/stores.repository.test.ts | 8 +- .../src/modules/stores/stores.repository.ts | 5 +- .../src/modules/stores/stores.routes.test.ts | 26 +- .../src/modules/stores/stores.service.test.ts | 6 +- .../api/src/scripts/migrate-dosage-units.ts | 8 +- .../src/enums/cabinet-event.enums.test.ts | 9 +- .../shared/src/enums/regimen.enums.test.ts | 10 +- packages/shared/src/types/cabinet-event.ts | 5 +- packages/shared/src/types/regimen.ts | 5 +- packages/shared/src/utils/frequency.ts | 5 +- .../validation/medicine-price.schemas.test.ts | 12 +- .../src/validation/medicine-price.schemas.ts | 46 +- .../src/validation/purchase.schemas.test.ts | 43 +- .../src/validation/refill.schemas.test.ts | 4 +- .../src/validation/regimen.schemas.test.ts | 5 +- .../shared/src/validation/regimen.schemas.ts | 4 +- .../src/validation/store.schemas.test.ts | 12 +- packages/web/eslint.config.js | 6 + packages/web/next.config.ts | 4 +- .../app/(dashboard)/__tests__/layout.test.tsx | 8 +- .../(dashboard)/__tests__/loading.test.tsx | 2 +- .../dashboard/__tests__/page.test.tsx | 27 +- .../src/app/(dashboard)/dashboard/page.tsx | 505 +++++++++- packages/web/src/app/(dashboard)/layout.tsx | 29 +- .../medicine-prices/__tests__/page.test.tsx | 106 +- .../app/(dashboard)/medicine-prices/page.tsx | 175 ++-- .../app/(dashboard)/medicines/ActivityTab.tsx | 72 +- .../app/(dashboard)/medicines/CabinetTab.tsx | 917 ++++++++++++------ .../app/(dashboard)/medicines/LibraryTab.tsx | 73 +- .../(dashboard)/medicines/OrganizerTab.tsx | 113 +-- .../app/(dashboard)/medicines/RegimensTab.tsx | 114 +-- .../medicines/[id]/__tests__/page.test.tsx | 93 +- .../app/(dashboard)/medicines/[id]/page.tsx | 13 +- .../medicines/__tests__/ActivityTab.test.tsx | 28 +- .../medicines/__tests__/CabinetTab.test.tsx | 28 +- .../medicines/__tests__/LibraryTab.test.tsx | 50 +- .../medicines/__tests__/OrganizerTab.test.tsx | 46 +- .../medicines/__tests__/RegimensTab.test.tsx | 119 ++- .../activity/__tests__/page.test.tsx | 5 +- .../(dashboard)/medicines/activity/page.tsx | 56 +- .../medicines/cabinet/__tests__/page.test.tsx | 5 +- .../(dashboard)/medicines/cabinet/page.tsx | 76 +- .../src/app/(dashboard)/medicines/helpers.tsx | 43 + .../medicines/library/__tests__/page.test.tsx | 5 +- .../(dashboard)/medicines/library/page.tsx | 52 +- .../organizer/__tests__/page.test.tsx | 5 +- .../(dashboard)/medicines/organizer/page.tsx | 56 +- .../src/app/(dashboard)/medicines/page.tsx | 211 ++-- .../regimens/__tests__/page.test.tsx | 5 +- .../(dashboard)/medicines/regimens/page.tsx | 57 +- .../(dashboard)/medicines/schedule/page.tsx | 297 ++++++ .../purchases/__tests__/page.test.tsx | 55 +- .../src/app/(dashboard)/purchases/page.tsx | 223 ++--- .../refills/__tests__/page.test.tsx | 44 +- .../web/src/app/(dashboard)/refills/page.tsx | 242 ++--- .../settings/__tests__/page.test.tsx | 29 +- .../web/src/app/(dashboard)/settings/page.tsx | 60 +- .../stores/__tests__/page.test.tsx | 177 +++- .../web/src/app/(dashboard)/stores/page.tsx | 166 ++-- packages/web/src/app/layout.tsx | 56 +- packages/web/src/components/Providers.tsx | 7 +- packages/web/src/components/ThemeProvider.tsx | 90 ++ .../components/layout/PageHeaderContext.tsx | 40 + .../src/components/layout/SetPageHeader.tsx | 41 + .../web/src/components/layout/Sidebar.tsx | 270 +++++- packages/web/src/components/layout/TopBar.tsx | 151 ++- packages/web/src/components/ui/Avatar.tsx | 27 + packages/web/src/components/ui/Button.tsx | 42 + packages/web/src/components/ui/Card.tsx | 66 ++ packages/web/src/components/ui/Icon.tsx | 233 +++++ packages/web/src/components/ui/IconButton.tsx | 50 + packages/web/src/components/ui/Pill.tsx | 29 + packages/web/src/components/ui/Ring.tsx | 71 ++ packages/web/src/components/ui/SparkBars.tsx | 61 ++ packages/web/src/components/ui/SupplyBar.tsx | 67 ++ packages/web/src/components/ui/index.ts | 10 + packages/web/src/lib/__tests__/useApi.test.ts | 8 +- .../src/services/__tests__/api-client.test.ts | 4 +- .../services/__tests__/cabinet-events.test.ts | 7 +- .../src/services/__tests__/cabinet.test.ts | 15 +- .../src/services/__tests__/households.test.ts | 8 +- .../src/services/__tests__/medicines.test.ts | 19 +- .../src/services/__tests__/purchases.test.ts | 9 +- .../src/services/__tests__/refills.test.ts | 20 +- .../src/services/__tests__/regimens.test.ts | 9 +- packages/web/src/services/medicine-prices.ts | 8 +- packages/web/src/services/organizer.ts | 10 +- packages/web/src/services/purchases.ts | 10 +- packages/web/src/services/refills.ts | 10 +- packages/web/src/services/regimens.ts | 9 +- packages/web/src/services/stores.ts | 4 +- packages/web/src/styles/globals.css | 758 ++++++++++++++- 136 files changed, 6322 insertions(+), 1985 deletions(-) create mode 100644 docs/frontend-redesign-plan.md create mode 100644 packages/web/src/app/(dashboard)/medicines/helpers.tsx create mode 100644 packages/web/src/app/(dashboard)/medicines/schedule/page.tsx create mode 100644 packages/web/src/components/ThemeProvider.tsx create mode 100644 packages/web/src/components/layout/PageHeaderContext.tsx create mode 100644 packages/web/src/components/layout/SetPageHeader.tsx create mode 100644 packages/web/src/components/ui/Avatar.tsx create mode 100644 packages/web/src/components/ui/Button.tsx create mode 100644 packages/web/src/components/ui/Card.tsx create mode 100644 packages/web/src/components/ui/Icon.tsx create mode 100644 packages/web/src/components/ui/IconButton.tsx create mode 100644 packages/web/src/components/ui/Pill.tsx create mode 100644 packages/web/src/components/ui/Ring.tsx create mode 100644 packages/web/src/components/ui/SparkBars.tsx create mode 100644 packages/web/src/components/ui/SupplyBar.tsx create mode 100644 packages/web/src/components/ui/index.ts diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 8d2004f..bb676cf 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -36,6 +36,14 @@ The `docs/instructions/` directory contains best practices and conventions that - **`docs/instructions/keycloak.md`** — Auth integration, JWT claims, guards, token refresh - **`docs/instructions/testing.md`** — Vitest unit/integration/E2E test patterns, coverage targets +## Tool Usage Rules + +- **Always use `read_file` to read file contents** — never use terminal commands like `Get-Content`, `cat`, `head`, or `tail` to read files. These will be denied. +- **Always use `grep_search` or `file_search` to find files and patterns** — never use `Select-String`, `grep`, `find`, or `rg` in terminal commands. +- **Run scripts only via `npm run