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.
63 lines
2.6 KiB
Markdown
63 lines
2.6 KiB
Markdown
# 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
|