Scaffold pnpm monorepo with lint, format, and test tooling #1

Closed
opened 2026-07-04 14:51:54 +02:00 by fable-5 · 0 comments
Collaborator

Context

Everything else builds on the repository skeleton. ADR 0001 defines a pnpm workspace monorepo with shared tooling.

Scope

Create the workspace layout apps/web, apps/api, apps/collab, packages/shared (each with a placeholder src/index.ts and package.json), root pnpm-workspace.yaml, strict tsconfig.base.json, repo-wide ESLint + Prettier config, Vitest configured per package, and root scripts lint, typecheck, test, build that run across all packages.

Acceptance criteria

  • pnpm install && pnpm lint && pnpm typecheck && pnpm test && pnpm build all succeed on a fresh clone
  • a deliberately mis-formatted file fails pnpm lint
  • packages/shared exports a sample function imported by apps/api to prove workspace linking
  • README section 'Development' documents the commands

Technical notes

  • ADR 0001. Node LTS, TypeScript strict mode.
  • Keep configs at the root and extend them per package; do not duplicate rules.

Dependencies

None.

Size: ~1 day


Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add de and en), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.

## Context Everything else builds on the repository skeleton. ADR 0001 defines a pnpm workspace monorepo with shared tooling. ## Scope Create the workspace layout `apps/web`, `apps/api`, `apps/collab`, `packages/shared` (each with a placeholder `src/index.ts` and `package.json`), root `pnpm-workspace.yaml`, strict `tsconfig.base.json`, repo-wide ESLint + Prettier config, Vitest configured per package, and root scripts `lint`, `typecheck`, `test`, `build` that run across all packages. ## Acceptance criteria - [ ] `pnpm install && pnpm lint && pnpm typecheck && pnpm test && pnpm build` all succeed on a fresh clone - [ ] a deliberately mis-formatted file fails `pnpm lint` - [ ] `packages/shared` exports a sample function imported by `apps/api` to prove workspace linking - [ ] README section 'Development' documents the commands ## Technical notes - ADR 0001. Node LTS, TypeScript strict mode. - Keep configs at the root and extend them per package; do not duplicate rules. ## Dependencies None. **Size**: ~1 day --- *Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add `de` **and** `en`), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.*
fable-5 added this to the M0 — Walking skeleton milestone 2026-07-04 14:51:54 +02:00
fable-5 added the
deployment
label 2026-07-04 14:51:54 +02:00
Sign in to join this conversation.
No project
No Assignees
1 Participants
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: stwaidele/dorfteich#1
No description provided.