If you’ve ever built the same app for web and mobile, you know the tax: two codebases, two sets of backend glue code, and one data model you keep in sync by hand. Change a field, update it in both places, miss one, ship a bug.
Underpeaks Core is an open-source, self-hosted headless CMS built to remove that tax. You define your data model once, and it gives you a backend, a content editor, a REST API — and, if you want it, a working Flutter app and Next.js app compiled from that same model. No AI involved: same model in, same code out, every time.
In this guide you’ll go from zero to a running Core instance on your own machine.
What you’ll need
- Node.js and npm
- Git
- A database: Supabase, PostgreSQL, MySQL, MongoDB or Firebase — whichever you’re most comfortable with. Have its connection details ready (host and credentials, or project URL and keys).
Step 1: Get a free license key
Core is free and open source (Apache 2.0), but it needs a license key — that’s what lets the CLI generate code for your projects.
- Sign up for a free account at underpeaks.com
- Generate a license key from your dashboard
- Keep the tab open — you’ll paste the key during setup
Step 2: Clone and install
git clone https://github.com/underpeaks/underpeaks-core.git
cd underpeaks-core
npm install
Enter fullscreen mode Exit fullscreen mode
Step 3: Start Core
npm run dev
Enter fullscreen mode Exit fullscreen mode
Open http://localhost:3000. On a fresh install, you’re sent straight to the installer.
Step 4: Run the installer
There are no environment variables to write by hand — the installer does it for you:
- Choose your database — one of the five supported options
-
Enter your connection details — the installer writes your
.envconfiguration - Connection test — confirms Core can reach your database
- Table creation — creates the system tables Core needs
- Demo content (optional) — seeds an example project so you have something to explore straight away
- Admin account — the email and password for your first user
- License key — paste the key from step 1
When it finishes, you’re redirected to sign in.
Step 5: Take the tour
Sign in with your admin account and you’ll land in the console:
Section What it does Shared Models Define your data models — the schemas everything else is built on Pages Build admin and client-facing pages from your models Menu Control your sidebar navigation Navigator Map how pages connect to each other Theme Colours and branding Storage Upload and manage media Users Manage who can access your instance Settings Project name, license key, SMTP, API keysA good first exercise: create a model under Shared Models (say, Product with a title, price and image), then attach it to a page under Pages. The admin views for it appear instantly — no extra configuration.
Step 6: Generate your apps
Once a model is attached to a page, install the CLI and generate:
npm install -g underpeaks-nxf
nxf login
nxf generate flutter # or: nxf generate nextjs
Enter fullscreen mode Exit fullscreen mode
nxf login opens your browser to connect the CLI to your account; after that, generate produces a real project you own — models, API client and auth flows included.
Troubleshooting
- Installer can’t connect: double-check your connection details, and make sure the database is reachable from where you’re running Core (cloud databases often need your IP allowed).
-
Something looks off after setup: check that your
.env.localvalues match your database exactly.
What’s next
If you try it and something breaks or confuses you, I’d genuinely like to know — open an issue on GitHub or drop a comment below. Underpeaks is built by one developer, and feedback from real setups is the most useful thing I can get.