Flutter 및 Next.js 앱을 생성하는 헤드리스 CMS를 자가 호스팅하는 방법 (5분 이내)

작성자

카테고리:

← 피드로
DEV Community · UnderPeaks · 2026-10-01 개발(SW)
Cover image for How to Self-Host a Headless CMS That Generates Flutter and Next.js Apps (in 5 Minutes)

UnderPeaks

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.

  1. Sign up for a free account at underpeaks.com
  2. Generate a license key from your dashboard
  3. 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:

  1. Choose your database — one of the five supported options
  2. Enter your connection details — the installer writes your .env configuration
  3. Connection test — confirms Core can reach your database
  4. Table creation — creates the system tables Core needs
  5. Demo content (optional) — seeds an example project so you have something to explore straight away
  6. Admin account — the email and password for your first user
  7. 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

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.local values match your database exactly.

What’s next

  • Full code generation guide: docs
  • Source code: GitHub

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.

원문에서 계속 ↗