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

  1. Edit source file:

    vim source/person/properties.edn
    
  2. 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"}}
    
  3. Rebuild:

    bb scripts/build.clj full
    

Add a New Class

  1. Edit source file:

    vim source/creative-work/classes.edn
    
  2. 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"}}
    
  3. 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

  1. โœ… Export and split: ./scripts/export.sh (auto-creates source/)
  2. โœ… Review source/ directory structure
  3. โœ… Build full template: bb scripts/build.clj full
  4. โœ… Test import in Logseq
  5. โœ… Build CRM variant: bb scripts/build.clj crm
  6. โœ… Share variants with community!

Questions? See MODULARIZATION_PLAN.md for complete details.

Issues? Open an issue on GitHub.

๐ŸŽ‰ Welcome to modular template development!