Skip to content

Latest commit

Β 

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

β˜‘οΈ ServiGo

Home Services & EV Charging Booking Platform

A full-featured web application that connects customers with verified local service professionals β€” electricians, plumbers, and Smart TV experts β€” alongside a live network of EV charging stations with slot booking. Built on Django 5.2 with role-based dashboards for customers, staff, and administrators.

Python Django Bootstrap SQLite PostgreSQL License

ServiGo home page β€” hero, search, featured services and EV charging


πŸ“– Project Overview

ServiGo simplifies the way people manage home maintenance and electric vehicle charging β€” through a single, user-friendly platform.

Customers can quickly book professional services such as electrical repairs, plumbing, and Smart TV maintenance, or reserve a slot at a nearby EV charging station. Staff and administrators get powerful tools to manage bookings, services, customers, and operational workflows β€” all from dedicated role-based dashboards.

Built with Django and Bootstrap 5, ServiGo focuses on usability, security, and maintainability while demonstrating a practical implementation of authentication, CRUD operations, email notifications, role-based access control, and responsive web design.


✨ Key Features

Area Feature What it does
πŸ” Authentication Secure registration & login Email-or-username login with a custom User model (email as the unique identifier)
πŸ” Authentication Role-based access Customers, staff, and administrators each get their own portal and permissions
πŸ” Authentication Password reset Self-service recovery via email
πŸ› οΈ Services Service catalogue Browse electrical, plumbing, and Smart TV services with detailed pricing
πŸ› οΈ Services Category pages Dedicated pages per service category
πŸ“… Bookings Service booking flow Date, time, location and notes with a live price summary
πŸ“… Bookings Email confirmation Customers receive booking confirmations by email
πŸ“… Bookings Status workflow Pending β†’ Confirmed β†’ Completed (or Cancelled) with audit history
⚑ EV Charging Station search Find stations by name, address, city, state, or pincode
⚑ EV Charging Filters Charger-type and price filters plus an available-only toggle
⚑ EV Charging Slot booking Reserve charging slots with Google Maps location integration
πŸ“Š Dashboards Customer dashboard Upcoming service and EV bookings at a glance
πŸ“Š Dashboards Staff dashboard Today's bookings and operational workload
πŸ“Š Dashboards Admin dashboard Full-platform stats with recent service and EV bookings
πŸ“§ Contact Contact form Inquiry form with email notifications

πŸ‘€ User Roles

Role What they can do
Customer Browse services and EV stations, book appointments, manage their own bookings, and view booking history
Staff View and manage service bookings, update booking statuses, and monitor daily service operations
Admin Full administrative control β€” manage users, services, stations, bookings, and view platform-wide analytics

Note: Only customer and staff can self-register through the public form. Admin accounts are created only via seed_demo or the Django admin panel β€” preventing self-service privilege escalation.


πŸ› οΈ Technology Stack

Category Technologies
Backend Python 3.12, Django 5.2
Frontend HTML5, CSS3, Bootstrap 5, JavaScript
Database SQLite (development) Β· PostgreSQL (production, via DATABASE_URL)
Authentication Custom User model Β· email-or-username backend
Forms Django Crispy Forms Β· Crispy Bootstrap 5
Configuration django-environ (environment variables)
Media / Assets Pillow, Django static & media handling
Dev Tooling django-browser-reload
Deployment Ready Virtual environments, .env configuration

πŸ”„ Core Workflows

                Client Browser
                      β”‚
                      β–Ό
           Bootstrap 5 Responsive UI
                      β”‚
                      β–Ό
              Django URL Routing
                      β”‚
                      β–Ό
             Django Views & Logic
      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
      β–Ό               β–Ό                β–Ό
 Authentication  Booking Module   EV Charging
      β”‚               β”‚                β”‚
      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β–Ό
                SQLite / PostgreSQL
                      β”‚
                      β–Ό
            Email Notifications

Service booking flow

Browse Services β†’ Select a Service β†’ Fill Date/Time & Location
    β†’ Book β†’ Confirmation Email β†’ Track Status in Dashboard

EV charging flow

Search Stations β†’ Filter by Location/Charger/Price β†’ View Station Details
    β†’ Pick a Slot β†’ Confirm β†’ Manage Booking in Dashboard

πŸ“Έ Screenshots

🏠 Landing Page

ServiGo home page
Home page β€” hero, search, and featured services

πŸ” Authentication

Login page Registration page
Secure login and role-based registration

πŸ“ Service Booking

Service booking form
Schedule a visit β€” date, time, location, and booking summary

