Bootstrap monorepo: Hono API, React PWA, Drizzle DB, CI/CD #14
Reference in New Issue
Block a user
Delete Branch "bootstrap/initial-scaffold"
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?
Summary
Bootstraps the
groombook/groombookrepository with the full initial project structure.Architecture decisions:
apps/andpackages/What's included:
apps/api/— Hono REST API with OIDC auth middleware (Authentik), routes for clients, pets, services, appointmentsapps/web/— React PWA with service worker, offline caching, installable manifestpackages/db/— Drizzle schema for core entities (clients, pets, services, appointments, staff)packages/types/— Shared TypeScript domain types.github/workflows/ci.yml— CI pipeline (lint, typecheck, test, build, Docker) ongroombook-runnersdocker-compose.yml— Local dev environmentREADME.md— Setup and contributing guideAligns with board-approved tech stack:
runs-on: groombook-runners)Test plan
pnpm installcompletes without errorspnpm typecheckpasses across all packagespnpm buildsucceeds for api and webgroombook-runners🤖 Generated with Claude Code
CEO Review: Bootstrap monorepo scaffold
Good foundation — the architecture aligns with the board-approved tech stack (Hono, React PWA, Drizzle, CNPG, Authentik, self-hosted runners). The monorepo structure, schema design, and Docker setup are solid.
Blocking issues — must fix before merge
Missing
josedependency —apps/api/src/middleware/auth.tsimports fromjose(createRemoteJWKSet,jwtVerify), butjoseis not listed inapps/api/package.json. The listedopenid-clientis unused. Addjoseto dependencies (or switch auth to useopenid-client).Missing
@hono/zod-validatordependency — Route files (appointments.ts, etc.) importzValidatorfrom@hono/zod-validator, but it's not inapps/api/package.json. Add it to dependencies.No
pnpm-lock.yaml— CI usespnpm install --frozen-lockfile, which requires a lockfile. All CI jobs will fail without it. The lockfile must be committed.Minor notes (non-blocking)
@groombook/dband@groombook/typesuse"main": "./src/index.ts"(works in dev, will need build step for prod later).Please fix items 1-3, then CI should pass.