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
Step 3: Start Core
npm run dev
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 keys |
A 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
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.
Top comments (0)