Fixly is a modern service marketplace platform that connects customers with verified service providers.
Fixly operates as a two-sided marketplace where customers can discover, book, and pay for various services from verified service providers. The platform generates revenue through service commissions (10-15% on each successful booking).
- Users can register as customers or service providers
- Secure authentication with JWT tokens and cookie sessions
- Password reset functionality via email verification
- Role-based access control (Customer, Provider, Admin)
- Admins can create, edit, and delete service categories
- Categories help organize services for easier discovery
- Each category can have a name, description, and associated image
- Service providers can create detailed profiles
- Providers can list their services with descriptions, pricing, and availability
- Profile verification process to ensure quality and trust
- Customers can browse and search for services by category, price, rating, or location
- Detailed service listings with descriptions, images, and provider information
- Booking system with date/time selection and special instructions
- Real-time availability checking to prevent double bookings
- Secure payment gateway integration for processing bookings
- Automatic commission calculation and deduction
- Support for major payment methods
- Payment status tracking and history
- Customers can rate services (1-5 stars) after completion
- Detailed review functionality with text feedback
- Average ratings displayed on service listings
- Review moderation capabilities for admins
- User account management and monitoring
- Service listing approval and quality control
- Commission tracking and financial reporting
- Dispute resolution and customer support
- Platform analytics and business intelligence dashboard
- Runtime: Node.js
- Framework: Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT (JSON Web Tokens) with secure cookie sessions
- Image Management: Cloudinary for cloud-based image storage and processing
- Email Service: Nodemailer for transactional emails
- Middleware:
- bcryptjs for password hashing
- cookie-parser for cookie management
- cors for Cross-Origin Resource Sharing
- morgan for HTTP request logging
- multer for file uploads
- dotenv for environment variable management
- Framework: React 19
- Build Tool: Vite 6
- Routing: React Router DOM 7
- Styling: Tailwind CSS 4
- UI Components:
- React Toastify for notifications
- Framer Motion for animations
- React Chart.js 2 for data visualization
- HTTP Client: Axios for API requests
- State Management: Built-in React hooks and Context API
- Package Management: npm
- Development Server: Nodemon for auto-reloading
- Testing: Jest for unit testing, Supertest for API testing
- Code Quality: ESLint for linting
- Database Hosting: MongoDB Atlas
- Image Storage: Cloudinary
- Email Service: SMTP-compatible email providers
- Frontend Deployment: Vercel
- Backend Deployment: Render (Docker)
- Deployment Configuration: See DEPLOYMENT_INSTRUCTIONS.md for detailed deployment guides
This branch contains the implementation of Cloudinary image management functionality as part of sprint tasks #62-#68.
- Setup Cloudinary configuration in backend
- Implement image upload endpoint for provider/service images
- Implement image delete/update functionality
- Store Cloudinary image URLs in database
- Add validation for size, type, and format
- Write test cases for image upload/delete APIs
- Document image management endpoints
See Image Management API Documentation for details on the implemented endpoints.
- Clone the repository
- Run
npm installto install dependencies - Set up environment variables (see .env.example)
- Run
npm startto start the server
Run npm test to execute the test suite.
- Fork the repository
- 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
This project is licensed under the MIT License - see the LICENSE file for details.