Includes: Everything (134 classes, 333 properties)
November 8, 2025 ยท View on GitHub
๐ Modular Development Quick Start
Your template has grown to 15,422 lines with 1,033 properties and 632 classes! Time to modularize.
Setup
1. Install Dependencies
# Install npm dependencies (includes @logseq/cli)
npm install
# Install Babashka (required for modular workflow)
# Mac:
brew install borkdude/brew/babashka
# Windows:
scoop install babashka
# Linux:
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
# Verify:
bb --version
2. Configure Graph Path
# Mac/Linux:
export LOGSEQ_GRAPH_PATH="$HOME/logseq/template-dev"
# Windows (PowerShell):
$env:LOGSEQ_GRAPH_PATH = "C:\Users\YourName\logseq\template-dev"
The modular workflow is now automatic! Just use npm run export.
New Workflow
1. Work in Logseq
(Make changes to classes and properties in your Logseq graph)
2. Export & Auto-Split
# One command does it all!
npm run export
# This automatically:
# - Exports from Logseq โ archive/pre-modular/logseq_db_Templates.edn
# - Splits into modules โ src/
# - Shows statistics and next steps
3. Review Modular Changes
# Instead of 15,422-line diff, you see:
git diff src/person/properties.edn # 15 lines changed
git diff src/event/classes.edn # 8 lines changed
# Much easier to review and understand!
4. Build Variants (Optional)
# Build specific template variants using npm scripts
npm run build:full # Everything (15K+ lines, 632 classes)
npm run build:crm # Person + Org only (~2K lines)
npm run build:research # Books + Articles (~3K lines)
# Or use Babashka directly for more options:
bb scripts/build.clj full # Full template
bb scripts/build.clj crm # CRM preset
bb scripts/build.clj research # Research preset
bb scripts/build.clj content # Creative works preset
bb scripts/build.clj events # Event management preset
5. Validate & Test
# Validate built templates
./scripts/validate.sh build/logseq_db_Templates_full.edn
./scripts/validate.sh build/logseq_db_Templates_crm.edn
# Test import in Logseq
# Settings โ Import โ EDN to DB Graph
# Select: build/logseq_db_Templates_crm.edn
6. Commit
# Commit source files (not built artifacts)
git add source/
git commit -m "feat: add Recipe class to creative-work module"
git push
Directory Structure
source/ # EDIT THESE (modular source)
โโโ base/
โ โโโ classes.edn # Thing, Agent (2 classes)
โ โโโ README.md
โโโ person/
โ โโโ classes.edn # Person, Patient (2 classes)
โ โโโ properties.edn # 36 person properties
โ โโโ README.md
โโโ organization/
โ โโโ classes.edn # Organization, NGO, GovernmentOrganization, Consortium (4 classes)
โ โโโ properties.edn # 15 org properties
โ โโโ README.md
โโโ event/
โ โโโ classes.edn # Event, PublicationEvent, Meeting, etc. (17 classes)
โ โโโ properties.edn # 6 event properties
โ โโโ README.md
โโโ creative-work/
โ โโโ classes.edn # Book, Article, Video, etc. (14 classes)
โ โโโ properties.edn # 7 creative work properties
โ โโโ README.md
โโโ place/
โ โโโ classes.edn # Place, AdministrativeArea (2 classes)
โ โโโ properties.edn # 9 place properties
โ โโโ README.md
โโโ product/
โ โโโ classes.edn # Product (1 class)
โ โโโ properties.edn # 2 product properties
โ โโโ README.md
โโโ intangible/
โ โโโ classes.edn # Rating, StructuredValue, etc. (9 classes)
โ โโโ properties.edn # 9 intangible properties
โ โโโ README.md
โโโ action/
โ โโโ classes.edn # Action (1 class)
โ โโโ properties.edn # 1 action property
โ โโโ README.md
โโโ common/
โ โโโ properties.edn # 189 shared properties across all domains
โ โโโ README.md
โโโ misc/
โ โโโ classes.edn # 82 miscellaneous classes
โ โโโ properties.edn # 59 misc properties
โ โโโ README.md
โโโ presets/
โโโ full.edn # All modules
โโโ crm.edn # CRM variant
โโโ research.edn # Research variant
โโโ content.edn # Content creation
โโโ events.edn # Event management
build/ # GENERATED (compiled artifacts)
โโโ logseq_db_Templates_full.edn
โโโ logseq_db_Templates_crm.edn
โโโ logseq_db_Templates_research.edn
โโโ ...
scripts/
โโโ split.clj # Split monolith โ modules
โโโ build.clj # Merge modules โ artifacts
โโโ export.sh / export.ps1 # Export from Logseq (auto-runs split)
โโโ validate.sh # Validate EDN
Available Presets
Full Template
bb scripts/build.clj full
# Output: build/logseq_db_Templates_full.edn
# Size: 8,931 lines, 497 KB
# Includes: Everything (134 classes, 333 properties)
CRM Template
bb scripts/build.clj crm
# Output: build/logseq_db_Templates_crm.edn
# Size: 5,386 lines, 298 KB
# Includes: Person, Organization, Contact, Base (8 classes, 240 properties)
# Use for: Customer relationship management
Research Template
bb scripts/build.clj research
# Output: build/logseq_db_Templates_research.edn
# Size: 5,713 lines, 317 KB
# Includes: Person, Organization, Books, Articles, Base (22 classes, 247 properties)
# Use for: Academic research, literature notes
Content Creation Template
bb scripts/build.clj content
# Output: build/logseq_db_Templates_content.edn
# Includes: Person, Creative Works (Video, Article, Image), Base
# Use for: Content creators, bloggers, YouTubers
Events Template
bb scripts/build.clj events
# Output: build/logseq_db_Templates_events.edn
# Includes: Person, Organization, Event, Place, Base
# Use for: Event planning, meeting management
Creating Custom Presets
Create source/presets/mypreset.edn:
{:name "My Custom Template"
:description "Exactly what I need"
:include ["person" "organization" "base" "common"]}
Build it:
bb scripts/build.clj mypreset
# Output: build/logseq_db_Templates_mypreset.edn
Editing Modules
Add a New Property
-
Edit source file:
vim source/person/properties.edn -
Add property:
:user.property/pronouns-xyz123 {:db/cardinality :db.cardinality/one :logseq.property/type :default :block/title "pronouns" :build/property-classes [:user.class/Person] :build/properties {:logseq.property/icon {:id "rainbow-flag" :type :emoji} :logseq.property/description "Person's pronouns"}} -
Rebuild:
bb scripts/build.clj full
Add a New Class
-
Edit source file:
vim source/creative-work/classes.edn -
Add class:
:user.class/Recipe-abc123 {:block/title "Recipe" :build/class-properties [:user.property/recipeIngredient :user.property/recipeInstructions :user.property/cookTime] :build/class-parent :user.class/CreativeWork :build/properties {:logseq.property/icon {:id "cooking" :type :emoji} :logseq.property/description "A recipe"}} -
Rebuild:
bb scripts/build.clj full
Benefits
Before (Monolith)
โ 15,422-line file
โ Git diffs show 500+ lines changed
โ Can't create variants
โ Merge conflicts everywhere
โ Impossible to navigate
After (Modular)
โ
50-200 line modules
โ
Git diffs show exact changes
โ
5+ template variants
โ
No merge conflicts
โ
Easy to find and edit
โ
Multiple contributors
Troubleshooting
"bb: command not found"
Linux/macOS:
# macOS:
brew install borkdude/brew/babashka
# Linux:
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
Windows:
# Install Scoop if needed
# Visit: https://scoop.sh/
# Add Clojure bucket and install Babashka
scoop bucket add scoop-clojure https://github.com/littleli/scoop-clojure
scoop install babashka -s
# Verify installation
bb --version
Note: The -s flag skips hash verification if there's a temporary hash mismatch with vcredist2022 dependency.
"source/ directory not found"
# Run the split first
bb scripts/split.clj
Build output is empty
# Check that modules exist
ls source/*/properties.edn
ls source/*/classes.edn
# Check preset configuration
cat source/presets/full.edn
Want to compare with original
# Build from modules
bb scripts/build.clj full build/rebuilt.edn
# Compare
diff logseq_db_Templates.edn build/rebuilt.edn
# Should be identical (except whitespace/ordering)
CI/CD Integration
GitHub Actions
Add to .github/workflows/build-templates.yml:
name: Build Template Variants
on:
push:
paths:
- 'source/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Babashka
run: |
curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install
chmod +x install && ./install
- name: Build all variants
run: |
bb scripts/build.clj full
bb scripts/build.clj crm
bb scripts/build.clj research
bb scripts/build.clj content
bb scripts/build.clj events
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: templates
path: build/*.edn
Commands Cheat Sheet
# Daily workflow (export auto-runs split)
./scripts/export.sh # Export from Logseq + split into modules
git diff source/ # Review changes
bb scripts/build.clj full # Build templates
./scripts/validate.sh build/* # Validate
# Build variants
bb scripts/build.clj full
bb scripts/build.clj crm
bb scripts/build.clj research
bb scripts/build.clj content
bb scripts/build.clj events
# Create custom preset
vim source/presets/mypreset.edn
bb scripts/build.clj mypreset
# Analyze structure
bb scripts/analyze.sh # Show stats
tree source/ # Browse modules
Next Steps
- โ
Export and split:
./scripts/export.sh(auto-createssource/) - โ
Review
source/directory structure - โ
Build full template:
bb scripts/build.clj full - โ Test import in Logseq
- โ
Build CRM variant:
bb scripts/build.clj crm - โ Share variants with community!
Questions? See MODULARIZATION_PLAN.md for complete details.
Issues? Open an issue on GitHub.
๐ Welcome to modular template development!