Install
Get the code into a repository of your own, install two sets of dependencies, and you are ready to configure a Firebase project.
Get the code
Build a website or an app
Your site or app lives in its own repository and keeps Arc CMS as a remote named upstream, so it can pull Arc CMS updates and so npm run check:core has something to compare with.
-
Create an empty repository for your site or app on your git host.
-
Clone Arc CMS under your project's name and turn the Arc CMS remote into
upstream:git clone https://github.com/quadralyst/arccms.git my-app cd my-app git remote rename origin upstream -
Point
originat your own repository and push:git remote add origin YOUR_REPOSITORY_URL git push -u origin main -
Confirm the copy is clean:
npm run check:coreIt compares your copy with the Arc CMS branch you copied (
upstream/mainorupstream/dev) and reports "No Arc CMS core file changed". Run it after the dependencies are installed (below) and before every commit.
Already have a copy without the remote? Add it once:
git remote add upstream https://github.com/quadralyst/arccms.git
git fetch upstream
What belongs in your copy and what does not is on Core and custom; pulling updates is on Upgrade Arc CMS.
Work on Arc CMS itself
To change Arc CMS for everyone, clone it directly. In this checkout npm run check:core sees the Arc CMS repository and has nothing to check.
git clone https://github.com/quadralyst/arccms.git
cd arccms
Install the dependencies
The site and the Cloud Functions each have their own dependencies. From the repository root:
npm install
npm install --prefix functions
There is no install hook that does the second one for you. The root .npmrc sets legacy-peer-deps, so peer dependency warnings do not stop the install.
Before every functions build, a prebuild step runs scripts/arc-features.mjs, which writes two files in functions/src/ from src/custom/features.ts. They are ignored by git and brought up to date on every build, so you never edit or commit them.
Check it worked
Run the whole test suite once. It does not need your Firebase project:
npm run test -- --run
Without --run, npm run test keeps watching for changes; press q to leave it.
If it stops with "Node 22.18 or later is needed", your Node is too old (see Requirements).
Next
Configure a project: point your copy at your Firebase project. For a map of what you just downloaded, see A tour of the folders.