A modern frontend experience for a home services marketplace where customers can discover services, book trusted technicians, and leave feedback.
- About the Project
- Features by Role
- Tech Stack
- Project Structure
- Getting Started
- API Integration
- API Endpoints
- Related Repositories
- License
Fixano is a home services marketplace built to connect customers with qualified professionals across categories such as plumbing, electrical work, cleaning, painting, and more. Customers can browse available services, discover technicians, book appointments, make payments, and leave reviews. Technicians can create service profiles, manage availability, and handle bookings, while admins oversee the marketplace by managing users and service categories. The platform is designed to deliver a smooth, secure, and scalable experience for all three roles.
- Browse services and explore available categories
- Browse and filter technicians by specialty, rating, and availability
- Book a technician for a preferred service
- Pay securely through Stripe
- Leave and delete reviews for completed services
- View booking history and payment status
- Create and manage a professional service profile
- Set and update availability for bookings
- Manage incoming bookings and accept or reject requests
- View earnings-related dashboard insights
- Manage all platform users, including activation and deactivation
- View all bookings across the system
- Manage service categories and platform content
| Category | Technologies |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS |
| UI Components | shadcn/ui, Radix UI |
| Forms & Validation | React Hook Form, Zod |
| State Management | Zustand |
| Motion & UX | Motion, Sonner |
| Authentication | JWT, httpOnly cookies |
The frontend follows a clear App Router structure under the src directory:
src/
app/ # Route-based pages and layouts
components/ # Reusable UI and shared interface components
store/ # Zustand state stores
lib/ # Utility helpers and shared logic
utils/ # Auth, token, and helper utilities
- Node.js 18 or later
- npm or bun
git clone https://github.com/mdabdurrahman07/fixano_frontend.git
cd fixano_frontendUsing npm:
npm installOr using bun:
bun installCreate a local environment file and add the following values:
BACKEND_API_URL=
JWT_ACCESS_SECRET=
JWT_REFRESH_SECRET=Using npm:
npm run devOr using bun:
bun devAll frontend API requests are routed through the proxy middleware in src/proxy.ts to avoid CORS issues and centralize communication with the backend. For the complete endpoint mapping and integration details, see API_INTEGRATION.md.
| # | Method | Endpoint | Role |
|---|---|---|---|
| 1 | POST | /api/auth/register | Public |
| 2 | POST | /api/auth/login | Public |
| 3 | GET | /api/auth/me | All roles |
| 4 | POST | /api/auth/refreshToken | Public |
| 5 | GET | /api/services | Public |
| 6 | GET | /api/services/:id | Public |
| 7 | GET | /api/technicians | Public |
| 8 | GET | /api/technicians/:id | Public |
| 9 | GET | /api/categories | Public |
| 10 | POST | /api/bookings | CUSTOMER, ADMIN |
| 11 | GET | /api/bookings | CUSTOMER, ADMIN |
| 12 | GET | /api/bookings/:id | CUSTOMER, ADMIN |
| 13 | POST | /api/payment/checkout/:id | CUSTOMER, ADMIN |
| 14 | POST | /api/payment/webhook | Stripe (server) |
| 15 | GET | /api/payment/status/:id | CUSTOMER, ADMIN |
| 16 | POST | /api/reviews | CUSTOMER, ADMIN |
| 17 | DELETE | /api/reviews/:id | CUSTOMER, ADMIN |
| 18 | GET | /api/reviews | CUSTOMER, ADMIN, TECHNICIAN |
| 19 | POST | /api/technician/service | TECHNICIAN, ADMIN |
| 20 | PUT | /api/technician/profile | TECHNICIAN, ADMIN |
| 21 | PUT | /api/technician/availability | TECHNICIAN, ADMIN |
| 22 | GET | /api/technician/bookings | TECHNICIAN, ADMIN |
| 23 | PATCH | /api/technician/bookings/:id | TECHNICIAN, ADMIN |
| 24 | GET | /api/admin/users | ADMIN |
| 25 | PATCH | /api/admin/users/:id | ADMIN |
| 26 | GET | /api/admin/bookings | ADMIN |
| 27 | GET | /api/admin/categories | ADMIN |
| 28 | POST | /api/admin/categories | ADMIN |
This project is licensed under the MIT License.