Convert garage into a pnpm + Turborepo monorepo #10

Merged
yuris merged 12 commits from issue-6-monorepo into main 2026-07-17 19:38:58 +00:00
Owner

Closes #6

Restructures the repository into a pnpm + Turborepo workspace hosting both apps.

Structure

apps/management   # existing garage CRM (moved via git mv, history preserved)
apps/store        # imported garage-store (git subtree, history preserved)

(packages/catalog is intentionally deferred to #7.)

Changes

  • Root pnpm workspace (apps/*, packages/*) with a single lockfile.
  • turbo.json with dev/build/lint/test tasks; root scripts delegate to turbo.
  • Store adopts the root Biome config; ESLint (config + deps) removed. biome check replaces eslint.
  • Both apps aligned on Next.js 16.2.10.
  • Biome provided via devenv (nix); devenv tasks/processes target the garage workspace.
  • .gitignore made monorepo-aware; per-app infra files (lockfiles, devenv, eslint) removed from the store import.
  • Root README documents the workspace; app-specific env/README stay per app.

Verification

  • pnpm install --frozen-lockfile from root: passes.
  • apps/management production build: passes.
  • apps/store production build (SSG) against a catalog endpoint: passes.
  • Both dev servers start independently (--filter garage, --filter garage-store) and serve HTTP 200.
  • turbo run build --filter='[HEAD]' on a store-only change scopes to garage-store only — management is not rebuilt.
  • garage-store tests (10) pass via turbo; management tests (30) pass.
  • Store lint is clean (0 errors); management build/test are unaffected.

Notes

  • Management carries pre-existing Biome findings (unused imports, useOptionalChain, etc.) surfaced now that Biome runs there — Biome was never enforced on it before. This is a pure structural move, so management source is left byte-identical; cleaning that debt is out of scope for #6.
  • Docker/Forgejo publishing paths are intentionally untouched here; they are owned by #8.
Closes #6 Restructures the repository into a pnpm + Turborepo workspace hosting both apps. ## Structure ``` apps/management # existing garage CRM (moved via git mv, history preserved) apps/store # imported garage-store (git subtree, history preserved) ``` (`packages/catalog` is intentionally deferred to #7.) ## Changes - Root pnpm workspace (`apps/*`, `packages/*`) with a single lockfile. - `turbo.json` with `dev`/`build`/`lint`/`test` tasks; root scripts delegate to turbo. - Store adopts the root Biome config; ESLint (config + deps) removed. `biome check` replaces `eslint`. - Both apps aligned on Next.js 16.2.10. - Biome provided via `devenv` (nix); devenv tasks/processes target the `garage` workspace. - `.gitignore` made monorepo-aware; per-app infra files (lockfiles, devenv, eslint) removed from the store import. - Root README documents the workspace; app-specific env/README stay per app. ## Verification - `pnpm install --frozen-lockfile` from root: passes. - `apps/management` production build: passes. - `apps/store` production build (SSG) against a catalog endpoint: passes. - Both dev servers start independently (`--filter garage`, `--filter garage-store`) and serve HTTP 200. - `turbo run build --filter='[HEAD]'` on a store-only change scopes to `garage-store` only — management is not rebuilt. - `garage-store` tests (10) pass via turbo; management tests (30) pass. - Store lint is clean (0 errors); management build/test are unaffected. ## Notes - Management carries pre-existing Biome findings (unused imports, `useOptionalChain`, etc.) surfaced now that Biome runs there — Biome was never enforced on it before. This is a pure structural move, so management source is left byte-identical; cleaning that debt is out of scope for #6. - Docker/Forgejo publishing paths are intentionally untouched here; they are owned by #8.
yuris merged commit b60d715814 into main 2026-07-17 19:38:58 +00:00
yuris deleted branch issue-6-monorepo 2026-07-17 19:38:58 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
yuris/garage!10
No description provided.