LocalFlow is a focused operations dashboard for local service businesses. It turns the original Journey Noir travel concept into a portfolio-ready niche SaaS with scheduling, client management, inventory alerts, invoicing, and Stripe payment plumbing.
- Responsive React operations dashboard with mobile navigation
- Daily appointment timeline and job completion interactions
- CRM, schedule, inventory, and invoice data views
- Reusable quick-add modal and feedback states
- Express API with Prisma-backed endpoints
- PostgreSQL schema for clients, services, appointments, inventory, and invoices
- Stripe Checkout session creation and webhook payment reconciliation
- Seeded demo data in the UI, so the project works before infrastructure is configured
React 19, Vite, Tailwind CSS 4, Node.js/Express, PostgreSQL, Prisma, Stripe, Lucide icons.
npm install
npm run devOpen http://localhost:3005. The dashboard runs in demo mode without environment variables.
To enable persistence, copy .env.example to .env, provide a PostgreSQL URL, then run:
npm run db:generate
npm run db:push
npm run devStripe is optional. Add test keys to .env to enable /api/invoices/:id/checkout. Configure Stripe to send checkout.session.completed events to /api/stripe/webhook.
GET /api/healthGET /api/dashboardPOST /api/clientsPOST /api/appointmentsPATCH /api/inventory/:idPOST /api/invoices/:id/checkoutPOST /api/stripe/webhook
The sample workspace represents a residential cleaning company, but the model generalizes to landscapers, mobile detailers, repair teams, and other appointment-based local operators.