Pawze is a Django pet grooming management platform for salons that need to handle customer bookings, pet records, appointment tracking, staff workflows, and inventory in one place.
It combines:
- a Django-rendered authenticated booking experience for pet owners
- role-based Django pages for customers, groomers, and admins
- a Django REST Framework API for business logic and external integrations
- SQLite for local development
Pawze helps a grooming business manage the full appointment lifecycle:
- customers can register, log in, manage pets, and book appointments
- staff can view schedules and track appointment status
- admins can manage appointments, inventory, staff accounts, and salon operations
The project also supports:
- Django session authentication for server-rendered pages
- JWT authentication for API clients
- role-based access control
- feedback collection for completed appointments
- notification flows for appointment updates
- low-stock inventory visibility
- create an account
- manage pet profiles
- book appointments
- review appointment history
- submit feedback after completed visits
- update personal profile details
- view assigned appointments
- update appointment status
- view inventory in read-only mode
- monitor notifications
- update personal profile details
- create and manage staff accounts
- create, edit, and remove appointments
- manage inventory items
- reset staff passwords
- monitor notifications across the system
- update personal profile details
- Django
- Django REST Framework
- Simple JWT for API authentication
- SQLite for local development
- Server-rendered Django templates
- Static CSS and small vanilla JavaScript helpers
Pawze/
backend/ Django project, settings, API app, and manage.py
frontend/ Django app for templates, static assets, and page views
Backend highlights:
backend/config/contains Django settings, URL config, WSGI, and ASGI entrypointsbackend/api/contains models, serializers, permissions, views, tests, and management commands
Frontend highlights:
frontend/views.pycontains page controllers for landing, booking, auth, and dashboardsfrontend/templates/frontend/contains Django templatesfrontend/static/frontend/contains CSS, images, favicon, and vanilla JavaScriptfrontend/data.pycontains display content used by the landing page
Open the project root:
cd PawzeInstall Python dependencies:
cd backend
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txtRun the Django project:
python manage.py migrate
python manage.py runserverApplication URLs:
http://127.0.0.1:8000/
http://127.0.0.1:8000/book/
http://127.0.0.1:8000/login/
http://127.0.0.1:8000/api/
Pawze uses SQLite out of the box for development.
SQLite is a good choice for now if you are:
- building locally
- testing features
- preparing an MVP
- working alone or with very light concurrent use
Later, you can switch to PostgreSQL for production or heavier multi-user workloads.
The backend reads these optional environment variables when needed:
DJANGO_SECRET_KEYDEBUGALLOWED_HOSTSPOSTGRES_DBPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_HOSTPOSTGRES_PORT
If PostgreSQL variables are not provided, the app uses SQLite automatically.
POST /api/auth/register/POST /api/auth/login/POST /api/auth/token/refresh/POST /api/auth/change-password/GET/PATCH /api/users/me/GET/POST /api/appointments/PATCH /api/appointments/{id}/update_status/POST /api/appointments/{id}/feedback/GET/POST /api/pets/GET/POST /api/inventory/GET/POST /api/notifications/
Use these commands from backend/:
python manage.py check
python manage.py migrate
python manage.py test