7.3 KiB
MeshiTrack Monorepo Clean-up Blueprint
This playbook maps out the precise, incremental, batch-by-batch process to refactor all remaining active modules in both @meshitrack/api and @meshitrack/web to achieve complete ESLint compliance under our strict new guidelines, while keeping our 100.00% test coverage pristine.
🚀 The Core Refactoring Strategy
For every class/module we clean up, we follow the established Shopping Lists Reference Standard:
- Repositories:
- Add explicit type parameter annotations for return values (e.g.
: Promise<Document | null>). - Put private helper methods at the very bottom (under public methods) to satisfy
@typescript-eslint/member-ordering. - Type query filters explicitly rather than using
any.
- Add explicit type parameter annotations for return values (e.g.
- Services:
- Keep class properties explicit and
readonly(e.g.private readonly repository: Repository). - Add explicit return signatures (e.g.
: Promise<ShoppingListDocument>). - Avoid
anycompletely; use precise casts (e.g.as ServingUnit) or type guards.
- Keep class properties explicit and
- Routes:
- Cast Fastify inputs explicitly (
request.params as { ... }andrequest.body as ...). - Annotate serialization return contracts explicitly (e.g.
serializeList(doc: Document): SerializedContract). - Wrap WebSocket handshakes or un-typed third party plugins in local ESLint overrides.
- Cast Fastify inputs explicitly (
📅 The Batch Playbook
🧱 Batch 1: Core Identity & Household Foundation
Enforces structural types on our identity schemas, auth profiles, and tenant containers.
- Target Backend Files:
packages/api/src/modules/users/users.repository.tspackages/api/src/modules/users/users.service.tspackages/api/src/modules/users/users.routes.tspackages/api/src/modules/households/households.repository.tspackages/api/src/modules/households/households.service.tspackages/api/src/modules/households/households.routes.ts
- Key Focus:
- Ensure user keycloak sync mapping has explicit return contracts.
- Cast tenant properties safely across fastify injection boundaries.
- Verification Runner:
cd packages/api npx eslint src/modules/users src/modules/households --fix npx vitest run tests/modules/users tests/modules/households
💊 Batch 2: Medicine Cabinet & Consumption Logs
Refactors the active cabinet inventory, item counts, and historical events tracking.
- Target Backend Files:
packages/api/src/modules/medicines/medicines.repository.tspackages/api/src/modules/medicines/medicines.service.tspackages/api/src/modules/medicines/medicines.routes.tspackages/api/src/modules/cabinet/cabinet.repository.tspackages/api/src/modules/cabinet/cabinet.service.tspackages/api/src/modules/cabinet/cabinet.routes.tspackages/api/src/modules/cabinet-events/cabinet-events.repository.tspackages/api/src/modules/cabinet-events/cabinet-events.service.tspackages/api/src/modules/cabinet-events/cabinet-events.routes.ts
- Key Focus:
- Clean up dosage calculations in the service layer, replacing implicit float types.
- Ensure strict sorting sequence in historical event queries.
- Verification Runner:
cd packages/api npx eslint src/modules/medicines src/modules/cabinet src/modules/cabinet-events --fix npx vitest run tests/modules/medicines tests/modules/cabinet tests/modules/cabinet-events
🏪 Batch 3: Store Catalog & Price Registry
Enforces type safety on retail outlets, product mappings, and historical pricing logs.
- Target Backend Files:
packages/api/src/modules/stores/stores.repository.tspackages/api/src/modules/stores/stores.service.tspackages/api/src/modules/stores/stores.routes.tspackages/api/src/modules/medicine-products/medicine-products.repository.tspackages/api/src/modules/medicine-products/medicine-products.service.tspackages/api/src/modules/medicine-products/medicine-products.routes.tspackages/api/src/modules/medicine-prices/medicine-prices.repository.tspackages/api/src/modules/medicine-prices/medicine-prices.service.tspackages/api/src/modules/medicine-prices/medicine-prices.routes.ts
- Key Focus:
- Eradicate
anystructures used in price conversions and store tags.
- Eradicate
- Verification Runner:
cd packages/api npx eslint src/modules/stores src/modules/medicine-products src/modules/medicine-prices --fix npx vitest run tests/modules/stores tests/modules/medicine-products tests/modules/medicine-prices
⏰ Batch 4: Regimens, Refills & Alert Scheduler
Tracks routines, alert thresholds, and automated refilling triggers.
- Target Backend Files:
packages/api/src/modules/regimens/regimens.repository.tspackages/api/src/modules/regimens/regimens.service.tspackages/api/src/modules/regimens/regimens.routes.tspackages/api/src/modules/refills/refills.repository.tspackages/api/src/modules/refills/refills.service.tspackages/api/src/modules/refills/refills.routes.tspackages/api/src/modules/organizer/organizer.repository.tspackages/api/src/modules/organizer/organizer.service.tspackages/api/src/modules/organizer/organizer.routes.ts
- Key Focus:
- Explicitly handle routine status triggers and scheduling date windows.
- Verification Runner:
cd packages/api npx eslint src/modules/regimens src/modules/refills src/modules/organizer --fix npx vitest run tests/modules/regimens tests/modules/refills tests/modules/organizer
🧠 Batch 5: Nutrition, LLM Providers & Health
Enforces guidelines on target metrics, no-op mock LLM interfaces, and health endpoints.
- Target Backend Files:
packages/api/src/modules/nutrition-targets/nutrition-target.repository.tspackages/api/src/modules/nutrition-targets/nutrition-target.service.tspackages/api/src/modules/nutrition-targets/nutrition-target.routes.tspackages/api/src/modules/llm/no-op-llm.provider.tspackages/api/src/modules/health/health.routes.ts
- Key Focus:
- Annotate mock responses in the LLM provider class explicitly.
- Verification Runner:
cd packages/api npx eslint src/modules/nutrition-targets src/modules/llm src/modules/health --fix npx vitest run tests/modules/nutrition-targets tests/modules/llm tests/modules/health
💻 Batch 6: Frontend API Client Services
Brings complete TypeScript strictness to our web fetch and Axios mock endpoints.
- Target Frontend Files:
packages/web/src/services/api-client.tspackages/web/src/services/cabinet.tspackages/web/src/services/cabinet-events.tspackages/web/src/services/households.tspackages/web/src/services/medicines.tspackages/web/src/services/medicine-prices.tspackages/web/src/services/nutrition-targets.tspackages/web/src/services/organizer.tspackages/web/src/services/refills.tspackages/web/src/services/regimens.tspackages/web/src/services/shopping-lists.tspackages/web/src/services/stores.ts
- Key Focus:
- Annotate Axios return response structures explicitly as
Promise<AxiosResponse<T>>or type mappers. - Eliminate implicit parameters.
- Annotate Axios return response structures explicitly as
- Verification Runner:
cd packages/web npx eslint src/services --fix npx vitest run tests/services