NetFix is a Django-based web app that connects customers with service companies (e.g., plumbing, electricity, carpentry). Customers can browse services and request appointments; companies can create services and manage incoming requests via a dashboard.
- Provide simple onboarding for two roles: Customer and Company
- Let companies publish services with category, description, and hourly price
- Let customers request a service for a given date/time and duration
- Track service requests with status: pending, accepted, rejected
- Offer a company dashboard to accept or reject requests
- Display most requested services
- Python 3.x, Django 1.11.x
- SQLite (default) for local development
- Django templates, messages framework
netfix/: project settings and root URL routingmain/: homepage and custom error views/templatesusers/: customUser,Customer,Companymodels, registration and loginservices/:ServiceandServiceRequestmodels, listing, creation, requests, dashboardstatic/: static assets (CSS/images)templates/: app-specific templates undermain/,users/,services/
users.User: extends Django user withis_company,is_customer, and uniqueemailusers.Customer: one-to-one withUser, storesbirthusers.Company: one-to-one withUser, storesfieldandratingservices.Service: belongs toCompany; fields includename,description,price_hour,field,ratingservices.ServiceRequest: belongs toCustomerandService; includes address, date/time, duration, computedprice, andstatus
- Registration flows for Customers and Companies
- Email-based login (maps to username under the hood)
- Service creation with field/category restrictions by company type
- Customer service requests with validation and total price calculation
- Company dashboard to accept/reject requests
- Most requested services view
/→ main homepage/users/→ registration and loginusers:''→ register landingcompany/→ company registrationcustomer/→ customer registrationlogin/→ login
/services/→ service browsing and actions''→ services listcreate/→ create a new service (company only)company/dashboard/→ manage requests (company only)most-requested/→ top requested services<int:id>→ single service page<int:id>/request_service/→ request a service (customer only)<slug:field>/→ list services by field/category (slug)
- Profiles
/customer/<slug:name>→ customer profile (self-only)/company/<slug:name>→ company profile (self-only)
Custom 403, 404, 500 pages are provided under main/templates/main/ and wired in netfix/urls.py.
- Prerequisites
- Python 3.x
- pip, virtualenv (recommended)
- Clone and create a virtual environment
git clone <your-fork-or-repo-url>
cd netfix
python3 -m venv .venv
source .venv/bin/activate- Install dependencies
pip install -r requirements.txtIf requirements.txt is missing, install minimal versions:
pip install "Django==1.11.29"- Database migrations
python manage.py migrate- Create a superuser (optional, for admin)
python manage.py createsuperuser- Run the server
python manage.py runserver- Access the app
- App:
http://127.0.0.1:8000/ - Admin:
http://127.0.0.1:8000/admin/
- Register a Company and a Customer from the UI:
http://127.0.0.1:8000/users/→ choose Company or Customer
- As a company, create a service at
/services/create/ - As a customer, request a service at
/services/<id>/request_service/
- Customer
- Register and log in
- Browse
/services/, open a service, request a date/time/duration - View own profile at
/customer/<your-username>(includes requests list)
- Company
- Register and log in
- Create services at
/services/create/(field restrictions apply) - Manage incoming requests at
/services/company/dashboard/
DEBUG=Truein local settings; change toFalsefor production- Logging writes to
django.logat project root - Static files are served from
/static/during development; seeSTATICFILES_DIRS - Database: SQLite (
db.sqlite3) by default
Run unit tests (if any are added):
python manage.py test- Login uses email field but authenticates via username internally; ensure the email exists
- Ensure you’re logged in with the correct role for restricted views
- For date/time validation errors when requesting services, verify formats and future dates
- Keep
SECRET_KEYout of source control for production - Set
DEBUG=Falseand configureALLOWED_HOSTSin production - Use HTTPS and set
SESSION_COOKIE_SECURE/CSRF_COOKIE_SECURE=Truein production