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
Share this project:

Updates