Project Architecture & Monorepo Structure
1. High-Level Layout
| Path | Type | Purpose | Import Alias |
|---|---|---|---|
apps/nextblock | Application | Primary Prod App (Admin + Public). | — |
apps/create-nextblock | Application | CLI Scaffolder. | — |
libs/ui | Library | Shared UI components. | @nextblock-cms/ui |
libs/utils | Library | Core utilities. | @nextblock-cms/utils |
libs/db | Library | Database layer (Supabase). | @nextblock-cms/db |
libs/editor | Library | Tiptap editor package. | @nextblock-cms/editor |
2. Core Rules
Open-Core Model
- •Core: Everything in this repo is Open Source (MIT), except
libs/ecommerce(if present). - •Premium: Private extensions live in
libs/ecommerce.
Code Placement Decisions
- •New UI Component: Go to
libs/ui. - •New Helper Function: Go to
libs/utils. - •New Database Query: Go to
libs/db. - •New Page/Route: Go to
apps/nextblock/app. - •CLI Logic: Go to
apps/create-nextblock.
3. Dependency Graph Rules
- •
libs/*can depend on otherlibs/*(e.g.,uidepends onutils). - •
apps/*depend onlibs/*. - •Crucial:
libs/uiMUST NOT depend onapps/nextblock. This creates a circular dependency and breaks the build.
4. Template Syncing
- •
apps/create-nextblock/templates/nextblock-templateis generated code. - •Do not edit it directly.
- •Edit
apps/nextblockinstead, then runnpm run sync:create-nextblockto update the template.
5. Architectural Reference (NotebookLM)
For questions about the intent behind the architecture, monetization strategy, or future roadmap that aren't clear from the directory structure itself:
Use the specialized notebook:
bash
python scripts/run.py ask_question.py --notebook-id nextblock-cms-roadmap-and-mone --question "Why did we choose this architecture?"
This notebook ("NextBlock CMS: Roadmap and Monetization Strategy") contains the high-level vision documents.