A tour of the folders

Know where things live before you change them. Most of the repository is Arc CMS itself (core); a small set of folders and files belongs to your app (the custom space).

The "Kind" column below is the same sorting npm run check:core uses: core is Arc CMS's own code, custom is your app's, and install is the settings of one installation. In an app built on a copy of Arc CMS, you change custom and install files only. Core and custom explains the rule.

The browser app

PathKindWhat it holds
src/app/CoreThe Angular app. src/app/pages/ holds the pages, found by file name (AnalogJS file-based routing), src/app/app.routes.ts the routes that need to be listed by hand, src/app/core/ the services every page uses (install settings, features, languages, the installable app) and src/app/guards/ the route guards.
src/shared/CoreBuilding blocks shared by the pages: components (such as the table and the page header), services, models, constants and the email compiler.
src/custom/CustomYour app's pages, routes, admin menu items and changes to both menus, member dashboard, landing pages per role, translations, styles, installable app settings and feature choices (src/custom/features.ts).
src/environments/InstallThe Firebase web config for each build (src/environments/environment.ts, src/environments/environment.prod.ts, and one firebase-web.<projectId>.ts per project once you fetch them) and src/environments/arc-install.ts. npm run arc:configure writes the generated ones; you edit only environment.ts and environment.prod.ts.
src/assets/, src/styles/CoreFiles bundled into the app, such as the interface translations in src/assets/i18n/, and the global styles.
src/test/CoreTest setup and the providers that page tests share.
index.htmlCoreThe page the app starts in. It loads src/custom/styles.css last, so your styles win.

The server side

PathKindWhat it holds
functions/src/CoreThe Cloud Functions, one folder per area (functions/src/users/, functions/src/search/, functions/src/pages/ and so on). functions/src/all.ts lists every function, functions/src/features/ the functions of each switchable feature, and functions/src/__tests__/ their tests.
functions/src/custom/CustomYour app's own functions and triggers, the callables the deploy checks, and the collections your app makes searchable.
functions/scripts/CoreHelpers the deploy runs: publishing the generated pages and checking that callables are reachable.
firestore.rules, storage.rules, firestore.indexes.jsonCoreArc CMS's security rules and database indexes.
firestore.app.rules, storage.app.rules, firestore.app.indexes.jsonCustomYour app's rules and indexes. They are optional: create them when your app has data of its own. Every deploy combines them with the core files (see Set security rules and indexes).
firebase.jsonCoreThe Firebase CLI config: the arccms functions codebase, the rules and index files, and the hosting settings.

The public site

PathKindWhat it holds
public/CoreFiles served on the site as they are: Arc CMS's default website in public/_site/ (content templates, sample static pages, the sample header and footer, translations), including the placeholder home page, and assets. A website puts its own home page, templates, pages, header and footer in src/custom/site/ instead, which replace these; npm run check:core counts a change here as a core change. See Design templates.

Tooling, tests and docs

PathKindWhat it holds
scripts/CoreThe command-line tools behind the npm scripts: the guided deploy, arc:configure, the rules build, check:core, the docs tools, and a helper vite.config.ts uses to build with less memory. See npm scripts. Also scripts/arc-admin-script.mjs, which your own scripts use to reach Firebase.
custom/CustomYour app's command-line scripts, the data they import, and design files. Not bundled into the site. See Run scripts and keep data.
tests/rules/CoreTests of the combined security rules, run with npm run test:rules.
tests/rules/custom/CustomYour app's own rules tests.
docs/CoreThis developer documentation.
docs/custom/CustomYour app's own docs.
.github/CustomYour app's CI workflows. Arc CMS ships none. See Deploy from CI.
package.json, functions/package.jsonCore, reviewedThe dependency lists and npm scripts. An app may add dependencies; npm run check:core lists the change for a look but allows it.
vite.config.ts, angular.json, tsconfig.json, vitest.config.tsCoreBuild and test configuration.

Files you will not find in the repository

Some files are made per checkout and are not committed: