02 / 05 · crm · vanilla_js

A real-time, multi-user CRM. No backend.

A single-page web app the whole team logs into and edits at once. Firestore handles persistence and live sync over WebSockets. Google Identity handles auth, domain-locked to @axiobit.com. Netlify hosts the file. No server, no framework, no DevOps — redeploy is drag-and-drop.

What it is

A real-time, multi-user CRM built as a single-page web app — no framework, just vanilla HTML, CSS, and JavaScript. The data layer runs on Firebase Firestore, which gives it live cross-user sync via WebSocket listeners: when anyone adds or updates a lead, every other logged-in user sees the change instantly, no refresh.

Authentication is Google Identity Services OAuth, domain-restricted to @axiobit.com — only the team can log in, no password management to do.

The frontend is fully responsive: a desktop layout with a sidebar and data table, and a separate mobile layout with a bottom nav, card-based list view, and a FAB for adding leads.

It's hosted on Netlify as static file hosting — no server to manage, just one HTML file served over CDN. The only operational overhead is dragging a file to redeploy.

Why it matters

Most small teams end up paying a CRM tax — seat licenses, admin time, field customisations, API limits — for functionality they don't use. The bet here was: if the team is small and the pipeline fits in a browser tab, a single HTML file backed by Firestore is a better CRM than most CRMs. It's live, it's shared, it costs nothing to run, and there's nothing to break that we can't fix ourselves.

Stack
Firestore Google Identity (GSI) Vanilla JS Netlify Single HTML file WebSocket live sync Responsive (desktop + mobile) No backend · no framework · no DevOps