feat: bootstrap pnpm workspace (E00-S01)
CI / Workspace bootstrap checks (pull_request) Successful in 4m41s

pnpm 11.23.0 workspace with a committed frozen lockfile, Node engine
restricted to the 24.x line, TypeScript 6.0.3 pinned exactly, strict base
tsconfig, apps/packages/extensions kept as separate workspaces, root
build/test/typecheck commands, and the FIT-001 architecture test rejecting
core-to-extension imports. Minimal CI runs only the root scripts (S05
stages stay out of scope). Closes #58.
This commit is contained in:
bot-implementer
2026-08-27 23:00:54 +00:00
parent 7c21255582
commit 1d649648da
19 changed files with 1153 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
# PersonalBlog (EPPP)
A modular personal blogging platform. This is the **workspace bootstrap**
(E00-S01): a pnpm monorepo skeleton with strict TypeScript, a committed frozen
lockfile, and an enforced dependency boundary between core packages and
concrete extensions.
## Toolchain (pinned)
| Tool | Version | Where pinned |
| ------------ | ------------ | --------------------------------------------- |
| pnpm | 11.23.0 | `packageManager` in root `package.json` |
| Node.js | 24.x line | `engines.node` in root `package.json` |
| TypeScript | 6.0.3 (exact)| root `devDependencies` |
| Vitest | 4.1.10 (exact)| root `devDependencies` |
Direct toolchain dependencies are exact-pinned; the lockfile is committed and
installs always use `--frozen-lockfile`.
## Workspace layout
```
apps/ application shells (e.g. server, admin)
packages/ core / shared packages (contracts, core, extension-sdk, ...)
extensions/ concrete extensions (themes, features, integrations)
tests/ root-level architecture guard tests
```
Each group is a separate workspace glob in `pnpm-workspace.yaml`, so packages
cannot accidentally collapse into one another.
## Dependency boundary (FIT-001)
Core packages (`packages/*`) must **never** import a concrete extension
(`extensions/*`) — neither by package name nor by relative path. The rule is
enforced by `tests/architecture.test.ts`, which discovers extension packages
from the filesystem, so new extensions are guarded automatically. It runs as
part of `pnpm test` and CI.
## Local (non-container) developer path
No Docker required for workspace work; containers arrive in E00-S02.
1. Install Node.js 24.x (e.g. via nvm: `nvm install 24`).
2. Enable the pinned package manager:
`corepack enable` (reads `packageManager: pnpm@11.23.0`), or
`npm install -g pnpm@11.23.0`.
3. Install dependencies (frozen lockfile):
`pnpm install --frozen-lockfile`
4. Verify the workspace:
| Command | Runs |
| --------------- | --------------------------------------------------- |
| `pnpm build` | compiles every workspace package |
| `pnpm test` | runs the test suite (Vitest, incl. FIT-001) |
| `pnpm typecheck`| typechecks root tests and every workspace package |
## Out of scope for this story
- Docker Compose baseline and container smoke tests — E00-S02
- PostgreSQL adapter and migration runner — E00-S03
- CI pipeline stages beyond the root scripts — E00-S05