RepairFlow - Repair Shop Management System

Description
RepairFlow — Repair & Service Shop Management System
I started building RepairFlow after working with a garage owner who tracked everything in paper notebooks. His real problem wasn't the repairs — it was knowing whether a job was profitable after parts were sourced, and whether his mechanics were working on what they were supposed to be working on. No off-the-shelf script handled that combination, so I built this from scratch for real shop conditions.
It's been running live in production and has processed real repair orders, real invoices, and real inventory movements. This isn't a demo-only project.
Live Demo — repairflow.dreamteams.cloud | Documentation
Demo accounts — password 123456 for all:
RoleLoginWhat they seeAdmin0900000001
Everything — settings, reports, all modules
Receptionist
0900000002
Front desk: appointments, repair orders, invoices, customers
Technician
+15550100001
Only their own assigned jobs — no prices, no estimates
Accountant
0900000004
Payments, debts, cash book, financial reports only
Three things that make it different from other repair scripts
1. Digital Vehicle Inspection (DVI) with a customer-facing shareable link The technician fills out a checklist — Good / Monitor / Needs Repair — and uploads photos per item. The system generates a unique link you send to the customer via WhatsApp or Zalo. The customer views the full inspection report in their browser with no login. When the customer first opens the link, the system records the timestamp. Items flagged as "Needs Repair" can be converted into an estimate in one click — no re-typing. I haven't seen another repair shop script on any marketplace that does this.
2. Remote estimate approval via a shareable link Send a unique link to the customer. They enter their phone number to verify identity, then approve or decline. No customer account needed. On approval, the estimate converts directly into a repair order with all line items pre-filled. This was designed for situations where the customer drops off the car and you need their sign-off before starting work.
3. One codebase, four shop types Set the shop type once in General Settings — Auto Workshop, Phone Repair, Electronics, or Custom — and the entire system changes: what the "asset identifier" field is called (plate number / IMEI / serial number), whether odometer is shown, and which inspection templates appear. I'm using this same codebase deployed for different clients with different configurations.
Full module list (17 modules)
Repair Orders — status workflow (Received → In Progress → Parts Waiting → Completed → Returned), multiple technician assignment, internal timeline per order, FIFO inventory auto-deduction on completion, one-click invoice generation. The system prevents double-deducting parts from the same order.
Digital Inspection (DVI) — admin-built templates, technician fills on mobile, photo uploads per item, shareable customer link, first-view timestamp recorded, convert flagged items to estimate.
Estimates with Remote Approval — line items with discount and tax, shareable approval link, phone number verification, approved estimate converts to repair order automatically.
Appointments — book with customer, asset, technician, and service notes. Status: Pending → Confirmed → Arrived / Cancelled. Convert to repair order or DVI with one click — details carry over. Technicians have a personal day-by-day schedule view.
Invoices & Payments — auto-generated from completed repair orders, partial payment support, multiple payment accounts (cash, bank, e-wallet), shareable public invoice preview (no customer login needed), print-ready layout.
Inventory — FIFO batch lot tracking, purchase orders with supplier debt, multi-warehouse + storage location support, stock transfer between locations, kit unbundling with cost allocation, low-stock alerts. Product types: Part, Labor/Service, Bundle/Kit.
Customer Debt & Supplier Debt — aging tracking, partial repayments, overdue highlighting.
Cash Book — income entries auto-created from invoice payments, expense entries from supplier payments, manual expense entries, daily summary per account.
CRM / Leads — prospect pipeline, activity log per lead (calls, messages, notes), source tracking, one-click convert to customer.
5 Report types — Revenue & Profit (gross margin, net profit, trend chart), Inventory value & movement, Debt aging, Operations KPIs & technician performance, Customer & asset history. All reports support Today / 7 Days / This Month / This Quarter / Custom date range.
Roles & Permissions — 4 built-in roles + custom role builder. Powered by Spatie Laravel Permission. Technicians see only their assigned orders and never see cost prices or margins.
Web Installer — 7-step browser-based wizard, no SSH or CLI knowledge needed. Checks PHP extensions, creates the database if it doesn't exist, streams the install log live in the browser. Routes are auto-locked after install completes so the installer can't be re-run.
System Audit Log — every login, logout, failed login, create, update, delete, and restore action is recorded with a before/after data diff. Admin-only access.
PWA — installable from the browser, web push notifications for new orders and completions, mobile bottom nav for technicians, sidebar nav for office roles on desktop.
SMTP Config — configurable from admin settings panel, test email from UI, Gmail App Password supported.
Tech stack
- Backend: Laravel 12, PHP 8.2+
- Frontend: Livewire v3 (v4.x compatible), Alpine.js, Tailwind CSS v4
- Database: PostgreSQL 14+ — MySQL is not supported (JSONB columns are used)
- Auth: Custom provider — staff can log in with phone number or email
- Permissions: Spatie Laravel Permission v6
- Audit: owen-it/laravel-auditing v14
- PDF: barryvdh/laravel-dompdf v3
- Push: laravel-notification-channels/webpush (VAPID)
- Architecture: Livewire component → Service interface → Service → Repository interface → Repository → Model. Every interface is bound in service providers — no concrete class injection.
The codebase uses a custom Enum base class (not PHP 8.1 backed enums) that supports
values() for select dropdowns and getLabel($value) with locale-aware translation.
All user-visible strings go through translation keys — nothing is hardcoded in English or Vietnamese.
What's in the package
- Full Laravel 12 source code, PHP 8.2+ — no encoded files, no licensing server
- 17 functional modules, all wired up and working
- 7-step web installer (browser-based, no CLI)
- Vietnamese and English language files, fully translated
- 4 built-in roles with a custom role builder
- Inspection template seeders for Auto, Phone Repair, and Electronics shop types
- Demo seeder with realistic data across all modules
- PWA manifest, service worker, web push keys setup guide
- Database migrations and role/permission seeders
- HTML documentation: Installation Guide, User Guide (all 17 modules), Changelog
- 6 months support
Server requirements
PHP 8.2 or 8.3, PostgreSQL 14–16, Apache 2.4+ or Nginx 1.18+, HTTPS (required for PWA and push notifications). Required PHP extensions: pdo_pgsql, openssl, mbstring, tokenizer, xml, ctype, json, curl, gd, zip, fileinfo, intl. Node.js is not needed at runtime — compiled frontend assets are included.
Tested on: Ubuntu 22.04 VPS, macOS local dev (Herd), Hostinger shared hosting (PHP 8.2).
Who this is for
Shop owners who want to stop tracking jobs on paper or in spreadsheets and need something that actually fits how a repair shop works — not a generic CRM with "repair" bolted on.
Developers and agencies deploying a system for a repair shop client. The Service/Repository architecture and interface binding make it straightforward to extend without touching the core layer.
SaaS builders who want a working multi-role, multi-vertical base to clone per customer or build a proper multi-tenant product on top of.
Changelog
v1.0.0 — 2026-08-26 — Initial release 17 modules: Repair Orders, Digital Inspections (DVI), Appointments, Estimates (remote approval), Invoices, Payments, Customer Debt, Supplier Debt, Cash Book, Inventory (FIFO + Kit Unbundling), CRM/Leads, 5 Reports, Roles & Permissions, System Audit Log, SMTP Config, PWA, Web Installer.
Features
Repair Orders
- Full status workflow: Received → In Progress → Parts Waiting → Completed → Returned
- Multiple technician assignment per job; internal timeline logs every status change and note
- FIFO inventory deduction on completion — parts cannot be double-issued
- One-click invoice generation from a completed order
Digital Inspection — DVI
- Admin builds reusable inspection templates with groups and checklist items
- Technician marks each item: Good / Monitor / Needs Repair; attaches photos per item
- Shareable customer result link — customer views without logging in
- System records the moment the customer first views the link
- Convert flagged inspection items to an estimate in one click
Estimates with Remote Customer Approval
- Line-item estimates with discount and tax
- One-click shareable link — send via WhatsApp, Zalo, or SMS
- Customer verifies with their phone number then approves or declines remotely
- Approved estimate converts to repair order with no data re-entry
Invoices & Payments
- Auto-generated from completed repair orders; print-ready layout
- Shareable public preview link — customer views invoice without logging in
- Multiple partial payment entries per invoice
- Configurable payment accounts: cash, bank transfer, e-wallet
- Status tracking: Unpaid / Partially Paid / Fully Paid
Inventory Management
- Product types: Single Part, Service/Labor, Bundle/Kit
- Purchase orders: Draft → Review → Confirmed workflow
- FIFO batch lot tracking — oldest stock issued first, automatically
- Multi-warehouse and storage location support
- Stock transfer between locations with quantity selection
- Kit unbundling with per-component cost allocation
- Low-stock alerts when quantity falls below minimum level
Appointments
- Book with customer, asset, date/time, assigned technician, and service notes
- Status: Pending → Confirmed → Arrived / Cancelled
- One-click convert to repair order or digital inspection — all fields pre-filled
- Technician "My Schedule" — personal day-by-day calendar view
Customers & Assets
- Individual and corporate customer types (with tax code field for B2B invoicing)
- Multiple assets per customer; asset identifier uniqueness enforced system-wide
- Customer detail page: asset list, full invoice history, outstanding balance
- Shop type configures asset terminology (vehicle / device / equipment) throughout the UI
CRM / Leads
- Track prospects who enquired but have not visited yet
- Activity log per lead: calls, notes, Zalo/Facebook messages
- Source tracking for conversion analysis
- Status: New → Contacted → Qualified → Converted / Not Interested
- One-click convert lead to full customer record
Debt Management
- Customer debt aging summary and per-invoice payment history
- Supplier debt with overdue highlighting and repayment recording
- Payment history is immutable — corrections via reverse entry
Cash Book
- Auto-recorded income entries from invoice payments
- Auto-recorded expense entries from supplier payments
- Manual expense entry for other outgoings
- Summary: Total In / Total Out / Net Balance per payment account and date range
Reports (5 Types)
- Revenue & Profit — gross margin, net profit, month-on-month trend chart
- Inventory — stock value, fast/slow movers, movement history, location allocation
- Debt & Cash Flow — customer aging, top debtors, supplier aging, daily cash flow
- Operations — repair order KPIs, average handling time, technician performance, appointment conversion rate
- Customers & Assets — new vs. returning customer ratio, assets due for service, full service history
- Date filters: Today / 7 Days / Month / Quarter / Custom range
Roles & Permissions
- 4 built-in roles: Admin, Receptionist, Technician, Accountant
- Fully customizable additional roles via Admin panel
- Granular permission matrix — powered by Spatie Laravel Permission v6
- Technicians see only their own assigned repair orders; never see cost prices or financial reports
System & Administration
- System audit log — records every login, logout, create, update, delete, and restore with before/after diff
- General settings: shop name, logo, currency, language (VI/EN), timezone, opening hours, PWA icons
- SMTP configuration from Admin UI — no server file editing; test send feature included
- Forgot password — time-limited email reset link (60 minutes)
- Phone-or-email authentication — staff can log in with either
Web Installer
- 7-step guided wizard runs entirely in the browser — no SSH or CLI needed
- Automatic PHP extension check with clear pass/fail display
- Auto-creates PostgreSQL database if it does not exist
- Real-time install log streamed to browser during setup
- Installer routes auto-locked after completion
PWA & Mobile
- Fully responsive — designed for phones first, scales to tablet and desktop
- Installable as a native-style app from the browser (no App Store)
- Web push notifications for new repair orders and completions
- Bottom navigation bar optimised for technicians on mobile
- Sidebar navigation for office roles on desktop
Multi-Vertical
- Shop type setting adapts asset labels, identifier fields, and inspection templates throughout the entire UI
- Supported verticals: Auto Workshop, Phone Repair, Electronics Repair, Custom
- Switch vertical at any time from General Settings — no code changes needed
Internationalisation
- Full Vietnamese and English language support
- Language can be switched from General Settings
- All text uses translation keys — easy to add additional languages
Requirements
Server Requirements
- PHP 8.2 or higher (8.3 recommended)
- PostgreSQL 14 or higher — MySQL is NOT supported
- Apache 2.4+ or Nginx 1.18+
- Composer 2.x
- HTTPS — required for PWA install prompt and push notifications
Required PHP Extensions
- pdo
- pdo_pgsql
- pgsql
- openssl
- mbstring
- tokenizer
- xml
- json
- curl
- gd
- zip
- fileinfo
- bcmath
- intl
The web installer checks all extensions automatically and shows a clear pass/fail list before you proceed.
Directory Permissions
storage/— must be writable by the web server (775 or 777)bootstrap/cache/— must be writable by the web server (775 or 777)
Optional (Recommended for Production)
- Supervisor — keeps the queue worker running for background jobs (push notifications, email delivery)
- Redis — can replace the database cache/queue driver for better performance; the database driver works well out of the box
- OPcache — PHP opcode cache for faster response times
Mail (Optional — for Forgot Password)
- Any SMTP provider: Gmail, Mailgun, Postmark, SendGrid, etc.
- Port 587 (TLS) or 465 (SSL)
- Configurable from the Admin panel — no server file editing needed
Node.js (Build-time Only)
- Node.js 18+ and npm 9+ — only required if you want to rebuild frontend assets
- Pre-compiled assets are included in the package — Node.js is not needed in production
Browser Support
- Chrome 90+
- Firefox 90+
- Safari 14+ (iOS 14+)
- Edge 90+
PWA / Push Notification Support
- Android + Chrome: full install and push notification support
- Desktop Chrome / Edge: full install and push notification support
- iPhone / Safari: home screen install supported; push notifications require iOS 16.4+
Instructions
Step 1 — Upload Files to Your Server
Extract the downloaded ZIP. Upload the contents of the repairflow/ folder to your server. Point your web server's document root to the public/ subdirectory inside the application.
Example locations:
- Shared hosting: upload to
/public_html/, set document root to/public_html/public/ - VPS / Dedicated: upload to
/var/www/repairflow/, set document root to/var/www/repairflow/public/
Never expose the application root directory directly — only the public/ subfolder should be web-accessible.
Step 2 — Set Directory Permissions
The web server user must have write access to two directories:
chmod -R 775 storage bootstrap/cache chown -R www-data:www-data storage bootstrap/cache
If unsure of the web server user, use chmod -R 777 temporarily.
Step 3 — Run the Web Installer
Open your browser and go to https://your-domain.com/install. The installer walks you through 7 steps:
- Requirements Check — verifies PHP version and all required extensions. Fix any red items before continuing.
- Permissions Check — confirms
storage/andbootstrap/cache/are writable. - Database Configuration — enter your PostgreSQL host, port, database name, username, and password. Click Test Connection. The installer creates the database automatically if it does not exist.
- Site Information — set your shop name, full app URL (including
https://), and timezone. - Admin Account — create the primary administrator account (phone number + password required; email optional).
- Installation — click Start Installation. Runs migrations, seeds roles and permissions, creates demo accounts, generates APP_KEY, and finalises the .env file. Do not close the tab during this step.
- Finish — installation complete. Click Go to Login. The
/installroute is now permanently locked.
Important: The App URL set in Step 4 must exactly match the URL you access the app from. A mismatch will break PWA push notifications and shareable links.
Step 4 — Post-Install Setup
Complete these steps before inviting your team:
- Change the admin password — avatar → My Profile → change password
- Delete or reset the three demo accounts (phone: 0900000002, 0900000003, 0900000004) — Admin → Users
- Set shop details and upload your logo — Admin → Settings → General
- Configure SMTP email for password reset — Admin → Settings → Email (SMTP)
- Add product categories, suppliers, warehouses, and payment accounts — Admin → Settings
- Add your products and import initial stock via Purchase Orders
- Create staff accounts and assign roles — Admin → Users
Nginx Configuration
server {
listen 80;
server_name your-domain.com;
root /var/www/repairflow/public;
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.(?!well-known).* { deny all; }
}
Troubleshooting
- Blank white page — check that
storage/andbootstrap/cache/are writable; open error log at/var/log/nginx/error.log - Cannot connect to PostgreSQL — verify PostgreSQL is running (
sudo systemctl status postgresql), host/port is correct, and port 5432 is not firewalled - Permission denied to create database — run
ALTER USER youruser CREATEDB;in psql, or create the database manually first - 419 Page Expired — CSRF token expired; refresh the page and retry the installer step
- 404 for all routes — document root must point to
public/; on Apache confirmmod_rewriteis enabled andAllowOverride Allis set - PWA install prompt does not appear — HTTPS is required; ensure a valid SSL certificate is installed
- Need to reinstall — delete
storage/app/installedand remove theapp_installedrow from thesettingstable; the installer becomes accessible again
Need Help?
Open a support ticket via the item page. Include your PHP version (php -v), the exact error message, and which installer step failed.
| Author | dreamteam |
|---|---|
| Category | Scripts & Code / PHP Scripts / Management / Business |
| Price | $37 |
| Extended License | $111 |
| First Release | Sep 9, 2026 |
| Last Update | Sep 9, 2026 |
| Database | PostgreSQL 14, PostgreSQL 15, PostgreSQL 16, PostgreSQL 17 |
| Files included | .php, .css, .html, JavaScript .js |
| Software version | PHP 8.2, PHP 8.3, PHP 8.4, PHP 8.5 |
| Html/css framework | Tailwind CSS, Sass / SCSS |
| Programming language | PHP, JavaScript |
Categories
Tags
External listing. code.market does not sell this product and does not process payment for it. Pricing, payment, delivery, licensing, refunds, and support are handled by the third-party merchant on its own website. We may earn an affiliate commission from a referral. Details.
Products of the Week.
Submit🥇
STOP GUESSING WHAT TO POST
AI that learns your brand voice and builds a month of consistent, on-brand social content: carousels, posts and hooks that sound like you, not like everyone else's AI.
SaaS · 3,096 views · 28 clicksSaaS · Week 45 · 3,096 views · 28 clicks
🥈
Conversational Backlinks for Busy Founders
Place Backlink Relevant Conversation for your domain across Forums and Conversations
Website · 40,486 views · 216 clicksWebsite · Week 45 · 40,486 views · 216 clicks
🥉
upvote.club
Free Social Media Engagement that Helps Boost Your Content. Upvote Club supports 19 social networks with 100+ engagement actions in one dashboard. Add links to your posts and get free engagement from real users.
SaaS · 38,578 views · 110 clicksSaaS · Week 45 · 38,578 views · 110 clicks
#4
Substack Posting API
Onboard your Agent to Substack. Write Publish on Substack via API
SaaS · 57,616 views · 197 clicksSaaS · Week 45 · 57,616 views · 197 clicks
#5
Seenshot App
Free, Fast, MacOS Screenshot app. Make Screenshot cmd+shift+2 and send it via link
Desktop App · 27,048 views · 119 clicksDesktop App · Week 45 · 27,048 views · 119 clicks
#6
Hand-Placed Backlinks $9.99 per link. Flat rate.
Buy hand-placed forum, Q-A and directory backlinks. Flat $9.99 per link, no subscriptions — you only pay for approved listings.
Website · 2,988 views · 18 clicksWebsite · Week 45 · 2,988 views · 18 clicks
#7
Free Invoice Generator - PDF Invoices in Your Browser, No Sign-Up
A free invoice maker for freelancers and small businesses: fill in the invoice, check the live preview, and download a PDF that looks exactly like it. Any currency, tax per item, three templates, no sign-up, and nothing leaves your device.
1,682 views · 16 clicksWeek 45 · 1,682 views · 16 clicks
#8
Merge PDF Files Free - Combine PDFs in Your Browser, No Upload
A free PDF merger for office workers, students, and freelancers: combine PDFs and images into one file in the browser, reorder files and pages, pick page ranges, keep bookmarks, and open password-protected PDFs. Nothing is uploaded, no sign-up, no watermark.
1,574 views · 13 clicksWeek 45 · 1,574 views · 13 clicks