A comprehensive service booking platform that connects customers with professional service providers for home services like cleaning, AC maintenance, plumbing, and more.
Servizo is a web-based application inspired by platforms like UrbanClap (now Urban Company) that allows users to:
- Browse and book various home services
- Manage service appointments
- Rate and review service providers
- Track booking history
- Node.js with Express.js - Server framework
- MongoDB - Database for storing users, services, and bookings
- Mongoose - ODM for MongoDB
- EJS - Template engine for server-side rendering
- HTML5 - Markup
- CSS3 - Styling
- JavaScript - Client-side functionality
- bcryptjs - Password hashing
- express-session - Session management
- connect-mongo - MongoDB session store
- multer - File upload handling
- nodemailer - Email notifications
servizo/
├── src/
│ ├── app.js # Main application file
│ ├── controllers/ # Route handlers
│ │ ├── authController.js
│ │ ├── serviceController.js
│ │ ├── bookingController.js
│ │ └── userController.js
│ ├── models/ # Database schemas
│ │ ├── User.js
│ │ ├── Service.js
│ │ └── Booking.js
│ ├── routes/ # Route definitions
│ │ ├── auth.js
│ │ ├── services.js
│ │ ├── bookings.js
│ │ └── users.js
│ ├── middleware/ # Custom middleware
│ │ └── auth.js
│ └── config/ # Configuration files
│ └── database.js
├── views/ # EJS templates
│ ├── layouts/
│ │ └── main.ejs
│ ├── partials/
│ │ ├── header.ejs
│ │ └── footer.ejs
│ ├── auth/
│ │ ├── login.ejs
│ │ └── register.ejs
│ ├── services/
│ │ ├── index.ejs
│ │ └── details.ejs
│ ├── bookings/
│ │ ├── create.ejs
│ │ └── list.ejs
│ └── index.ejs
├── public/ # Static assets
│ ├── css/
│ │ └── style.css
│ ├── js/
│ │ └── main.js
│ └── images/
├── package.json
└── README.md
- User registration and authentication
- User profiles and preferences
- Role-based access (Customer/Service Provider/Admin)
- Service catalog with categories
- Service details with pricing
- Service provider profiles
- Service availability management
- Service booking with date/time selection
- Booking confirmation and notifications
- Booking history and status tracking
- Cancellation and rescheduling
- Rating and review system
- Search and filter services
- Dashboard for different user roles
- Basic payment integration (simulation)
- Node.js (v14 or higher)
- MongoDB (local or Atlas)
- Git
-
Clone the repository
git clone https://github.com/Spydiecy/Servizo.git cd Servizo -
Install dependencies
npm install
-
Environment Setup Create a
.envfile in the root directory:PORT=3000 MONGODB_URI=mongodb://localhost:27017/servizo SESSION_SECRET=your_session_secret_here
-
Start MongoDB
# If using local MongoDB mongod -
Run the application
npm start # or for development npm run dev -
Access the application Open your browser and navigate to
http://localhost:3000
Want to deploy your app online for free?
Quick Start:
- Read the complete Deployment Guide
- Setup MongoDB Atlas (free)
- Deploy to Render (free)
- Your app will be live in 10 minutes!
Tools Used:
- Hosting: Render (Free tier)
- Database: MongoDB Atlas (Free tier)
- Caching: Redis Cloud (Free tier - optional)
See DEPLOYMENT.md for step-by-step instructions.
Run all tests:
npm testRun integration tests:
npm run test:integrationGenerate coverage report:
npm run test:coverageSee TESTING.md for complete testing documentation.
- Register/Login to the platform
- Browse available services by category
- Select service and view details
- Choose date/time and book service
- Track booking status
- Rate and review after service completion
- Register as a service provider
- Set up profile and services offered
- Manage availability and pricing
- Receive and accept bookings
- Update service status
- View earnings and ratings
- Manage users and service providers
- Oversee service categories
- Monitor platform activity
- Handle disputes and issues
- Professional UI/UX - Clean, modern interface with intuitive navigation
- Responsive Design - Mobile-first approach for all screen sizes
- Accessibility - WCAG compliant for inclusive user experience
- Performance - Optimized loading times and smooth interactions
{
name: String,
email: String (unique),
password: String (hashed),
phone: String,
role: String (customer/provider/admin),
address: Object,
createdAt: Date
}{
title: String,
description: String,
category: String,
price: Number,
duration: Number,
provider: ObjectId (ref: User),
rating: Number,
reviews: [ObjectId] (ref: Review),
isActive: Boolean,
createdAt: Date
}{
customer: ObjectId (ref: User),
service: ObjectId (ref: Service),
provider: ObjectId (ref: User),
scheduledDate: Date,
scheduledTime: String,
status: String (pending/confirmed/completed/cancelled),
totalAmount: Number,
address: Object,
notes: String,
createdAt: Date
}# Run tests
npm test
# Run tests with coverage
npm run test:coverage- Real-time chat between customers and providers
- GPS tracking for service providers
- Push notifications
- Advanced payment gateway integration
- Mobile app development
- AI-powered service recommendations
- Multi-language support
- Fork the repository
- Create a 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.
- Developer: [Your Name]
- Course: Backend Engineering (BEE)
- Institution: [Your College Name]
For support, email [your-email] or create an issue in this repository.
Note: This is an educational project developed as part of the Backend Engineering course curriculum.