Live demo

Lumea is a clinic built from content, not a screenshot.

Treatments, prices, staff, journal, bookings and the homepage layout all live in ForgeCMS. Visit the public site, then sign in and change the content that produced it.

What to explore

Everything listed here is running in the live demo.

Editor

  • Edit and publish content, drafts stay privateAdmin → Treatments
  • Upload and reuse mediaAdmin → Media
  • Role-aware admin with a custom navigationSign in as Admin, then Front desk
  • Write the same notice in Spanish and EnglishAdmin → Content → Notices
  • See site trafficExperimentalAdmin → Analytics

Developer

  • Code-first schemaserver/api/collections.ts
  • Local API composition and access controlroutes/api/site/*
  • Typed Angular client and package adminapp.routes.ts, pages/admin
  • Uploads, and reviewed migrations / recoverymigrations.ts, docs/BACKUP-RESTORE.md
  • Analytics integrationExperimentalserver/analytics, app.config.ts
  • Agent Kit can inspect a project like this (development tooling, not in the demo runtime)Experimentalscripts/agent-dogfood.test.mjs

See it as an editor

Publish something and watch it move.

  1. Look at the clinic site first

    Every word, price, image and opening hour on it is content, not code. The home page itself is a list of blocks an editor arranged.

  2. Sign in and browse the content

    Open Treatments, Team and Journal. Each is a collection with its own fields, drafts and relations. The hosted demo keeps these read-only so it stays intact for everyone.

  3. Switch the site between EN and ES

    The "From the clinic" notice at the top is localized content. Open Content, then Notices, edit it in one locale, switch the locale and edit the other, then publish: each language keeps its own text and the public site updates. Notices are the part of the hosted demo you can edit.

  4. Send yourself a booking

    Fill in the booking form on the public site, then open Bookings in the CMS. It arrives as pending, and only staff can see it.

  5. See what the hosted demo limits

    The hosted demo limits deletes, new documents, uploads and settings changes so the example stays available. Your own ForgeCMS project has none of these demo limits. Clone the demo to try uploads and every edit.

  6. Check the site traffic (experimental)

    The overview and Analytics pages show real visits from Cloudflare Analytics Engine when it is configured, or say plainly that it is not. There are never placeholder numbers.

Inspect it as an Angular developer

Follow the model into the runtime and UI.

  1. The content model is one TypeScript file

    apps/demo-aesthetics/src/server/api/collections.ts — twelve collections with drafts, hooks, row-level access rules, composite fields and one localized collection. That file is the whole schema.

  2. The server talks to the CMS with no HTTP hop

    src/server/routes/api/site/home.get.ts composes five collections into one payload through the Local API (runtime.find/create), with access control and draft rules applied.

  3. Localization uses the supported contract

    The notices collection localizes top-level text and textarea fields only. The public read passes a locale and runs as an anonymous visitor, so drafts never leak in either language.

  4. Public writes are decided by the collection, not the route

    The booking form posts as nobody. The bookings collection allows it via access.create, and a hook forces status back to pending so a crafted request cannot self-confirm.

  5. The admin is a package, not app code

    @forge-cms/admin ships the layout, sign-in session, collection list, document editor and staff accounts. The app mounts its routes, sets its own navigation and keeps only clinic-specific pages.

  6. Analytics and Agent Kit are dogfooded

    Analytics (experimental) is wired with the documented recipe. The Agent Kit is development tooling: a test points its read-only MCP at this project and checks it is detected. It is not part of the demo runtime.

  7. Run the tests to see the rules

    pnpm test:demo drives the content model through the typed Local API: who can read a booking, what a draft is invisible to, what a hook rewrites, how a notice resolves per locale.

Shared demo accounts

Use the same CMS the clinic uses.

Try the real admin. Everyone shares the database, so the hosted demo limits destructive and storage-heavy actions — you can edit and publish the localized notices and send a booking — to keep the example available for the next visitor. Your own ForgeCMS project does not have these shared-demo limits.

Admin

[email protected] / lumea-demo

Front desk (editor)

[email protected] / lumea-desk

Your next project starts with your content.

Get to know the model, explore a working project, and build a content system that belongs in your Angular application.