Booking success Booking details
Booking confirmation and detailed booking view

⚑ EV Charging

EV station details EV booking form
Station details and charging slot booking

πŸ‘¨β€πŸ’Ό Staff Dashboard

Staff dashboard Staff bookings list
Operational overview and booking management

πŸ›‘οΈ Admin Panel

Admin booking history
Booking status histories in the Django admin

πŸ“§ Contact & About

Contact page About page
Contact form and about page


πŸ“‚ Project Structure

ServiGo/
β”œβ”€β”€ accounts/          # Custom User, authentication, registration, profiles
β”œβ”€β”€ services/          # Service categories & catalogue, image handling
β”œβ”€β”€ bookings/          # Service bookings, status workflow & history
β”œβ”€β”€ ev_charging/       # EV stations & charging slot bookings
β”œβ”€β”€ dashboard/         # Role-based dashboards (customer / staff / admin)
β”œβ”€β”€ core/              # Home, About, Contact & shared context
β”œβ”€β”€ config/            # Django project settings (settings, urls, wsgi)
β”œβ”€β”€ templates/         # Shared + per-app HTML templates
β”œβ”€β”€ static/            # CSS, JS, images
β”œβ”€β”€ media/             # User-uploaded media
β”œβ”€β”€ tests/             # Test suite (per-app packages)
β”œβ”€β”€ scripts/           # Dev helpers (run_dev.ps1)
β”œβ”€β”€ screenshots/       # README screenshots
β”œβ”€β”€ manage.py
β”œβ”€β”€ requirements.txt
└── .env.example

πŸš€ Installation & Setup

Prerequisites: Python 3.12, Git.

# 1. Clone the repository
git clone https://github.com/Aby020/ServiGo.git
cd ServiGo

# 2. Create and activate a virtual environment
python -m venv venv
venv\Scripts\activate          # Windows
# source venv/bin/activate    # macOS / Linux

# 3. Install dependencies
pip install -r requirements.txt

# 4. Configure environment variables
Copy-Item .env.example .env   # Windows PowerShell
# cp .env.example .env        # macOS / Linux

# 5. Apply database migrations
python manage.py migrate

# 6. Seed demo data (categories, services, EV stations, demo users)
python manage.py seed_demo

# 7. Run the development server
python manage.py runserver 127.0.0.1:8004

Open http://127.0.0.1:8004 in your browser.

On Windows you can use the shortcut launcher instead:

.\scripts\run_dev.ps1          # starts on 127.0.0.1:8000

πŸ‘₯ Demo Accounts

seed_demo creates the following accounts:

Role Email Password
Admin admin@servigo.com admin12345
Staff staff@servigo.com staff12345
Customer customer@servigo.com customer12345

πŸ›‘οΈ Create an Admin Account Manually

python manage.py createsuperuser

βš™οΈ Environment Variables

Create a .env file in the project root (or rely on sensible defaults):

Variable Description Default
SECRET_KEY Django secret key β€” set a strong value in production generated dev key
DEBUG Debug mode (True/False) True
ALLOWED_HOSTS Comma-separated allowed hosts localhost,127.0.0.1,testserver
DATABASE_URL Production database URL (e.g. PostgreSQL) SQLite (dev)
EMAIL_HOST / EMAIL_PORT / etc. SMTP settings for booking confirmation emails console email (dev)

πŸ”’ Security

  • Custom User model with email as the unique identifier β€” username login still supported via an email-or-username backend.
  • Role-restricted public registration β€” only customer and staff can sign up through the public form; admin is created only via seed_demo or the Django admin, preventing self-service privilege escalation.
  • Role-based access control β€” staff/admin views are gated by dedicated mixins; dashboards and booking data are filtered per user.
  • Open-redirect protection β€” the login next parameter is validated with url_has_allowed_host_and_scheme.
  • Session-based auth with Django's built-in password hashing.

πŸ—ΊοΈ Roadmap

  • Authentication & registration with role selection
  • Service catalogue and category pages
  • Service booking flow with email confirmation
  • EV charging stations and slot booking
  • Customer, staff, and admin dashboards
  • Booking status workflow with audit history
  • Online payment integration
  • Customer reviews & ratings per service
  • Real-time booking availability
  • Mobile app (React Native / Flutter)

πŸ‘€ Author

Abi Thomas

Full-Stack Developer

🀝 Support

For questions, feature requests, or bug reports, please open an issue on GitHub.

Made with ❀️ by Abi Thomas

About

Location-based home service booking platform connecting customers with service providers. Supports service discovery and booking with Google Maps integration for location-aware home service management.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages