MADORIMADORI

Getting Started with MADORI

Get a new MADORI project running in under two minutes.

Prerequisites

  • Node.js 22+
  • pnpm 11.22.0 — enable with corepack enable pnpm
  • curl and tar — required by the scaffolder

Create a new project

pnpm dlx create-madori-app@latest my-site

This scaffolds a complete MADORI project into ./my-site.

Install and run

cd my-site
pnpm install
pnpm dev

Your site is now running at http://localhost:3000.

Log in to the Control Panel

Visit http://localhost:3000/cp and sign in with:

⚠️ Store the generated password securely and change it after your first login.

What's in your project

my-site/
├── content/              # Your content (Markdown + YAML)
│   └── collections/      # Collection entries
├── resources/            # Schema definitions
│   ├── blueprints/       # Field schemas
│   ├── fieldsets/        # Reusable field groups
│   └── roles/            # Permission roles
├── public/assets/        # Uploaded files
├── users/                # User accounts
├── src/                  # Application source
└── madori.config.ts      # Project configuration

Create your first collection

  1. Go to Control Panel → Blueprints → Create
  2. Choose "Collection" type, give it a handle (e.g. blog)
  3. Add fields: title (text), slug (slug), content (tiptap)
  4. Go to Collections → Create, link it to your blueprint
  5. Start creating entries

Create your first entry

  1. Navigate to your collection in the Control Panel
  2. Click Create Entry
  3. Fill in the fields and save
  4. Your content is stored as a Markdown file in content/collections/

Query content with GraphQL

MADORI auto-generates a GraphQL schema from your blueprints. Visit http://localhost:3000/api/graphql to explore it.

Example query:

{
  blogs {
    title
    slug
    content
  }
}

Deploy

MADORI requires one writable Node.js process with persistent storage. No database is required; ephemeral serverless filesystems do not support the writable CMS.

  • Read-only frontend — bundle published content or integrate a remote content API; disable the local CP and write-dependent features
  • VPS — pnpm build && pnpm start behind nginx (full CP support)
  • Managed Node.js service — configure a persistent volume and one writable instance

For CP functionality (content editing, asset uploads), preserve all writable data paths across deploys. Follow the deployment guide for configuration and storage requirements.

Next steps

  • Explore the source on GitHub
  • Create custom blueprints with the visual editor
  • Add taxonomies to categorize content
  • Build page templates with replicator fields and fieldsets