Your Trusted Home Service Platform (Backend API)
FixItNow is a robust, highly modular backend API built for a home services marketplace. It provides the core infrastructure connecting Customers with professional Technicians for various household services (plumbing, electrical work, cleaning, etc.).
The platform supports a comprehensive ecosystem featuring complex user roles, dynamic service categories, seamless booking workflows, integrated secure Stripe payments, and a review system—all governed by platform administrators.
- Robust Authentication: Secure JWT-based Access & Refresh token architecture.
- Role-Based Access Control (RBAC): Distinct privileges for
ADMIN,TECHNICIAN, andCUSTOMER. - Technician Profiles: Professionals can establish profiles, list their specific skills, and declare their hourly rates and availability.
- Dynamic Services & Categories: Admins have full CRUD control over service categories and the individual services offered within them.
- Booking Management: Customers can book specific time slots with chosen technicians. Technicians can manage their booking statuses (
REQUESTED,ACCEPTED,COMPLETED, etc.). - Stripe Integration: Secure backend processing to generate Payment Intents for completed jobs.
- Review System: Customers can leave ratings and feedback for technicians upon successful job completion.
- Centralized Error Handling: Consistent API responses structured with a standardized
success,message,data/errorDetailsformat.
- Runtime: Node.js v24+
- Framework: Express.js (with modular architecture)
- Language: TypeScript
- ORM: Prisma
- Database: PostgreSQL (with Prisma Adapter)
- Authentication: JSON Web Tokens (JWT) & bcrypt for hashing
- Payments: Stripe API
- Node.js (v24 or later)
- PostgreSQL Database
- Stripe Account (for Secret Keys)
-
Clone the repository
git clone https://github.com/arFaisal043/fixitnow.git cd fixitnow -
Install Dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory based on.env.example:NODE_ENV=development PORT=5000 DATABASE_URL="postgresql://user:password@localhost:5432/fixitnow?sslmode=require" BCRYPT_SALT_ROUNDS=12 JWT_ACCESS_SECRET=your_access_secret JWT_REFRESH_SECRET=your_refresh_secret JWT_ACCESS_EXPIRES_IN=1h JWT_REFRESH_EXPIRES_IN=365d STRIPE_SECRET_KEY=sk_test_... STRIPE_WEBHOOK_SECRET=whsec_...
-
Database Migration & Generation
npx prisma generate npx prisma db push
-
Start the Development Server
npm run dev
For detailed information on the request structures, responses, headers, and specific endpoints, please refer to our documentation:
👉 View Live Postman Collection
👉 View Local API Documentation
This project follows the Thin Controller, Fat Service principle for maximum maintainability:
src/
├── app/
│ ├── config/ # Environment variables & constants
│ ├── middlewares/ # Global auth, validation, and error handlers
│ ├── modules/ # Feature-based modular architecture (Auth, Admin, Booking, etc.)
│ ├── routes/ # Centralized route aggregator
│ └── utils/ # Helper functions (Prisma client, async wrappers, etc.)
├── server.ts # Application bootstrap
└── app.ts # Express configuration
Contributions, issues, and feature requests are welcome!
- Fork the project.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
Built with passion for clean code and seamless services.
