Phase 1: Foundation
Monorepo scaffold, core types, data layer, adapter system
Goal
Establish the working monorepo with all packages initialized and the core data layer functional. After this phase, we can load and type-check data from a content repository.
Tasks
1.1 Monorepo Setup
- Root
package.jsonwith scripts -
pnpm-workspace.yamldeclaringapps/*andpackages/* -
turbo.jsonwith task graph -
.gitignore,.npmrc -
CLAUDE.md,AGENTS.md - Root
tsconfig.json(base config in @ever-works/tsconfig) -
.editorconfig -
.github/workflows (CI, deploy)
1.2 Package: @ever-works/tsconfig
-
packages/tsconfig/base.json— strict TypeScript base -
packages/tsconfig/astro.json— Astro-specific extends -
packages/tsconfig/package.json
1.3 Package: @ever-works/eslint-config
-
packages/eslint-config/index.mjs— ESLint 9 flat config -
packages/eslint-config/package.json
1.4 Package: @ever-works/core
-
packages/core/src/types/item.ts— ItemData -
packages/core/src/types/category.ts— CategoryData, CategoryWithCount -
packages/core/src/types/tag.ts— TagData, TagWithCount -
packages/core/src/types/collection.ts— CollectionData -
packages/core/src/types/comparison.ts— ComparisonData, ComparisonDimension -
packages/core/src/types/config.ts— SiteConfig and sub-types -
packages/core/src/types/index.ts— Barrel export -
packages/core/src/content-reader.ts— Content orchestration, computes counts -
packages/core/src/loaders/config-loader.ts— Config file loading -
packages/core/src/loaders/item-loader.ts— Item directory traversal + parsing -
packages/core/src/loaders/category-loader.ts— Category YAML loading -
packages/core/src/loaders/tag-loader.ts— Tag YAML loading -
packages/core/src/loaders/collection-loader.ts— Collection loading -
packages/core/src/loaders/comparison-loader.ts— Comparison loading -
packages/core/src/index.ts— Public API barrel export -
packages/core/package.json -
packages/core/tsconfig.json
1.5 Package: @ever-works/adapters
-
packages/adapters/src/types.ts— DataAdapter interface, AdapterConfig -
packages/adapters/src/git-adapter.ts— Git clone adapter -
packages/adapters/src/filesystem-adapter.ts— Local filesystem adapter -
packages/adapters/src/create-adapter.ts— Factory function -
packages/adapters/src/index.ts— Barrel export -
packages/adapters/package.json -
packages/adapters/tsconfig.json
1.6 Package: @ever-works/plugins
-
packages/plugins/src/types.ts— Plugin, PluginHooks, PluginContext interfaces -
packages/plugins/src/runner.ts— PluginRunner lifecycle execution -
packages/plugins/src/logger.ts— Scoped plugin logger -
packages/plugins/src/define-plugins.ts— Configuration helper with dependency resolution -
packages/plugins/src/index.ts— Barrel export -
packages/plugins/package.json -
packages/plugins/tsconfig.json
1.7 Build Script
-
apps/web/scripts/clone-content.ts— Prebuild script to clone data repo -
.env.example— Template environment variables
Dependencies
yaml— YAML parsingtypescript— Type checkingastro— Framework (for web app in Phase 3)@astrojs/preact— Preact integration (for Phase 2 components)preact— Interactive islandstailwindcss— CSS utility framework (for Phase 2)
Success Criteria
pnpm installworks without errorspnpm typecheckpasses for all packagespackages/corecan parse sample YAML data into typed objectspackages/adapterscan clone a git repo and read files- All TypeScript interfaces match the full template's data format