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.
2.6 KiB
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.
- Install Node.js 24.x (e.g. via nvm:
nvm install 24). - Enable the pinned package manager:
corepack enable(readspackageManager: pnpm@11.23.0), ornpm install -g pnpm@11.23.0. - Install dependencies (frozen lockfile):
pnpm install --frozen-lockfile - Verify the workspace:
Command Runs pnpm buildcompiles every workspace package pnpm testruns the test suite (Vitest, incl. FIT-001) pnpm typechecktypechecks 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