Build a custom app

Build your own product on a copy of the Arc CMS repository. Sign-in, users, email, an admin area and more are there on day one, and your code lives in a separate custom space so Arc CMS updates merge cleanly.

Is this the right choice

You wantDo this
A new product with members, its own data and pages, and an admin area, on FirebaseBuild on a copy of Arc CMS (this path)
A content website, with no code of your own beyond templatesBuild a website
Arc CMS next to an app you already have in its own Firebase projectShare a Firebase project, then Connect your app's users
To change how an Arc CMS feature itself worksBuild it in Arc CMS as a general feature, then pull it (Keep core generic)

See A website or an app for a longer comparison.

What you get without writing code

AreaWhat is thereRead
Sign-inEmail, Google and phone sign-in, sign-up, and the first-admin setupSign-in methods
Users and rolesUser records, roles, custom claims, account deletionUsers and roles
EmailA provider setup, brand kit, composer, transactional emails, logs and unsubscribeEmail engine
AudienceContacts, lists, tags, broadcasts and drip sequencesAudience
PaymentsProducts, checkout, transactions and premium entitlementsPayments
Installable appManifest, icons, service worker and install promptInstallable app (PWA)
ContentContent types, templates, media, search and SEOContent
Everyday toolsFeedback button, notifications, banners, analytics, data import and exportAll features

You turn off what your app does not need in one file (Choose your app's features).

The one rule: never edit core

Every file Arc CMS ships is core. Your app's code goes only in the custom space: src/custom/, functions/src/custom/, your own rules and index files, custom/ at the root for scripts and data, and your CI workflows in .github/ (Use the custom space). Arc CMS ships those files once, empty, and never changes them again, so pulling an update never conflicts with your work.

If your app needs something core does not offer, it becomes a general feature or a new plug point in Arc CMS, and your app pulls it. Before every commit, run:

npm run check:core

It lists every core file you changed and fails when there is one. See Core and custom for the reasoning.

The steps, in order

Start with a working copy: Install, Configure a project and Create the first admin. Then:

  1. Use the custom space: learn which file does what.

  2. Choose your app's features: turn off what the app does not need.

  3. Add pages and routes: the app's own screens.

  4. Change the admin menu: links to your admin screens, and changes to Arc CMS's items.

  5. Build the member area: where signed-in people land and what they see.

  6. Write your own Cloud Functions: callables and triggers.

  7. Set security rules and indexes: protect the app's data.

  8. Follow the account contract: where each person's data lives.

  9. Set up sign-in: choose how people sign in.

  10. Add payments and premium features: charge for the app.

  11. Make it installable: name, colors and icon.

  12. Connect your app's users: email the app's users from Arc CMS.

  13. Share a Firebase project: only when Arc CMS lives next to another app.

  14. Keep core untouched: check your work and pull Arc CMS updates.