app
Adom ERP Suite
UnreviewedFull-stack enterprise resource planning for tech startups — Finance, SCM, HCM, CRM, Manufacturing, Reporting + startup-specific equity, SaaS metrics, burn rate, OKRs
app / adom-erp
Adom ERP Suite — Complete Feature Tree
95 database tables · 340+ API endpoints · 94 routes (87 web + 7 portal) · 20 detail pages · 3 apps
Authentication & Onboarding
Login (/login)
- Adom-branded SSO login page
- Keycloak OIDC redirect ("Continue with SSO" button)
- Dark theme with inline Adom logo
- OIDC callback handler (
/api/auth/callback) — code exchange, cookie-based session - Auth middleware — redirects unauthenticated requests to
/login
Onboarding Wizard (first-run flow)
- Step 1 — Company Setup (
/setup) — Company name, industry, address, timezone, currency - Step 2 — Chart of Accounts (
/accounts) — "Use Standard Template" (US GAAP) or "Import from CSV" - Step 3 — Invite Team (
/team) — Email invites with role assignment (Admin/Controller/Accountant/Clerk/Viewer) - Step 4 — Complete (
/complete) — Animated checkmark, "Go to Dashboard" button - 4-step progress bar (teal completed, border upcoming)
App Shell (all authenticated pages)
Global Navigation Bar
- Inline Adom SVG logo (white on dark, black on light) — links to dashboard
- Dynamic breadcrumb trail (set per-page via
BreadcrumbProvider) - Search trigger button (
⌘Kshortcut label) - Notification bell with unread count badge + dropdown panel (mark read, mark all read, view all)
- Theme toggle (dark/light with sun/moon SVG icons)
- User avatar menu with dropdown
Module Sidebar
- 9 modules: Finance, Supply Chain, Manufacturing, HCM, CRM, Startup, Reports, Admin
- Monochrome SVG icons per module
- Expandable sub-navigation for active module
- Active state: teal accent color + accent-muted background + left border
Command Palette (⌘K)
- Modal overlay with search input
- 8 navigation items: Finance, Supply Chain, HCM, CRM, Manufacturing
- 3 quick actions: New Journal Entry, New Purchase Order, New Sales Invoice
- Keyboard navigation (arrow keys + Enter)
- Escape to close
- Category grouping (Navigate / Quick Actions)
Dashboard (/dashboard)
- KPI Cards (4-column grid)
- Revenue (MTD) — JetBrains Mono
$0 - Outstanding AP
- Outstanding AR
- Cash Balance
- Revenue (MTD) — JetBrains Mono
- Pending Actions section — shows onboarding prompt when empty
Finance Module
General Ledger (/finance/gl)
- Table: Entry #, Date, Description, Debit, Credit, Status, Actions
- 5 mock entries (JE-00001 through JE-00005)
- Status badges: Draft (gray), Pending (yellow), Approved (teal), Posted (green), Voided (red)
- Filters: status dropdown, date range pickers, search
- "New Entry" teal button
- "View" button per row
Journal Entry Detail (/finance/gl/[id])
- Header: entry number, status badge, date, description
- Lines table: Line #, Account, Description, Debit, Credit
- Footer: Total Debit / Total Credit (bold JetBrains Mono)
- Action buttons by status: Submit (draft), Approve (pending), Post (approved), Void (draft/pending)
Chart of Accounts (/finance/accounts)
- Tree view with expand/collapse chevrons
- Columns: Code (mono), Name, Type (color-coded badge), Postable, Balance
- Account type colors: asset=blue, liability=orange, equity=purple, revenue=green, expense=red
- 12 mock accounts (1000 Cash through 6200 Utilities)
Vendors (/finance/ap/vendors)
- Table: Vendor #, Name, Payment Terms, Email, Phone, Status
- 5 mock vendors (Office Depot, AWS, WeWork, Gusto Payroll, Adobe)
- Search + Active/Inactive toggle filter
- "New Vendor" button, pagination
Vendor Detail (/finance/ap/vendors/[id])
- Info grid: Legal Name, Tax ID (masked), Payment Terms, Email, Phone, Website
- Address block
- Edit button, Deactivate button (with confirm dialog)
Purchase Invoices (/finance/ap/invoices)
- Table: Invoice #, Vendor, Invoice Date, Due Date, Total, Amount Due, Status
- 4 mock invoices
- Filters: status, vendor, date range
- "New Invoice" button
Purchase Invoice Detail (/finance/ap/invoices/[id])
- Header: invoice number, vendor, dates, status
- Lines table: #, Description, GL Account, Qty, Unit Price, Tax, Line Total
- Footer: Subtotal, Tax Total, Grand Total
- Actions: Submit, Approve, Void (with confirm)
Customers (/finance/ar/customers)
- Table: Customer #, Name, Payment Terms, Credit Limit, Email, Status
- 5 mock customers (Acme Corp, TechStart Inc, Global Solutions, Bright Ideas, NextGen AI)
- Search + status filter
Customer Detail (/finance/ar/customers/[id])
- Info grid + credit limit display
- Edit button, Deactivate button (with confirm)
Sales Invoices (/finance/ar/invoices)
- Table: Invoice #, Customer, Invoice Date, Due Date, Total, Paid, Due, Status
- 4 mock invoices
- "Record Payment" inline form with amount input
Sales Invoice Detail (/finance/ar/invoices/[id])
- Payment progress bar (amountPaid / total)
- Actions: Submit, Approve, Void, Apply Payment
Fixed Assets (/finance/assets)
- Placeholder page — asset register, depreciation schedules
Budgets (/finance/budgets)
- Placeholder page — budget planning, variance analysis
Supply Chain Module
Items (/supply-chain/items)
- Table: SKU (mono), Name, Category, UOM, Std Cost, Stock On Hand, Status
- 8 mock items (enclosures, PCBs, power supplies, cables, hardware, displays, ICs)
- Search + category/status filters
- "New Item" button
Item Detail (/supply-chain/items/[id])
- Info grid: SKU, Name, Category, UOM, Weight, Dimensions, Barcode
- Costing section (standard cost, last purchase price)
- Replenishment settings (reorder point, qty, safety stock, lead time)
- Stock levels table by location
- Deactivate action
Purchase Orders (/supply-chain/purchase-orders)
- Table: PO #, Vendor, Order Date, Expected Date, Total, Status
- 4 mock POs with statuses (draft, approved, sent, partially received)
- Filters: search, status
Purchase Order Detail (/supply-chain/purchase-orders/[id])
- Header: vendor, dates, ship-to location
- Lines table: Item, Qty, Unit Price, Tax, Total, Received
- Totals footer (Subtotal, Tax, Shipping, Grand Total)
- Actions by status: Submit, Approve, Send, Close, Cancel
Inventory (/supply-chain/inventory)
- 3 KPI Cards: Total Items, Total Inventory Value, Below Reorder Point (warning)
- Stock table: SKU, Item, Location, On Hand, Reserved, Available, On Order
- Adjust Inventory inline form (item, location, qty, reason)
- Transfer Inventory inline form (item, from/to location, qty)
- 6 mock stock records across 2 warehouses
Sales Orders (/supply-chain/sales-orders)
- Table: SO #, Customer, Order Date, Requested Delivery, Total, Status
- 4 mock SOs
- Actions: Confirm (reserves inventory), Process, Cancel (releases inventory), Close
Sales Order Detail (/supply-chain/sales-orders/[id])
- Lines: Item, Qty, Unit Price, Discount%, Tax, Total, Shipped
- Action buttons by status
Shipments (/supply-chain/shipments)
- Table: Shipment #, SO #, Carrier, Status, Tracking, Shipped Date
- 3 mock shipments (FedEx, UPS, DHL) with tracking numbers
- Actions: Pick, Pack, Ship, Deliver
Shipment Detail (/supply-chain/shipments/[id])
- Tracking info section
- Lines: Item, Qty, From Location
- Action buttons by status
HCM & Payroll Module
Employee Directory (/hcm/employees)
- Table: Emp # (mono), Name, Department, Job Title, Type, Status
- 8 mock employees (Sarah Chen, Marcus Johnson, Emily Rodriguez, etc.)
- Search + department dropdown filter
- "Add Employee" button
- Status badges: Active (green), On Leave (yellow)
Employee Detail (/hcm/employees/[id])
- 4-card info grid: Personal Details, Employment Details, Compensation (salary in mono), Emergency Contact
- Direct reports table
- Edit button, Terminate button
Leave Management (/hcm/leave)
- Pending Requests table (for managers): Employee, Type, Dates, Hours, Status
- Approve/Reject buttons per request
- My Leave Balances cards:
- Annual: 160h entitled / 32h used / 128h available
- Sick: 64h entitled / 8h used / 56h available
- Personal: 24h entitled / 0h used / 24h available
- Visual progress bars (teal fill, warning color above 80%)
- "Request Leave" button
Payroll (/hcm/payroll)
- Table: Run # (mono), Period, Pay Date, Employees, Gross, Net, Status
- 3 mock payroll runs (PR-00001 through PR-00003)
- "New Payroll Run" button
Payroll Run Detail (/hcm/payroll/[id])
- 4 KPI Cards: Total Gross, Total Deductions, Total Net, Employer Cost
- Payslips table: Employee, Gross, Deductions, Net, Employer Cost
- Totals footer row
- Actions by status: Calculate (draft), Approve (calculated), Process (approved), Void
Benefits (/hcm/benefits)
- Tab switcher: Plans / Enrollment Summary
- Plans table: Code, Name, Type (badge), Employee Cost, Employer Cost, Status
- 4 mock plans: HEALTH-PPO, DENTAL-BASIC, VISION-STD, 401K-MATCH
- Enrollment Summary cards: plan name, enrolled count, total monthly cost
CRM Module
CRM Accounts (/crm/accounts)
- Table: Account # (mono), Name, Stage, Industry, Owner, Score, Last Activity
- 6 mock accounts at various stages (prospect, lead, qualified, customer)
- Search + stage filter
Account Detail (/crm/accounts/[id])
- Info grid + tags display
- Contact list, opportunities table, recent activities timeline
Sales Pipeline — Kanban (/crm/pipeline)
- 3 KPI Cards: Total Pipeline ($1,425,000), Weighted Value ($687,500), Avg Deal Size ($178,125)
- 5 Kanban columns: Prospecting (3), Qualification (2), Needs Analysis (0), Proposal (2), Negotiation (1)
- Deal cards: name, account, amount (mono), probability %, close date
- Colored top borders per stage
- 8 mock opportunities
Opportunity Detail (/crm/opportunities/[id])
- Header: name, stage badge, amount (mono)
- Info grid: Account, Contact, Source, Expected Close, Probability
- Activity timeline
- Actions: Advance Stage, Close Won, Close Lost
Quotes (/crm/quotes)
- Table: Quote # (mono), Account, Status, Total, Valid Until
- 4 mock quotes (draft, sent, accepted, expired)
Quote Detail (/crm/quotes/[id])
- Lines table: Description, Qty, Unit Price, Discount%, Tax, Total
- Totals footer (Subtotal, Discount, Tax, Grand Total)
- Actions: Send, Accept, Reject, Convert to Sales Order
Activities (/crm/activities)
- Type filter tabs: All, Calls, Emails, Meetings, Tasks, Notes, Demos, Follow-ups
- Upcoming section at top
- Activity cards: type icon (monochrome SVG), subject, related account/contact, due date, completion status
- 8 mock activities
- "New Activity" button
Support Tickets (/crm/tickets)
- Table: Ticket # (mono), Subject, Account, Priority, Status, Assigned To, Created
- Priority badges: low (gray), normal (blue), high (orange), critical (red)
- 5 mock tickets
- Filters: status, priority, search
Ticket Detail (/crm/tickets/[id])
- Header + status/priority badges
- Comments thread (internal comments have dashed border)
- Add comment form with "Internal Note" toggle
- Actions: Resolve, Close, Reopen, Assign
Manufacturing Module
Bills of Materials (/manufacturing/bom)
- Table: BOM # (mono), Name, Finished Item, Revision, Status
- 3 mock BOMs
- "New BOM" button
BOM Detail (/manufacturing/bom/[id])
- Components table: #, Component (with SKU), Qty, UOM, Scrap%, Phantom
- Cost Rollup section: Material Cost, Labor Cost, Overhead Cost, Total Cost (accent-colored)
- Actions: Cost Rollup, Activate (draft), Obsolete (active)
Work Orders (/manufacturing/work-orders)
- Table: WO # (mono), Item, Qty, Completed, Status, Priority, Planned Start, Planned End
- Priority badges (low/normal/high/urgent)
- 4 mock work orders at various stages
Work Order Detail (/manufacturing/work-orders/[id])
- Status + priority badges in header
- Progress bar (quantityCompleted / quantity, teal fill)
- Operations table: Step, Name, Work Center, Status, Planned Time, Actual Time
- Materials table: Item, Planned, Consumed, Scrapped
- Cost comparison table: Planned vs Actual vs Variance (red/green coloring)
- Actions by status: Release, Start, Complete, Cancel, Close
Quality Inspections (/manufacturing/quality)
- Table: Inspection # (mono), Item, WO, Sample Size, Passed (green), Failed (red), Status
- 3 mock inspections
MRP Planning (/manufacturing/mrp)
- "Run MRP" button
- Latest run summary card: Run #, Date, Recommendations count, Actioned count
- Recommendations table: Item (with SKU), Type badge (WO/PO), Qty, Required Date, Reason, Actioned
- "Action" button per unactioned recommendation
- 5 mock recommendations
Reporting & Analytics Module
Analytics Dashboard (/reporting)
- 6 KPI Cards with trend arrows (up/down SVG):
- Revenue: $125,000.00 (+12.5%)
- Gross Margin: 68.0% (+2.3%)
- Orders: 847 (+8.1%)
- Avg Order Value: $147.58 (-1.2%)
- On-Time Delivery: 94.2% (+0.8%)
- Customer Churn: 2.1% (-0.3%)
- 6 Chart Placeholders: Revenue Trend, Expenses by Category, Order Fulfillment Rate, Top Products, Cash Flow Analysis, Inventory Turnover
Report Library (/reporting/reports)
- Reports grouped by category: Finance, Supply Chain, Manufacturing, HCM, CRM
- Category badges (teal/purple/orange/blue/green)
- Each report card: name, description, "Run" and "Save" buttons
- Search bar
- 32 buttons total (Run + Save per report)
Report Viewer (/reporting/reports/[id])
- Header with export buttons (PDF, CSV, XLSX)
- Dynamic filter bar from report definition
- Sortable column headers
- Pagination
- Execution metadata (rows returned, time taken)
Dashboards (/reporting/dashboards)
- Dashboard cards: name, description, owner, widget count, "Default" badge
- "Create Dashboard" button
- 2 mock dashboards
Dashboard Builder (/reporting/dashboards/[id])
- Widget grid with type badges (KPI, Chart, Table, Gauge)
- Widget placeholder content (large numbers, bar charts, table rows)
- "Add Widget" button
- Edit/Remove icons per widget
Scheduled Reports (/reporting/scheduled)
- Table: Name, Report, Frequency, Format, Recipients (pill badges), Next Run, Last Run, Active toggle
- Frequency badges (Daily=teal, Weekly=blue, Monthly=purple)
- Active toggle switch with optimistic update
- "Schedule Report" button
- 3 mock scheduled reports
Startup Module
Cap Table (/startup/equity)
- Ownership Summary with CSS conic-gradient pie chart
- Founders 55%, Employees 15%, Investors 30%
- Total Shares: 10,000,000
- Latest Valuation: $20,000,000.00
- Shareholders Table: Name, Type (badge), Shares, % Ownership, Vested, Unvested
- 5 shareholders: Alex Rivera CEO, Jordan Lee CTO, Employee Option Pool, Sequoia Capital, Y Combinator
- Fundraising Rounds Table: Name, Pre-Money Valuation, Amount Raised, Price/Share, Status
- Seed Round ($5M pre-money, $2M raised, Closed)
- Series A ($15M pre-money, $5M raised, Closed)
- "View Grants" + "New Round" buttons
Equity Grants (/startup/equity/grants)
- Table: Grantee, Type (option/rsa/rsu), Shares, Strike Price, Vesting (progress bar), Status
- Purple vesting progress bars
- 5 mock grants
- "New Grant" button
Expense Management (/startup/expenses)
- My Expenses / All Expenses toggle
- Pending approval queue (yellow highlight)
- Table: Report # (mono), Employee, Date, Total, Status
- Actions: Submit, Approve, Reject, Reimburse
- 4 mock expense reports
SaaS Vendor Spend (/startup/saas-spend)
- 4 KPI Cards: Total Monthly Spend, Total Annual Spend, Active Subscriptions, Avg Utilization %
- Upcoming Renewals warning section (next 30 days)
- Table: Vendor, Product, Category (badge), Monthly Cost, Annual Cost, Seats (used/total), Renewal Date, Status
- Category badges: engineering=teal, sales=green, marketing=purple, hr=blue
- 8 mock subscriptions (GitHub, Slack, AWS, HubSpot, Figma, Notion, Zoom, Datadog)
- "Add Subscription" button
OKR Tracking (/startup/okrs)
- Company-wide progress bar at top (avg of all objectives)
- Period filter (Q1-Q4) + Level filter (Company/Team/Individual)
- Expandable objective cards:
- Title, owner, progress bar (green on_track / yellow at_risk / red behind)
- Nested key results: title, current/target value, unit, mini progress bar
- 3 mock objectives with 2-3 key results each
- "New Objective" button
R&D Tax Credits (/startup/rd-credits)
- 3 KPI Cards: Qualifying Hours (YTD), Qualifying Wages, Estimated Credit (at 20% rate)
- Activities Table: Name, Category (badge), Description, Qualifying (checkmark)
- Time Entries Table: Employee, Activity, Date, Hours, Description
- 4 mock activities + 6 mock time entries
- "New Activity" + "Log Time" buttons
SaaS Metrics (/startup/metrics)
- Description: "Key subscription business metrics. These would pull from a billing integration (e.g. Stripe) in production."
- 8 KPI Cards: MRR ($0.00), ARR ($0.00), MoM Growth (0.0%), Net Revenue Retention (0.0%), Churn Rate (0.0%), LTV ($0.00), CAC ($0.00), LTV:CAC Ratio (0.0x)
- 4 Chart Placeholders (dashed border, elevated bg):
- MRR Over Time (Line Chart)
- Revenue by Plan (Bar Chart)
- Churn Cohort (Heatmap)
- Customer Growth (Line Chart)
Burn Rate & Runway (/startup/burn)
- 6 KPI Cards: Cash on Hand, Monthly Burn Rate, Gross Burn, Net Burn, Months of Runway, Last Fundraise
- Runway Projection chart placeholder (declining dashed line with red $0 threshold)
- Monthly Breakdown Table: Month (Jan-May 2026), Revenue, Payroll, SaaS, Rent, Other, Net Burn
- Fundraising Milestones timeline: Pre-Seed, Seed, Series A (with "Planning" badges)
Admin Module
Administration Hub (/admin)
- 6 admin cards (each with monochrome SVG icon, title, description):
- Tenant Settings, User Management, Organizations, API Keys, Webhooks, Audit Log
Tenant Settings (/admin/settings)
- Form: Company Name, Logo URL, Timezone dropdown, Default Currency dropdown, Locale dropdown
- "Save Settings" teal button
- Error banner for API failures
User Management (/admin/users)
- Table: Name, Email, Roles (teal badge chips), Status, Last Login (mono)
- 6 mock users with roles (Admin, Controller, Accountant, etc.)
- Search + status filter
- "Invite User" button
User Detail (/admin/users/[id])
- Info grid + roles list with remove buttons
- "Add Role" button
- Deactivate action
Organizations (/admin/organizations)
- Table: Name, Code (mono), Address, Users Count
- "New Organization" button
API Keys (/admin/api-keys)
- Table: Name, Key (masked
••••xxxxin mono), Created (mono), Expires, Status - "Generate Key" button (one-time reveal)
- Revoke action per key
Webhooks (/admin/webhooks)
- Table: URL (mono), Events (badge chips), Active toggle, Last Triggered (mono)
- "Add Webhook" button
- Edit/Delete actions
Audit Log (/admin/audit-log)
- Table: Timestamp (mono), User, Action (color-coded badge), Entity, Details
- 10 mock audit entries
- Filters: Entity Type, User, Action, Date From, Date To
Workflows Module
My Approvals (/workflows)
- Pending Approvals cards:
- Entity type badge, entity reference, current step
- Requested by, time waiting
- Approve / Reject buttons
- Recent Activity timeline with colored dots and time-ago
Workflow Definitions (/workflows/definitions)
- Table: Name, Entity Type, Steps, Status, Instances Count
- "New Workflow" button
Workflow Definition Detail (/workflows/definitions/[id])
- Visual step pipeline: numbered boxes connected by SVG arrows
- Each step: name, approver role/user
- Activate/Deactivate toggle
- Instance history table
Customer/Employee Portal (apps/portal — port 3002)
Portal Home (/)
- Link cards to all sections with monochrome SVG icons
Customer Section
- My Orders (
/orders) — Order #, Date, Status, Total - My Invoices (
/invoices) — Invoice #, Date, Due Date, Total, Paid, Due, Status + "Pay Now" button - My Tickets (
/tickets) — Ticket list + new ticket form (subject, description, priority) - My Profile (
/profile) — Read-only info grid
Employee Section
- My Pay Stubs (
/pay-stubs) — Pay Period, Gross, Deductions, Net + click-to-view detail - My Leave (
/leave) — Balance cards + request form + request history - My Benefits — View enrolled plans
Backend-Only Features (API endpoints, no dedicated UI page)
Finance
- Tax Codes CRUD + tax calculation (basis points)
- Fixed Assets depreciation (straight-line, declining balance, batch runs)
- Period Close wizard (3-point checklist, balance carry-forward, lock/reopen)
- Account Balance projection (BullMQ job on JE post)
Supply Chain
- Goods Receipts (3-way PO matching, stock movements on confirm)
- Carriers CRUD (tracking URL templates)
- Cycle Counts (auto-populate from inventory, variance calc, auto-adjustment)
HCM
- Departments CRUD + tree hierarchy
- Job Titles CRUD + salary bands
- Attendance clock-in/out + monthly summaries
- Leave balance initialization + carry-over
CRM
- Contacts CRUD + DNC flags
- Campaigns (bulk member add, conversion tracking, metrics)
- Quote-to-Sales-Order conversion
Manufacturing
- Work Centers CRUD
- Routings + routing steps
- Material consumption tracking
- Quality checkpoints
Reporting
- Report Definitions CRUD + seed system reports (8 built-in)
- KPI snapshots (historical value capture)
- Report execution logging (timing, row count)
Platform
- WebSocket gateway (Socket.IO + Redis pub/sub)
- BullMQ job queues (6 priority levels)
- OPA authorization guard +
@RequirePermissiondecorator - Notification service (DB + WebSocket emit)
- Workflow engine (definition → instance → transition lifecycle)
Field Service
- Service Orders (schedule → dispatch → start → complete with signature)
- Technician GPS location tracking
- Service territories (GeoJSON polygons)
- Service order photos (before/after)
Startup
- Equity grants (exercise, cancel, vesting tracking)
- Liquidation waterfall analysis
- Cap table aggregation
- Expense report line items + receipt URLs
- OKR progress auto-calculation
- R&D credit summary (qualifying hours × wage rate × 20%)
Infrastructure & Tooling
Database
- 8 schema files: platform, finance, supply-chain, hcm, crm, manufacturing, reporting, startup, field-service
- 95 tables with proper indexes, multi-tenant row-level isolation (
tenant_idon every table) - Drizzle ORM with type-safe schema definitions
i18n
- 3 locales: en-US, fr-CA, es-US
- ~100 translation keys per locale (common, nav, finance, scm, hcm, crm)
next-intlconfigured for incremental adoption
Storybook
- 6 story files: Tokens, Buttons, Cards, Tables, Forms, StatusBadge
- Adom brand showcase (color palette, typography scale, spacing)
- Accessibility addon (
@storybook/addon-a11y)
Seed Data
- Demo tenant: Acme Corporation
- 40 GL accounts (US GAAP standard COA)
- 12 fiscal periods (FY 2026)
- 3 tax codes, 8 departments, 11 job titles
- 10 employees, 20 items, 5 vendors, 5 customers
- 5 CRM accounts, 4 benefit plans
- 30 leave balances (10 employees × 3 types)
CI/CD
- GitHub Actions workflow with brand-audit job
- Turbo build orchestration
- TypeScript strict-mode typecheck across all packages
Docker Compose
- PostgreSQL 16, Redis 7, Elasticsearch 8.17, MinIO, Keycloak 25, Mailpit