A modern full-stack travel booking web application built with Django and upgraded into a production-ready hybrid backend using Django REST Framework (DRF), PostgreSQL, JWT Authentication, and OpenAPI Documentation.
The project allows users to explore destinations, browse travel packages, make reservations, complete payments, and manage bookings through both a traditional Django web interface and a fully documented REST API.
Unlike a traditional Django application, Woox Travel combines both server-rendered HTML pages and REST APIs within the same project.
Woox Travel
┌─────────────────────────┐
│ Django Backend │
└────────────┬────────────┘
│
┌──────────────┴──────────────┐
│ │
│ │
HTML Website REST API (DRF)
(Session Auth) (JWT Auth)
│ │
└──────────────┬──────────────┘
│
PostgreSQL Database
- User Registration
- Secure Login & Logout
- Password Reset via Email
- JWT Authentication (API)
- Session Authentication (Website)
- User Profile Management
- Explore Cities & Tourist Destinations
- Browse Travel Packages
- Multiple Package Plans
- Silver
- Gold
- Platinum
- Day-wise Tour Itinerary
- Image Gallery
- Responsive Search & Filtering
- Book Travel Packages
- Reservation Dashboard
- Edit Reservations
- Cancel Reservations
- User-specific Booking History
- Owner-only Reservation Access
- Secure Payment Workflow
- Invoice Generation
- Payment Receipt Storage
- Payment Confirmation Email
- Reservation Status Updates
- Duplicate Payment Protection
- Django Authentication
- JWT Authentication
- Object-Level Permissions
- Role-based Access
- Session Authentication
- Password Hashing
- CSRF Protection
- Token Rotation
- Refresh Token Blacklisting
Fully developed REST backend using Django REST Framework
- Authentication API
- Cities API
- Best Offers API
- Reservation API
- Payment API
Interactive API documentation powered by drf-spectacular
- Swagger UI
- ReDoc
- OpenAPI 3.0 Schema
Customized Django Admin using Jazzmin
- Travel Package Management
- Reservation Management
- Payment Management
- City Management
- User Management
- Python
- Django 5
- Django REST Framework
- HTML5
- CSS3
- Bootstrap 5
- JavaScript
- PostgreSQL
- Django Session Authentication
- JWT Authentication (SimpleJWT)
- Django REST Framework
- drf-spectacular
- OpenAPI 3.0
- Swagger UI
- ReDoc
- Django Jazzmin
- django-filter
- django-autoslug
- TinyMCE
- Pillow
- psycopg2
- python-dotenv
woox_travel/
│
├── best_offers_about/
├── best_offers_deals/
├── cities_towns_about/
├── paginator/
├── payment/
├── register/
├── service/
├── user_reservations/
├── visit_places_home/
│
├── templates/
├── static/
├── media/
├── docs/
│
├── woox_travel/
├── manage.py
├── requirements.txt
└── README.md
- Hybrid Django Architecture
- PostgreSQL Database
- Django REST Framework APIs
- JWT Authentication
- Session Authentication
- Swagger Documentation
- OpenAPI Schema
- Filtering
- Searching
- Ordering
- Pagination
- Object-Level Permissions
- Email Notifications
- Responsive UI
POST /api/v1/auth/register/
POST /api/v1/auth/login/
POST /api/v1/auth/logout/
GET /api/v1/auth/profile/
PUT /api/v1/auth/profile/
POST /api/v1/token/
POST /api/v1/token/refresh/
POST /api/v1/token/verify/
GET /api/v1/cities/
GET /api/v1/cities/{id}/
GET /api/v1/cities/places/
GET /api/v1/cities/places/{id}/
GET /api/v1/best-offers/
GET /api/v1/best-offers/{id}/
Supports:
- Filtering
- Searching
- Ordering
- Pagination
GET
POST
PUT
PATCH
DELETE
/api/v1/reservations/
GET
POST
/api/v1/payments/
After running the project:
http://127.0.0.1:8000/api/docs/
Swagger UI
http://127.0.0.1:8000/api/redoc/
ReDoc
http://127.0.0.1:8000/api/schema/
OpenAPI Schema
git clone https://github.com/s-panchal77/woox-travel.git
cd woox-travel
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux / macOS
source .venv/bin/activate
pip install -r requirements.txtCreate a .env file in the project root.
SECRET_KEY=your-secret-key
DEBUG=True
DB_NAME=your_database
DB_USER=your_username
DB_PASSWORD=your_password
DB_HOST=localhost
DB_PORT=5432
EMAIL_HOST_USER=your_email@gmail.com
EMAIL_HOST_PASSWORD=your_app_passwordpython manage.py migratepython manage.py runserver- ✅ PostgreSQL Migration Completed
- ✅ Django REST Framework Integrated
- ✅ JWT Authentication Implemented
- ✅ Swagger Documentation Added
- ✅ REST APIs Completed
- ✅ Owner-Level Permissions
- ✅ Email Integration
- ✅ Responsive Website
- ✅ Hybrid Architecture (HTML + REST API)
- React Frontend
- Docker Support
- Redis Caching
- Celery Background Tasks
- Razorpay Integration
- AWS S3 Storage
- GitHub Actions CI/CD
- Nginx + Gunicorn Deployment
Sarthak Panchal
Backend Developer
Python • Django • Django REST Framework • PostgreSQL • REST APIs • JWT Authentication
⭐ If you found this project useful, consider giving it a Star on GitHub.