Overview
The On-Demand Home Service System is a comprehensive web application built using Django that connects homeowners with reliable service providers for various home maintenance tasks. This platform provides a complete marketplace solution ideal for students and beginners looking to gain practical experience in web development and database management.
Perfect for final year projects and learning modern web development practices.
Features
- User Registration & Authentication: Secure sign-up/login for both homeowners and service providers
- Service Booking System: Browse, search, and book home maintenance services
- Real-Time Chat: Direct communication between homeowners and service providers
- Integrated Payments: Secure payment gateway integration for seamless transactions
- Route Optimization: Smart routing for service providers to optimize their schedules
- Rating & Review System: Build trust with transparent feedback
- Admin Dashboard: Comprehensive management panel for system administrators
- Service Provider Profiles: Detailed profiles with skills, ratings, and availability
- Booking Management: Track and manage service appointments
- Notifications: Email and in-app notifications for booking updates
Tech Stack
- Backend: Django 4.x (Python web framework)
- Frontend: HTML5, CSS3, JavaScript, Bootstrap
- Database: SQLite (development) / PostgreSQL (production)
- Real-Time: Django Channels for WebSocket support
- Payment: Stripe/PayPal API integration
- Maps: Google Maps API for route optimization
- Authentication: Django built-in authentication system
Project Structure
home-service-system/
├─ config/ # Project settings
├─ users/ # User management app
│ ├─ models.py # User and Profile models
│ ├─ views.py # Authentication views
│ └─ forms.py # Registration forms
├─ services/ # Service catalog app
│ ├─ models.py # Service models
│ ├─ views.py # Service listing/detail views
│ └─ admin.py # Admin configuration
├─ bookings/ # Booking management
│ ├─ models.py # Booking and Schedule models
│ ├─ views.py # Booking CRUD operations
│ └─ signals.py # Booking notifications
├─ chat/ # Real-time messaging
│ ├─ consumers.py # WebSocket consumers
│ ├─ routing.py # WebSocket routing
│ └─ models.py # Message models
├─ payments/ # Payment processing
│ ├─ views.py # Payment views
│ ├─ webhooks.py # Payment webhooks
│ └─ models.py # Transaction models
├─ static/ # CSS, JS, images
├─ templates/ # HTML templates
├─ media/ # User uploaded files
├─ manage.py
└─ requirements.txt
Setup
Prerequisites
- Python 3.8+
- pip
- virtualenv (recommended)
Installation
# Clone the repository
git clone <repository-url>
cd home-service-system
# Create virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run migrations
python manage.py makemigrations
python manage.py migrate
# Create superuser
python manage.py createsuperuser
# Load sample data (optional)
python manage.py loaddata sample_data.json
# Run development server
python manage.py runserver
Environment Variables
Create a .env
file in the project root:
SECRET_KEY=your-secret-key
DEBUG=True
DATABASE_URL=sqlite:///db.sqlite3
STRIPE_PUBLIC_KEY=your-stripe-public-key
STRIPE_SECRET_KEY=your-stripe-secret-key
GOOGLE_MAPS_API_KEY=your-google-maps-key
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
Usage
For Homeowners
- Register as a homeowner
- Browse available services
- Select service provider based on ratings
- Book a service with preferred date/time
- Make payment through integrated gateway
- Chat with service provider
- Rate and review after service completion
For Service Providers
- Register as a service provider
- Complete profile with skills and availability
- Receive booking requests
- Accept/decline bookings
- View optimized route for multiple bookings
- Complete service and collect payment
- Build reputation through ratings
For Admins
- Access admin panel at
/admin
- Manage users, services, and bookings
- Monitor transactions and payments
- Handle disputes and support tickets
- Generate reports and analytics
Key Models
User Profile
class UserProfile(models.Model):
user = models.OneToOneField(User)
user_type = models.CharField(choices=[('homeowner', 'Homeowner'), ('provider', 'Provider')])
phone = models.CharField(max_length=15)
address = models.TextField()
profile_picture = models.ImageField()
Service
class Service(models.Model):
provider = models.ForeignKey(UserProfile)
title = models.CharField(max_length=200)
category = models.CharField(max_length=100)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
average_rating = models.FloatField(default=0.0)
Booking
class Booking(models.Model):
service = models.ForeignKey(Service)
homeowner = models.ForeignKey(UserProfile)
scheduled_date = models.DateTimeField()
status = models.CharField(choices=BOOKING_STATUS)
total_amount = models.DecimalField()
payment_status = models.CharField()
Learning Outcomes
- Django Framework: Master MTV architecture and Django ORM
- User Authentication: Implement secure login/registration systems
- Database Design: Create normalized database schemas
- RESTful APIs: Build API endpoints for mobile integration
- Real-Time Features: Implement WebSocket communication
- Payment Integration: Work with third-party payment APIs
- Frontend Development: Create responsive user interfaces
- Deployment: Learn to deploy Django applications
- Testing: Write unit and integration tests
- Security: Implement security best practices
Advanced Features to Add
- Mobile app using Django REST Framework
- Push notifications
- Advanced search with filters
- Service provider verification system
- Subscription plans for premium features
- Multi-language support
- Analytics dashboard
- Automated scheduling
- SMS notifications
- Social media login integration
Notes
- Ensure all environment variables are properly configured before running
- Use PostgreSQL for production deployment
- Enable Django security features in production (HTTPS, CSRF, etc.)
- Regularly backup database and media files
- Test payment integration in sandbox mode before going live
- Follow Django coding standards and best practices
- Use version control (Git) throughout development
Resources
Support
Ideal for:
- Computer Science final year projects
- Web development portfolio projects
- Learning full-stack development
- Understanding marketplace platforms
- Practical Django experience
This project provides hands-on experience with real-world web application development and is perfect for students looking to build a comprehensive understanding of modern web technologies.