Intacct
Next.js + Supabase enterprise finance platform.
Overview
Intacct is a Next.js + Supabase enterprise finance platform with role-based workspaces, dense accountant-friendly UX, and a service-layer architecture. It covers AP, AR, GL, cash, reporting, admin, and a shared platform shell — built for people who live inside the product, not visit it.
Problem
Finance teams juggle multiple workspaces, fragile exports, and tooling that was never designed for the way they actually work. Most internal finance UIs optimize for first impressions instead of the tenth thousand interaction. Accountants do not want playful — they want dense, predictable, fast.
Product idea
One workspace shell with role-aware modules sitting on a shared service layer. Saved views, audit logs, and notifications are first-class primitives, not bolted on. Every module looks the same from the outside and behaves consistently from the inside.
Architecture
- App shell — Next.js App Router, shared chrome, role-aware navigation, persisted shell preferences per user.
- Service layer — typed services per module that own data fetching, mutations, and audit metadata.
- Supabase — Postgres + auth + RLS; runtime datasets pulled live for views and reporting.
- RBAC — org/user/role model; policies enforced at both the route and the action level.
- Cross-cutting services — saved views, notifications, audit logs, report metadata persistence.
Workspace model
- AP — accounts payable surfaces and approvals
- AR — accounts receivable, including receivables APIs
- GL — general ledger
- Cash — cash management and reconciliation
- Reporting — saved report metadata, runtime datasets
- Admin — users, roles, org management
- Platform — shared shell, search, settings, audit log
Data / service layer
Every module exposes a typed service that returns DTOs the UI can rely on. Mutations carry audit metadata down through the same path as the data fetch, so logs and notifications are emitted consistently regardless of which screen triggered them.
Supabase-backed features
- Organization / username / password login flows
- Admin users UI for managing org membership and roles
- Saved views with per-user persistence
- Shell preference persistence (layout, density, defaults)
- Report metadata persistence
- Notification summary APIs
- Audit log APIs
- Receivables APIs and Supabase-backed runtime datasets
Enterprise UX decisions
- Density over whitespace — finance lives in tables
- Keyboard-first navigation across every workspace
- Saved views as a first-class primitive, not a hidden setting
- Audit and notification surface always reachable from the shell
- No surprises in destructive actions — every mutation is logged
What is live vs still in cutover
Honest status: the shell, RBAC, saved views, audit logs, notifications, admin users UI, receivables APIs, and report metadata are live. Some module surfaces are still being moved into the shared service layer in later cutover batches. The next batches focus on cross-module reporting and bulk import.
Future improvements
- Cross-module reporting and saved cross-views
- Approval workflows surfaced through the notification layer
- Bulk import and reconciliation flows
- External integrations behind a thin API gateway
- Accessibility audit pass across dense table surfaces