User Guide
Complete manual for all staff roles. Covers all 17 modules — RepairFlow v1.0.0.
Getting Started
All RolesLogging In
Navigate to your shop's web address in any modern browser. The login screen requires:
- Phone number or email assigned by your administrator
- Password set by the administrator during account creation
0900000000 — Password password.
Change this password immediately after your first login.
Changing Your Password & Profile
Click your avatar or name in the top-right corner → select My Profile. From there you can:
- Update your full name, phone number, and email address
- Change your password (your current password is required)
Interface Overview
Installing as a Mobile App (PWA)
RepairFlow can be installed on your phone or desktop like a native app — no App Store required:
- Android (Chrome): Tap the ⋮ menu → "Add to Home Screen"
- iPhone (Safari): Tap the Share button → "Add to Home Screen"
- Desktop (Chrome/Edge): Click the install icon in the address bar
Initial Setup
Admin OnlyBefore going live, the admin should complete these setup steps in order:
1Shop Information — Admin → Settings → General
- Shop name, phone number, address, and email
- Shop logo (appears on invoices and the app header)
- Currency format (symbol, thousands separator, decimal separator)
- System language (Vietnamese or English)
- Timezone
- Opening hours for each day of the week
- PWA icons (192×192 and 512×512 PNG, for the app icon on home screens)
2Create Staff Accounts — Admin → Users
- Click "+ Add Staff"
- Enter full name, phone number (or email), and initial password
- Assign a role (see Section 3)
- Staff log in with their phone number or email address
3Product Categories — Admin → Settings → Product Categories
- Create categories such as: Parts, Materials, Services, Oils & Fluids
- Categories allow faster filtering when searching for products
4Suppliers — Admin → Settings → Suppliers
- Add your parts and materials suppliers
- Supplier information is used when creating purchase orders
5Warehouses & Storage Locations — Admin → Settings → Warehouses
- Create at least one warehouse (e.g. "Main Warehouse")
- Create storage locations within each warehouse (e.g. Shelf A, Shelf B) for detailed tracking
6Payment Accounts — Admin → Settings → Payment Accounts
- Add accounts: Cash, Bank Transfer, E-wallet (Momo, ZaloPay…)
- These accounts appear when recording invoice payments
7Products & Services — Admin → Products
- Create products of three types: Single Part (spare part), Service (labor charge), Bundle/Kit (set of components)
- Fill in SKU, name, category, and default sale price
- Bundle/Kit products: define the BOM (bill of materials — the component list)
8Initial Stock Import — Admin → Inventory → Purchase Orders
- Create a purchase order for each incoming batch of stock
- Enter products, quantities, unit cost price, and storage location
- Confirm the purchase order to bring the goods into stock
Roles & Permissions
Full system access. Manages staff, configures settings, views all reports, and performs every operation.
Receives customers, creates appointments, repair orders, estimates, and invoices. Does not see detailed financial reports.
Performs repairs. Sees only repair orders assigned to them. Cannot view cost prices, estimates, or financial reports.
Manages finances. Cannot create repair orders or manage appointments.
Customers & Assets
Admin · Receptionist · Accountant · TechnicianAdding a New Customer
- 1Go to Customers → click "+ Add Customer"
- 2Enter phone number (required, must be unique)
- 3Enter full name, customer type (Individual / Corporate), and address
- 4For corporate customers: also enter the tax code (VAT number)
- 5Click "Save"
Adding an Asset to a Customer
- 1Open the customer detail page (click the eye icon on the customer list)
- 2Click "+ Add Asset"
- 3Enter the unique identifier (required — auto-converted to uppercase), type, and description
- 4Optional: additional technical specifications (varies by shop type)
Searching for Customers
Search by name or phone number. Filter by customer type and status. The customer detail page shows: their assets, complete invoice history, and outstanding balance.
Appointments
Admin · ReceptionistBooking an Appointment
- 1Go to Appointments → click "+ Book Appointment"
- 2Search for and select the customer (type name or phone number)
- 3Select the customer's asset (if already registered)
- 4Choose the appointment date and time
- 5Optionally assign a responsible technician
- 6Enter expected services and any notes
Appointment Status Flow
Or: Cancelled at any point. Use the action buttons directly on the appointment row.
Converting an Appointment to a Repair Order
When the customer has arrived: click the wrench icon next to the appointment to instantly create a repair order. The asset details and expected services are pre-filled.
If a repair order already exists for that appointment, the same icon will take you directly to it.
Creating a DVI Inspection from an Appointment
Click the clipboard icon next to an appointment to create a Digital Inspection (DVI) for that asset. The icon only appears when no inspection exists yet. Select an inspection template and the system creates the inspection form linked to that appointment.
Technician Personal Schedule
Technicians go to "My Schedule" to see appointments assigned to them, organized by day. Use the ← → buttons or the date picker to navigate between days.
Repair Orders
Admin · Receptionist · TechnicianCreating a New Repair Order
- 1Go to Repair Orders → click "+ Create Order"
- 2Select the customer and their asset (or enter a description if not yet registered)
- 3Assign a responsible technician
- 4Enter the initial diagnosis / service notes
- 5Add line items: Services (labor charges) and Parts (from inventory)
- 6Click "Save Order"
Repair Order Status Flow
- Received → In Progress: Admin / Receptionist / Technician clicks "Start Work"
- In Progress → Parts Waiting: Technician clicks when parts are missing
- Parts Waiting → In Progress: Technician resumes work after parts arrive
- In Progress → Reported Complete: Technician reports job done — waiting for management sign-off
- Reported Complete → Completed: Admin / Receptionist confirms — inventory is automatically deducted at this point
- Completed → Returned: When the customer collects their item
Adding Parts (Inventory Items) to an Order
- 1Click "+ Add Line Item" → choose type Part
- 2Search for a product from the inventory
- 3The system automatically suggests the oldest available batch lot (FIFO)
- 4Enter the quantity required and confirm the sale price
Timeline & Internal Notes
Every status change is automatically recorded in the order's timeline. Staff can also add manual notes to the timeline at any time to document observations during the repair process.
DVI Inspection linked to a Repair Order
In the top-right area of the repair order form:
- Green badge "Inspection Exists": click to open the linked DVI inspection
- "Create Inspection" button: no inspection yet — click to choose a template and create a DVI linked to this repair order
Creating an Invoice from a Repair Order
When the order reaches Completed or Returned status, a "Create Invoice" button appears. Clicking it automatically generates an invoice containing all services and parts from the order.
Digital Inspections (DVI)
Admin · Receptionist · Technician1Create an Inspection Template Admin Only
Path: Admin → Inspections → Templates
- 1Click "+ New Template" and give it a name (e.g. "Intake Inspection" or "Post-Repair Check")
- 2Add groups (e.g. Appearance, Function, Safety, Performance)
- 3Within each group, add specific checklist items
- 4Optional: mark an item as "Photo required when issue found" — the camera opens automatically when the technician marks it yellow or red
- 5Click "Save" — the template is now ready to use
2Create an Inspection
Three ways to create an inspection:
- From the Inspections menu: go to Inspections → "+ Create Inspection" → choose template, asset, customer, and technician
- From a Repair Order: open the order → click "Create Inspection" in the top-right → select template → inspection is linked to that order
- From an Appointment: click the clipboard icon next to the appointment → select template → inspection is linked to that appointment
3Fill in the Inspection Results Technician
Open the inspection form and work through each checklist item:
- Click the coloured button corresponding to the item's condition
- Add technical notes in the text field below each item if needed
- Take photos using the camera button — items requiring photos will open the camera automatically when marked yellow or red
- Multiple photos can be uploaded per item
4Complete & Share Results with the Customer
Mark complete: when all items are filled in, click "Complete Inspection". The status changes to Completed.
Share the results:
- 1Click "Send Results to Customer"
- 2The system generates a unique results link for this inspection
- 3Copy the link → send via Zalo / Messenger / SMS
- 4The customer opens the link on their phone — sees all checklist results and photos without needing to log in
5Create an Estimate from Inspection Results Admin · Receptionist
When an inspection has items marked Monitor or Needs Repair, a "Create Estimate" button appears:
- 1Click "Create Estimate"
- 2Select which flagged items to include (all yellow/red items are pre-selected)
- 3Confirm → you are taken to the new estimate
- 4Enter prices for each item, then send to the customer
Inspection Status Flow
"In Progress" and "Viewed" transitions happen automatically — no manual button press needed.
Estimates
Admin · ReceptionistCreating an Estimate
- 1Go to Estimates → click "+ Create Estimate"
- 2Select an existing customer or enter a name/phone for a walk-in enquiry
- 3Choose the asset or enter a description
- 4Add service and parts line items with prices
- 5Optionally set tax, discount, and validity period
- 6Click "Save Draft"
Sharing the Estimate Link for Remote Approval
- 1Click "Send Estimate" → the estimate status changes to Sent and the system generates a unique preview link
- 2On the estimate detail page, click "Copy Link" (or click the preview URL field)
- 3Paste the link into Zalo / Messenger / SMS / Viber and send to the customer
- 4The customer opens the link on their phone and sees all services, parts, and the total
- 5They enter their phone number to verify their identity
- 6After verification, they click "Approve" or "Decline" with a reason
Converting an Estimate to a Repair Order
Once the estimate is approved (customer clicked "Approve" or staff confirmed internally), click "Create Repair Order" to transfer all line items to a new repair order — no re-entry required.
Invoices
Admin · Receptionist · AccountantHow Invoices are Created
Invoices are automatically generated from a completed repair order — click "Create Invoice" on any order with status Completed or Returned. Invoices cannot be created independently.
Each repair order can have at most one invoice. All line items are pulled directly from the repair order.
Editing an Invoice (Admin)
Admin users can adjust the following invoice fields:
- Discount (fixed amount)
- VAT (percentage)
- Notes
The total recalculates instantly as you make changes.
Printing an Invoice
Open the invoice detail page → click "Print". The browser opens a print-ready page where you can select a printer or save to PDF.
Sharing an Invoice Preview Link with the Customer
Useful when the customer is not present and wants to review the invoice before paying or collecting their item.
- 1Open the invoice → click the "Preview" button in the top area of the page
- 2The browser opens the invoice preview (HTML page, no login required)
- 3Copy the URL from the browser address bar (Ctrl+C / Cmd+C)
- 4Paste the link into Zalo / Messenger / SMS and send to the customer
- 5The customer opens the link and sees the full invoice breakdown
Invoice Payment Status
Status is updated automatically each time a payment is recorded.
Payments & Debt
Admin · Receptionist · AccountantRecording a Payment
- 1Open the invoice you want to collect payment for
- 2Click "+ Add Payment"
- 3Enter the amount received and select the payment account (Cash / Bank Transfer / E-wallet)
- 4Optionally enter a reference number or transaction ID
- 5Click "Confirm Payment"
Customer Debts (Customers owe us)
Go to Revenue → Debts → tab "Customers Owe Us":
- Total outstanding balance per customer
- Click a customer name to see their detailed ledger (per invoice, per payment)
- For unpaid invoices: click "Collect Payment" to jump to the invoice
Supplier Debts (We owe suppliers)
Go to Revenue → Debts → tab "We Owe Suppliers" to see the total owed to each supplier:
- Number of unpaid purchase orders, total value, amount paid, and remaining balance
- Overdue column: amounts past the payment due date are shown in red
- Summary cards at the top: Total Owed / Total Overdue / Due in 30 Days
Leads / CRM
Admin · Receptionist · TechnicianWhat is a Lead?
A lead is a potential customer who is not yet in your customer database (they haven't used your services yet). Managing leads helps you track the consultation pipeline and convert prospects into paying customers.
Lead Status Flow
- Logging an activity (call, Zalo message) automatically advances status to "Contacted"
- Manually change the status after your assessment
- Mark as "Not Interested" and enter a decline reason if the lead drops out
Converting a Lead to a Customer
- 1Open the lead detail page
- 2Click "Convert"
- 3Search for an existing customer (if already in the system) or create a new one using the lead's information
- 4Confirm → the lead status changes to "Converted" and it is linked to the customer record
Inventory Management
Admin · AccountantCreating a Purchase Order (Stock Intake)
- 1Go to Inventory → Purchase Orders → click "+ Create PO"
- 2Select the supplier, enter the intake date and the supplier's invoice number
- 3Add line items: product, quantity, unit cost price, and storage location
- 4Click "Save Draft" to review before confirming
- 5Click "Confirm Stock Intake" → goods are added to inventory and a batch lot is created
Viewing Current Stock
Go to Inventory → Stock Levels: list of products with current on-hand quantities.
- Expand any product row to see details by batch lot and storage location
- Products below their minimum stock level display a warning indicator
- Stock Transfer: click Transfer on a batch lot → select destination location and quantity
Recording a Supplier Payment
After confirming a purchase order, the system tracks the outstanding amount owed to the supplier. To record a payment:
- 1Go to Inventory → Purchase Orders
- 2Find a confirmed order with an Unpaid or Partially Paid badge
- 3Click "Record Payment"
- 4Enter amount, payment date, payment account, and optional notes
- 5Click "Confirm"
Kit Unbundling
Go to Inventory → Unbundling to disassemble a Bundle/Kit lot into individual component parts:
- 1Select the Bundle/Kit lot to unbundle (must be in stock)
- 2Select the storage location to take the kit from
- 3Enter the number of kits to unbundle
- 4Allocate the cost to each component — the system suggests an even split from the kit lot cost. Adjust as needed per component.
- 5Optionally assign storage locations for each component
- 6Click "Confirm Unbundling" → kit stock decreases, each component is added to inventory at the allocated cost
Cash Book
Admin · AccountantAutomatic Income Entries
Every time a payment is recorded against an invoice, the system automatically creates an income entry in the Cash Book. No manual entry is needed.
Adding a Manual Expense Entry
- 1Go to Revenue → Cash Book
- 2Click "+ Add Expense"
- 3Select the date, payment account, amount, and enter a description
Viewing the Summary
The top of the Cash Book page shows: Total Income / Total Expenses / Net Balance for the selected time period and payment account filter.
Reports
Admin · AccountantDate Filter
All reports have a date filter: Today / Last 7 Days / This Month / This Quarter / Custom Range. Select a custom date range using the date picker in the top-right corner of each report.
System Audit Log
Admin OnlyGo to Admin → System Log. The system automatically records all of the following:
Search & Filter
- Search by keyword (description, IP address, URL)
- Filter by event type and user
- Filter by date range
- Expand any log row to see the full before/after data diff for that change
Email & Forgot Password
Admin for setupStep 1 — Configure SMTP
Go to Settings → Email (SMTP) (admin-only menu item):
- 1Set Method: SMTP
- 2Enter your mail server details: Host, Port, Username, Password
- 3Set the From Email and From Name (shown in the recipient's inbox)
- 4Click "Save"
- 5Enter your own email address in the Send Test field → click "Send Test Email" to confirm the connection is working
Using Gmail (free, most common):
Create an App Password: Google Account → Security → 2-Step Verification → App Passwords → Generate new
Step 2 — Forgot Password (for users)
When a user forgets their password (requires a valid email on their account and SMTP configured):
- 1On the login page, click "Forgot Password?" below the password field
- 2Enter the email address registered on the account → click "Send Reset Link"
- 3Open the email → click the "Reset Password" button (link expires in 60 minutes)
- 4Enter a new password (minimum 8 characters) → click "Save New Password"
- 5Log in with the new password
Installer
First-time setupWhen to use the Installer
- Deploying the system for the first time on a new server
- Customer who purchased the source code is setting it up
- Migrating to a new server or resetting the system to a clean state
Installation Steps
Navigate to https://your-domain.com/install and complete the 7-step wizard:
- 1System Requirements: Checks PHP 8.2+ and all required extensions (pdo_pgsql, curl, gd, etc.). A clear list shows what is missing.
- 2Directory Permissions: Verifies
storage/andbootstrap/cache/are writable. If not: runchmod -R 775 storage bootstrap/cacheon the server, then re-check. - 3Database: Enter your PostgreSQL connection details (host, port, database name, username, password). The system tests the connection and auto-creates the database if it doesn't exist.
- 4Site Information: Set the shop name, full URL (must include
https://), and timezone. These are written to the.envfile. - 5Admin Account: Create your administrator login (phone number + password). Email is optional but needed for Forgot Password.
- 6Install: Click "Start Installation" — the system runs migrations, seeds roles and permissions, creates accounts, and writes the config. A real-time log is shown. Takes 30–120 seconds.
- 7Finish: Installation complete! Click "Go to Login". The
/install/*routes are permanently locked.
Technical Notes
- Only PostgreSQL is supported — MySQL cannot be used
- To reinstall: delete
storage/app/installedand remove theapp_installedrecord from thesettingstable (or truncate the entire database) - The installer creates
.envfrom.env.exampleif it doesn't already exist - After installation, go to Settings → General to set your shop logo, address, and phone number
- Inspection templates are not seeded by the installer — the admin adds them manually (or runs
php artisan db:seed --class=InspectionTemplateSeeder) after setup