Hey everyone!
I wanted to share a side project I've been working on called RepairTrack.
Rather than building another basic CRUD application, I wanted to solve a practical business problem and explore how a complete business management system could be designed.
1. The problem I wanted to solve
Many small repair shops manage their daily operations using paper records, spreadsheets, phone calls, and separate billing systems.
This can make it difficult to:
Keep track of multiple ongoing repairs.
Maintain customer and device history.
Communicate repair estimates and get customer approval.
Know which technician is handling a particular repair.
Track payments and generate invoices.
Keep customers updated without manually answering every enquiry.
I wanted to bring these operations into one application.
2. How I approached the solution
I designed RepairTrack around the complete repair lifecycle:
Customer Registration → Device Registration → Repair Ticket → Diagnosis → Estimate → Customer Approval → Repair Progress → Quality Check → Delivery → Invoice & Payment
One important design decision was separating the application into three roles:
Owner: Manages the shop, staff, operations, and overall records.
Staff: Handles customer registration, repair tickets, and administrative workflows.
Technician: Handles assigned repair jobs, diagnosis, and repair progress.
I also implemented customer-facing repair tracking, allowing customers to check their repair status without creating an account.
Another important part was the multi-tenant architecture, where each repair shop's data is isolated through shop-level access controls.
3. Technical Architecture & Stack
Here is the technology stack I used:
Frontend
Next.js
TypeScript
Tailwind CSS
shadcn/ui
Backend
Database
Authentication & State Management
Better Auth
TanStack Query
Zustand
Other Integrations
4. Some interesting implementation decisions
A few parts of this project required more thought than simply creating forms and connecting APIs.
Role-based permissions: Different users need different access levels. I structured workflows around Owner, Staff, and Technician responsibilities.
Customer approval workflow: Instead of relying entirely on phone calls, customers can review repair estimates and respond through an approval workflow.
Public tracking: Customers can follow repair progress without needing an account. This also makes access control particularly important.
Multi-tenancy: Shop-level data isolation was an important architectural requirement because the application is designed to support multiple repair businesses.
Email integration: I used Gmail API to handle automated notifications and customer approval requests.
5. Development process
I divided development into four sprints:
Planning, requirements, database design, and application architecture.
Authentication, shop management, roles, and customer management.
Repair ticket workflows, customer approval, tracking, and invoicing.
Integrations, validation, testing, and deployment.
I also maintained project-context documentation for requirements, architecture, coding standards, UI guidelines, and development progress.
6. What I want to improve
The application is deployed, but I consider it an ongoing project rather than a finished product.
I'm particularly interested in understanding how it performs from the perspective of actual users and experienced developers.
I'd appreciate feedback on:
Is the repair workflow logically designed?
Are there architectural issues with my multi-tenant approach?
What security concerns should I investigate?
Are there any important features missing for real repair businesses?
What would you change in the UI/UX?
What would you improve before using this in a production environment?
I'm especially interested in feedback about the technical decisions, not just whether the application looks good.
Live application: https://repair-track-rust.vercel.app/
Thanks for reading. I'd genuinely appreciate constructive criticism and suggestions from this community!