What is Arc CMS
Arc CMS is an open-source content management system that runs on your own Firebase project. You use it to build a website, or you copy it and build your own app on top of it.
In plain words
Arc CMS gives you an admin area where you define content types, write and publish content, design how it looks with HTML templates, collect sign-ups and send email. Everything it stores lives in your Firebase project: Firestore for data, Firebase Authentication for accounts, Cloud Storage for files and Cloud Functions for the work that has to happen on a server.
When you publish, Cloud Functions write the page as a static HTML file to Firebase Hosting. Visitors get plain, fast pages; the admin area and the member area are an Angular app served from the same site.
What you get
Most capabilities are always on. Eleven switchable features can be turned on or off per app in src/custom/features.ts: ten are on unless you turn them off, and the installable app (pwa) is off until you turn it on (see Feature ids). The last column says which switch a capability belongs to.
| Capability | What it does | Switch |
|---|---|---|
| Content | Your own content types with their own fields, drafts, a publish queue and bulk import, plus ready-made About, Contact and policy pages. | content |
| Templates | Plain HTML and CSS files that decide how lists and single items look. | Part of content |
| Media | A media library for images, stored at several sizes and converted to WebP on upload. | Always on |
| Authors and tags | Author profiles and tags for grouping content. | Part of content |
| Search | Site search for visitors and search inside the admin area. | search |
| SEO and discoverability | Meta tags, sitemap, robots file, RSS feed and llms.txt, written for you. | seo |
| Languages | Content in more than one language, and an admin area in more than one language. | Always on |
| Signup forms | Waitlists and signup forms, with a verification code and a welcome email. | forms (needs audience) |
| Contact form | A contact form on your site, with a Messages inbox in the admin. | contact |
| Audience | Contacts, lists, tags and fields for everyone who signed up. | audience |
| App audience | The users of an app as a live audience you can email. | Part of audience |
| Email engine | Sending through Gmail, SMTP or Resend, with logs and a shared brand kit. | Always on |
| Email marketing | Broadcasts, drip series and announcements to lists and audiences. | email-marketing (needs audience) |
| Automations | Rules that send an email, add a notification or change list membership when something happens. | Always on |
| SMS | Text messages, such as sign-in codes. | sms |
| Sign-in methods | Email and password, Google and phone sign-in. | Always on; phone sign-in is part of sms |
| Payments | Checkout, plans and payment events through Dodo Payments. | payments |
| Premium entitlements | Premium access and credits that follow from payments. | Part of payments |
| Users and roles | Accounts, roles and who may do what. | Always on |
| Installable app (PWA) | An app people can install on their phone. | pwa (off by default) |
| Feedback button | A button that sends feedback with a screenshot to the admins. | Core, with its own switch on the Feedback page (off by default) |
| Notifications | Notifications inside the admin and member areas. | Always on |
| Analytics | A Google Analytics connection and dashboard. | Always on |
| Banners | A site-wide message banner and a site usage banner. | Always on |
| Data import and export | Exporting and importing your data. | data |
The full list, with what each feature needs, is in All features.
What it is built with
| Layer | Technology |
|---|---|
| Framework | AnalogJS 2 (full-stack Angular) on Angular 21 |
| Interface | Angular Material and Bootstrap 5 |
| State | NgRx Signals |
| Editor | TipTap 3 |
| Build and dev server | Vite 7 |
| Backend | Firebase: Firestore, Authentication, Cloud Storage, Cloud Functions (Node 22), Hosting |
| Tests | Vitest |
There is no server of your own to run. The build ships the app as static files. Your home page and content are published as static pages, and all server work happens in Cloud Functions. See Architecture for how the parts fit.
Who it is for
- Developers who know web development and want a content site, or an app with sign-in, email and payments, without building those parts again.
- Teams that run the site: editors and admins who write content, manage sign-ups and send email from the admin area, without touching code.
What it is not
- Not a hosted service. You run it on your own Firebase project and pay Google for what it uses.
- Not a drag-and-drop page builder. Pages are shaped by HTML templates that a developer writes once.
- Not for another backend. It is built on Firebase and needs a Firebase project; it does not run on another database or host.
- Not something you edit freely in an app. An app built on a copy keeps its own code in the custom space and leaves the Arc CMS files alone, so updates merge cleanly (see Core and custom).
Next
Decide what you are building: A website or an app.