CRM
Deals, contacts, pipelines and sequences. The full revenue stack, AI-assisted out of the box.
Arafuse ships the apps every company needs — CRM, Bookkeeper, Inbox, Projects — on a platform where every screen, field, and workflow is plain code. Adopt what fits. Fork what doesn't. Ship what nobody else has.
export const Pipeline = view(Deal, { layout: "table", columns: ["name", "company", "stage", "value"], groupBy: "stage", canEdit: role("sales"), })
Dozens of production-ready modules share one data model and one permission system. Switch them on in a click — no integration project, no glue code, no data silos.
Deals, contacts, pipelines and sequences. The full revenue stack, AI-assisted out of the box.
Invoicing, ledgers, payouts and reconciliation. Close the month with a fully auditable trail.
A shared team inbox tied to every record. Email, chat and tickets in one threaded view.
Boards, sprints, and timelines that read and write the same records your other apps do.
Helpdesk, ticketing and knowledge base. Customer context pulled live from the CRM.
Analytics, HR, Inventory, Field Ops, Procurement… and anything you write yourself.
Browse the catalogWe retired the drag-and-drop config builder for something more honest: an app is a few typed files. Define your data, compose your views, wire your logic — in the editor you already use, under the version control you already trust.
Entities, relations and validation in TypeScript. Migrations generate themselves; your IDE catches mistakes before deploy.
Tables, kanban, forms and dashboards are functions over your data — extend a built-in screen or write a brand-new one.
Review in pull requests, branch per environment, roll back with a revert. No mystery config drift in a database.
// Define the record once — UI, API & DB follow. export const Deal = entity({ name: field.text().required(), company: field.ref(Company), stage: field.enum("new", "qualified", "won"), value: field.money("USD"), owner: field.user(), }) export const onWon = workflow(Deal) .when(d => d.stage === "won") .then(createInvoice, notify("#sales"))
Every app — ours or yours — inherits the same infrastructure. Build features, not plumbing.
One schema across every app. No exports, no sync jobs, no duplicate customer.
Role, row and field-level permissions enforced everywhere by default.
Event-driven automations in code — triggers, schedules, and approvals.
Summaries, drafting and retrieval scoped to a record, with your own keys.
Typed connectors and webhooks, or call any API straight from a workflow.
WebSockets, event buses and heavy pipelines — not just CRUD forms.
Every change versioned and attributable. SOC 2-ready trails out of the box.
Run it on our cloud or your own infra with Docker. Same code, your data.
The components that build our apps are yours to compose and theme.
The packaged apps of a business suite, with the openness of a real development platform — without the trade-off you usually have to make.
Scaffold an app, run it locally with hot reload, and ship with one command. Everything is open source and typed end to end.
Self-host the open core forever. Move to the cloud when you'd rather not.
The open-source platform and every app, self-hosted on your own infrastructure.
Managed cloud, automatic upgrades, and the tooling teams ship on every day.
For regulated teams and bespoke deployments at scale, with a name on speed-dial.
Turn on the apps you need today. Build the ones nobody else has tomorrow. All on one stack, all in code.