Files
medassist-ng/.planning/codebase/STRUCTURE.md
T

5.7 KiB

Codebase Structure

Analysis Date: 2026-04-30

Directory Layout

medassist/
├── frontend/                 # React + Vite SPA, UI, hooks, page routes, frontend tests
├── backend/                  # Fastify API, domain services, DB schema/migrations, backend tests
├── backend/drizzle/          # SQL migration files + drizzle meta journal
├── docs/                     # Product/ops docs and screenshots
├── doku/                     # Local-only working notes and reports (ignored)
├── .github/                  # CI workflows, agents, local skill/runtime metadata
├── .planning/codebase/       # Generated codebase mapping documents
├── data/                     # Runtime/local SQLite backups and scheduler files
└── package.json              # Root workspace scripts for lint orchestration

Directory Purposes

frontend/src:

  • Purpose: Product UI and client-side app logic.
  • Contains: pages/, components/, context/, hooks/, ui/, utils/, i18n/, test/.
  • Key files: frontend/src/main.tsx, frontend/src/App.tsx, frontend/src/context/AppContext.tsx.

backend/src:

  • Purpose: HTTP API, auth, domain services, and persistence access.
  • Contains: routes/, services/, plugins/, db/, utils/, test/.
  • Key files: backend/src/index.ts, backend/src/routes/medications.ts, backend/src/routes/planner.ts, backend/src/db/client.ts.

backend/drizzle:

  • Purpose: SQL migration history for SQLite compatibility.
  • Contains: numbered migration files and meta/_journal.json.
  • Key files: backend/drizzle/0000_init.sql, backend/drizzle/0014_add_user_settings_timezone.sql.

frontend/e2e:

  • Purpose: Playwright end-to-end scenarios and fixtures.
  • Contains: browser tests + auth fixtures.
  • Key files: frontend/e2e/fixtures/ and spec files under frontend/e2e/.

docs + doku:

  • Purpose: formal docs (docs/) and local-only work tracking (doku/).
  • Contains: behavior/spec docs, screenshots, local report/memory logs.
  • Key files: docs/TECH_STACK.md, doku/memory_notes.md, doku/report.md.

Key File Locations

Entry Points:

  • frontend/src/main.tsx: Browser bootstrap; mounts providers and router.
  • frontend/src/App.tsx: Route graph and global modal/shell orchestration.
  • backend/src/index.ts: Fastify app setup + startup runtime.

Configuration:

  • frontend/vite.config.ts: Dev server, /api proxy rewrite, build-time constants.
  • frontend/vitest.config.ts: Frontend unit test config.
  • backend/vitest.config.ts: Backend unit/integration test config.
  • backend/drizzle.config.ts: Drizzle migration configuration.
  • .gitignore: Local-only/generated path policy (including .planning/, doku/, data/, coverage/test artifacts).

Core Logic:

  • backend/src/routes/: API contracts and request handlers.
  • backend/src/services/: Scheduler, notifications, medication helpers.
  • backend/src/db/schema.ts: Source-of-truth table definitions.
  • frontend/src/context/: Shared app orchestration state.
  • frontend/src/pages/: Screen-level composition.

Testing:

  • frontend/src/test/: Frontend unit/component tests.
  • frontend/e2e/: Playwright E2E tests.
  • backend/src/test/: Backend route/service/db tests.

Naming Conventions

Files:

  • React components/pages use PascalCase: frontend/src/pages/MedicationsPage.tsx, frontend/src/components/MedDetailModal.tsx.
  • Hooks use use* naming: frontend/src/hooks/useMedications.ts, frontend/src/hooks/useSettings.ts.
  • Backend routes/services use kebab-case: backend/src/routes/medication-enrichment.ts, backend/src/services/reminder-scheduler.ts.
  • Migrations use numbered descriptive names: backend/drizzle/0012_add_api_keys_and_package_amount_columns.sql.

Directories:

  • Feature/layer folders are lowercase: frontend/src/context, backend/src/services.
  • Test directories stay colocated by runtime side (frontend/src/test, backend/src/test).

Where to Add New Code

New Feature:

  • Primary code:
    • Frontend UI route/screen: frontend/src/pages/ (compose from existing components/, hooks/, ui/).
    • Backend endpoint: backend/src/routes/ + matching domain logic in backend/src/services/.
    • Persistence additions: backend/src/db/schema.ts plus migration updates in backend/src/db/client.ts and backend/drizzle/.
  • Tests:
    • Frontend unit/component: frontend/src/test/.
    • Backend unit/integration: backend/src/test/.
    • E2E flow: frontend/e2e/.

New Component/Module:

  • Implementation:
    • Shared UI primitive/layout: frontend/src/ui/.
    • Domain-specific UI component: frontend/src/components/ (or nested feature folder).
    • Backend reusable domain behavior: backend/src/services/.

Utilities:

  • Shared helpers:
    • Frontend: frontend/src/utils/.
    • Backend: backend/src/utils/.
    • DB-specific helpers: backend/src/db/ focused utility modules.

Special Directories

frontend/dist, backend/dist:

  • Purpose: build output artifacts.
  • Generated: Yes.
  • Committed: No (dist/ ignored in .gitignore).

frontend/playwright-report, frontend/test-results, frontend/coverage, backend/coverage:

  • Purpose: test artifacts/reports.
  • Generated: Yes.
  • Committed: No (ignored in .gitignore).

data/:

  • Purpose: runtime/local DB, reminder state, scheduler locks.
  • Generated: Yes.
  • Committed: No (data/ ignored in .gitignore).

doku/:

  • Purpose: local work memory/reporting and internal notes.
  • Generated: Mixed (manual local notes + artifacts).
  • Committed: No (doku/ ignored in .gitignore).

.planning/codebase/:

  • Purpose: generated architecture/stack/convention/concern maps for GSD planning/execution.
  • Generated: Yes.
  • Committed: No (.planning/ ignored by policy in this workspace).

Structure analysis: 2026-04-30