Company Operating System Development
Budget: $30.0 - $50.0
HOURLY / PART_TIME
⭐ 5.00 (1)
USA
database-design, application-audit, application-improvements
Greenville Home Exteriors — Operations App
Developer Brief / Handoff Overview
What it is
A custom operations and job-costing platform for Greenville Home Exteriors (GHE), a turnkey siding subcontractor that installs for production homebuilders. It runs the full job lifecycle — pricing catalog, builder price books, takeoffs, purchase orders (material and labor), supplier invoice matching, and profit tracking — for multi-unit residential work (single homes and townhouse buildings). QuickBooks Online is the accounting system of record; this app handles operations and job costing, not general ledger.
Tech stack
Frontend: React + TypeScript, built in Lovable. Tailwind CSS for styling, TanStack Router for routing. Components talk to the database directly through the Supabase JS client.
Backend: Supabase — Postgres (with Row Level Security), Auth, Storage (file buckets), and Edge Functions. There is no separate API server; the React app queries Postgres via supabase-js and calls a few Postgres RPCs and SQL views.
Integrations: QuickBooks Online (system of record). Google Calendar for install scheduling (event fields on jobs).
File handling: Client-side Excel/zip parsing with SheetJS (xlsx) and jszip; PDFs/images stored in Supabase Storage.
Core data model (Postgres, ~35 tables)
Catalog & pricing: products (permanent catalog, SKU is the shared key across suppliers), supplier_prices (net cost per SKU per supplier), suppliers (ABC, Lansing, QXO, Yoders), item_crosswalk (maps supplier/takeoff item names → catalog SKU).
Builders & plans: customers (builders), house_plans, scope_sheets + scope_sheet_lines (spec sheets), neighborhoods + neighborhood_pricing (per-neighborhood price books with margins).
Takeoffs: takeoff_templates + takeoff_template_lines (materials) + takeoff_template_labor (labor), one template per plan/elevation/option. Imported from Excel.
Jobs & costing: jobs, job_templates (which takeoffs a job was built from), purchase_orders + purchase_order_lines, labor_entries (labor POs), expenses, vpos (variation/change orders), invoices + invoice_lines, financial_accounts, tax_rates.
Costing rolls up through SQL views (e.g. v_job_material_suggested, v_supplier_ap, v_invoices, v_vpo_pnl).
Key flows
Pricing catalog: normalized product + per-supplier cost database, maintained/synced from an Excel workbook.
Builder price books (neighborhoods): per-plan and per-option margins, a lock / margin-float / re-quote ("ratchet") engine, and manufacturer price-increase tracking.
Excel importers: upload a zip of takeoff files (one per unit) and it imports each unit's materials, labor, and quote breakdown; the scope sheet and plan PDFs in the same zip attach to the job.
Ordering: from a job, pick a unit (elevation) + options and a single supplier → drafts a material PO and a labor PO for that unit (one supplier per material order). Supports variation POs (VPOs), extra expenses, and supplier invoice/confirmation matching.
Financials: dashboard for AR/AP, invoiced MTD/YTD, open invoices and aging; per-job COGS and profit-vs-quote variance.
Domain rules a developer should know
Pricing/margin math: margins are stored as decimals. Total Quoted Price (TQP) = materialCost*(1+taxRate)/(1-materialMargin) + labor/(1-laborMargin) + adder. Margins are set per job by the salesperson, not auto-applied.
One supplier per material order (POs are single-supplier).
SKU-centric: everything orderable resolves to a catalog SKU; takeoffs that name items by description are matched to SKUs via item_crosswalk.
Lumber nomenclature: 4/4 = ¾" board (supply-house term for a carpenter's "1x"); 5/4 = 1" board.
James Hardie ColorPlus rebate tiers (Primed → ColorPlus → ColorPlus IV → Super IV → Hyper IV, plus the premium Dream Collection) with builder-specific pricing (e.g. a builder gets special "Royal" vinyl pricing).
Townhouses: a building has multiple units; each unit gets its own material PO and labor PO. End units carry extra exposed elevation vs. shared-wall interior units.
Current state
Working MVP running live on its first real jobs. Actively in progress: takeoff item-name → catalog-SKU matching (so takeoffs auto-fill orders), per-unit ordering for townhouses, and a normalized pricing-database sync/rename migration. The whole thing is built and iterated inside Lovable against a Supabase project; a professional developer would take over that same repo/database rather than starting fresh.
Auf Upwork öffnen