Make this....
PROJECT TITLE
TitanPro ― a full-stack, SaaS-grade field-service platform inspired by ServiceTitan.
PURPOSE
Give trade contractors (plumbing, HVAC, electrical, etc.) an all-in-one web + mobile hub for booking jobs, dispatching techs, invoicing, inventory, marketing, and analytics.
TECH STACK
Framework: Next.js 14 (App Router, RSC, edge runtime) with TypeScript
Styling/UI: Tailwind CSS + shadcn/ui; framer-motion for micro-interactions
State / Data Fetch: React Query, tRPC (typed end-to-end) -or- GraphQL (Mercurius)
DB: PostgreSQL (Supabase or RDS) via Prisma ORM, row-level security
Cache / Queues: Redis + BullMQ (jobs, WebSocket presence, reporting async)
Auth & RBAC: Auth.js or Clerk (email + OIDC, org switcher); roles: Admin, CSR, Dispatcher, Technician, Accountant, Manager
Payments: Stripe (Invoices, Subscriptions)
Comms: Twilio (SMS/voice), SendGrid (email); Socket.io or Pusher (live boards)
Maps / Routing: Google Maps Platform or Mapbox Directions
Observability: Sentry, OpenTelemetry traces; Logtail for logs
CI/CD: GitHub Actions → Vercel (frontend) + Fly.io/Render (API workers); IaC with Terraform
Testing: Vitest + Playwright E2E
Mobile: PWA first; optional React Native shell hitting the same tRPC routes
CORE MODULES & UI SCREENS
Customer 360 / CRM
Search, merge, timeline, contact-method preferences.
Customer portal (view jobs, pay invoices, approve estimates).
Orders / Jobs
Call-booking wizard → Job record (status, notes, attachments).
Route sheets & geo-tracking for techs.
Scheduling & Dispatch Board (kanban + timeline)
Drag-drop, capacity heat-map, skill & zone filters, auto-assign suggestions.
Real-time refresh via WebSocket channel.:contentReference[oaicite:0]{index=0}
Mobile Technician App
Offline-first work orders, time-clock, photo uploads, point-of-sale (Stripe Reader).
Quick-add materials from Pricebook.
Estimates, Invoices & Payments
Multi-option estimates, good-/better-/best templates.
One-click convert to job; PDF + e-signature; Stripe & in-house financing hooks.:contentReference[oaicite:1]{index=1}
Pricebook Management
Flat-rate items, tasks, dynamic parts costs, bulk import (CSV).
Versioning + staging > publish workflow.:contentReference[oaicite:2]{index=2}
Inventory & Procurement
Warehouse ↔ truck transfers, cycle counts, purchase-orders, RMA flow.:contentReference[oaicite:3]{index=3}
Payroll & Timesheets
Configurable pay rules, spiffs/commissions, export to QuickBooks/ADP.:contentReference[oaicite:4]{index=4}
Marketing & Call-Center
List segmentation, drip campaigns, call tracking numbers, ROI dashboards.:contentReference[oaicite:5]{index=5}
Reporting & Dashboards
Tile-based BI (revenue, close-rate, parts spend).
Custom report builder → CSV / Google Sheets export.
DATA MODELS (Prisma examples)
model User { id Int @id @default(autoincrement()) email String role Role ... } model Customer { id Int @id ... contacts Contact[] jobs Job[] } model Job { id Int @id ... customerId Int technicianId Int? scheduleAt DateTime ... } model Estimate { id Int @id ... jobId Int? total Decimal lineItems EstimateItem[] } model Invoice { id Int @id ... jobId Int? status InvoiceStatus payments Payment[] } model PricebookItem { id Int @id sku String unique name String category String flatRate Decimal ... } model InventoryLoc { id Int @id type InventoryType name String ... } model InventoryTxn { id Int @id locFrom Int? locTo Int? sku String qty Int kind TxnKind ... } model Campaign { id Int @id name String type CampaignType metrics Json ... }
Based on your requirements, I'll create an MVP for TitanPro, a SaaS-grade field service management platform inspired by ServiceTitan. This first version will establish the foundation for a comprehensive solution while focusing on the most critical features needed by trade contractors.
Core Features:
Modern dashboard with key performance metrics and activity feed
Customer management with detailed profiles and service history
Job scheduling and dispatch board with drag-and-drop functionality
Mobile-responsive technician view for field operations
Estimate and invoice generation with payment processing
User management with role-based access control
Design Elements:
Professional color scheme with brand blue (#0F52BA), accent orange (#FF6B35), and supporting neutral tones
Subtle micro-interactions using framer-motion for enhanced UX
Clean, information-dense UI inspired by ServiceTitan and other enterprise SaaS platforms
Responsive layout with optimized views for dispatchers (desktop) and technicians (mobile)
Custom dashboard widgets with data visualization using Recharts
Consistent 8px spacing system with proper visual hierarchy
TitanPro Field Service Management Platform
app/layout.tsx components/theme-provider.tsx components/site-header.tsx components/main-nav.tsx components/mode-toggle.tsx components/page-header.tsx components/layout/dashboard-layout.tsx components/dashboard/stats-card.tsx components/dashboard/recent-activity.tsx components/dashboard/jobs-chart.tsx components/dashboard/technician-performance.tsx components/dashboard/upcoming-jobs.tsx app/page.tsx app/customers/page.tsx components/customers/customer-list.tsx app/jobs/page.tsx components/jobs/jobs-list.tsx app/schedule/page.tsx components/schedule/dispatch-board.tsx
npm run dev
I've created a professional field service management platform with a focus on clean design and intuitive user experience. The implementation includes:
A comprehensive dashboard with key performance metrics, technician performance tracking, and upcoming jobs
Customer management system with detailed customer information and service history
Job management with filtering by status and priority
Interactive scheduling board with technician assignment capabilities
The design features a cohesive color system with appropriate status indicators, clean typography, and consistent spacing. The layout is fully responsive, providing optimal experiences for both office staff using desktops and field technicians using mobile devices.
Deploy this application.
I'm importing your project into Bolt. This may take a moment as I set everything up. Once it's ready, you'll be able to explore and interact with your code. Importing Bolt Project
sb1-t8vbzucz
npm install
npx next dev
I've successfully imported your project. I'm ready to assist you with analyzing and improving your code.
Your project has been previously deployed to https://lovely-kleicha-43d796.netlify.app and is owned by the Bolt Netlify account.
If you want to deploy this project to your personal account, claim ownership by visiting https://app.netlify.com/claim?utm_source=bolt#eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRfaWQiOiI1aDZmZEstVktNTXZuRjNiRlZUaktfU2JKVGgzNlNfMjJheTlpTHhVX0Q4Iiwic2Vzc2lvbl9pZCI6ImNjZWUyYTEzLTIxOTgtNGZmMy04M2NiLThiODAwYTg4NjBmNSIsImlhdCI6MTc1MTIxNzQ1NX0.8rCqB-Hl6TxWhG3BuUERfjFj-BdD3FMehcgrK7ouyCI and
. 3.1M daily tokens remaining. import { DashboardLayout } from "@/components/layout/dashboard-layout"; import { PageHeader } from "@/components/page-header"; import { Button } from "@/components/ui/button"; import { StatsCard } from "@/components/dashboard/stats-card"; import { JobsChart } from "@/components/dashboard/jobs-chart"; import { RecentActivity } from "@/components/dashboard/recent-activity"; import { TechnicianPerformance } from "@/components/dashboard/technician-performance"; import { UpcomingJobs } from "@/components/dashboard/upcoming-jobs"; import { BadgeDollarSign, CalendarClock, Phone, RefreshCw, Users, PlusCircle } from "lucide-react";
export default function Home() { return (
Refresh New Job <div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
<StatsCard
title="Revenue (MTD)"
value="$24,685"
icon={BadgeDollarSign}
description="+12% from last month"
positive
/>
<StatsCard
title="Jobs Completed"
value="125"
icon={CalendarClock}
description="89% completion rate"
/>
<StatsCard
title="New Customers"
value="28"
icon={Users}
Built With
- next
Log in or sign up for Devpost to join the conversation.