Skip to content

Quickstart

Build your own Firebase admin panel and headless CMS with full control over your infrastructure. FireCMS self-hosted versions let you deploy a powerful React-based back-office on your own servers, with complete data ownership.

Feature Community (Free) PRO
Full CRUD UI ✅ ✅
Custom React fields ✅ ✅
TypeScript support ✅ ✅
Unlimited users ✅ ✅
Entity history and audit trail ❌ ✅
Visual schema editor and data inference ❌ ✅
Import (CSV, JSON, Excel) and export (CSV, JSON) ❌ ✅
User and role management UI ❌ ✅
AI autofill (data enhancement) ❌ ✅
Priority support ❌ ✅
Price Free, MIT license €99 ($119) / month for the first project, €49 ($59) for each additional, plus VAT

PRO is free for 30 days in production, no card needed. See Licensing for how projects are counted and what pauses without a license.

Both versions are built on React, connect to Firebase/Firestore, and give you a production-ready admin panel in minutes.

To create a new project using the CLI, you can run the following command:

npx create-firecms-app

or:

yarn create firecms-app

This will create a new FireCMS, Community or PRO, project in the selected folder. A FireCMS project is a React application that you can customize to fit your needs. The initial project will have a basic structure with a few collections and a couple of custom views.

To run the project, you run the following commands:

cd my-cms
yarn
yarn dev

or

cd my-cms
npm install
npm run dev

This will install the dependencies and start the development server.

FireCMS uses React Router to handle the routing of the application. You can change the base URL of FireCMS by modifying the basename property of the BrowserRouter component in the src/main.tsx file. For example, if you want to change the base URL to /admin, you can do it like this:

import React from "react"
import ReactDOM from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import "./index.css"
import App from "./App";
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<React.StrictMode>
<BrowserRouter basename={"/admin"}>
<App/>
</BrowserRouter>
</React.StrictMode>
)