Comprehensive guide to the Novustell Travel Django project architecture, user flows, and administrative features.
Novustell Travel is a comprehensive Django-based travel booking platform designed for East African tourism, featuring destination management, package booking, and specialized travel services.
Form Validation: No validation required at this stage
Validation Rules:
Error Handling: Invalid selections show inline errors
Validation: Real-time validation with error messages
Actions: Edit any section or confirm booking
Result: Guest becomes registered user
Field | Type | Required | Validation Rules | Error Messages |
---|---|---|---|---|
Full Name | Text | Yes | 2-100 characters, letters and spaces only | "Please enter your full name" |
Yes | Valid email format, max 254 characters | "Please enter a valid email address" | ||
Phone Number | Text | Yes | International format (+country code) | "Please enter a valid phone number" |
Travel Date | Date | Yes | Future date, within 2 years | "Please select a valid travel date" |
Adults Count | Number | Yes | 1-20 adults | "Please select number of adults (1-20)" |
Children Count | Number | No | 0-15 children | "Maximum 15 children allowed" |
Rooms Count | Number | Yes | 1-10 rooms | "Please select number of rooms (1-10)" |
Terms Acceptance | Checkbox | Yes | Must be checked | "Please accept terms and conditions" |
Error Scenario | Detection Method | Recovery Action | User Experience |
---|---|---|---|
Session Timeout | Session expiry check | Redirect to package selection | Friendly message with restart option |
Corrupted Data | Data validation on load | Clear corrupted data, restart step | Error message with guidance |
Missing Package | Package existence check | Clear cart, redirect to packages | Package unavailable notification |
Invalid Quantities | Form validation | Reset to minimum valid values | Inline validation messages |
Network Issues | AJAX error handling | Retry mechanism with backoff | Loading indicators and retry buttons |
Security Feature | Status | Implementation |
---|---|---|
Secure Cookies | โ Enabled | HTTPS-only transmission |
HttpOnly Cookies | โ Enabled | JavaScript access blocked |
Session Timeout | โ Configured | 24-hour expiration |
Session Regeneration | โ ๏ธ Partial | On login only |
Session Fixation | โ Protected | Django built-in protection |
Protection Method | Status | Coverage |
---|---|---|
CSRF Middleware | โ Active | All POST requests |
CSRF Tokens | โ Required | All forms |
AJAX Protection | โ Implemented | X-CSRFToken header |
SameSite Cookies | โ Configured | Lax policy |
Referer Checking | โ Enabled | Django default |
Vulnerability | Risk Level | Current Status | Mitigation Strategy | Priority |
---|---|---|---|---|
Missing 2FA | Medium | Not implemented | Implement TOTP-based 2FA | Medium |
Session regeneration | Medium | Partial implementation | Regenerate on privilege changes | Medium |
Rate limiting | Medium | Basic implementation | Implement comprehensive rate limiting | Medium |
File upload security | Low | Uploadcare handles security | Additional validation layers | Low |
Admin interface exposure | Low | Protected by authentication | Consider IP whitelisting | Low |
Purpose: Manages travel-related content including destinations, packages, and accommodations.
Purpose: Content management system for travel blogs and articles.
Purpose: User management, authentication, and booking system.
Complete user flow diagram showing guest, registered user, and admin journeys
Users must register and login to access booking functionality, ensuring secure transactions and personalized experiences.
Different inquiry forms route users to appropriate specialized services (MICE, Student, NGO travel).
/admin/
with your administrator credentials.
The admin interface uses CKEditor for rich text content creation across destinations, packages, and blog posts.
Variable | Purpose | Example Value | Required | Environment |
---|---|---|---|---|
SECRET_KEY |
Django cryptographic signing | django-insecure-xyz... | Yes | All |
DATABASE_URL |
Database connection string | postgresql://user:pass@host:port/db | Yes | Production |
EMAIL_HOST_USER |
SMTP authentication username | dedeexpeditions@gmail.com | Yes | Production |
EMAIL_HOST_PASSWORD |
Gmail app password | iagt yans hoyd pavg | Yes | Production |
UPLOADCARE_PUBLIC_KEY |
Uploadcare image service | demopublickey | Yes | All |
UPLOADCARE_SECRET_KEY |
Uploadcare authentication | demosecretkey | Yes | All |
SITE_URL |
Base site URL for links | https://novustelltravel.onrender.com | Recommended | Production |
WHATSAPP_PHONE |
WhatsApp contact number | +254701363551 | Optional | All |
SENTRY_DSN |
Error monitoring service | https://sentry.io/dsn/... | Optional | Production |
Impact: 40-60% faster page loads
Impact: 70-80% faster repeat visits
Phase | Duration | Priority Features | Expected Impact | Resources Required |
---|---|---|---|---|
Phase 1 Security & Performance |
2-3 weeks | Rate limiting, caching, database optimization | 50% performance improvement | 1 Backend Developer |
Phase 2 Payment Integration |
3-4 weeks | Stripe, M-Pesa, PayPal integration | Complete booking automation | 1 Full-stack Developer |
Phase 3 User Experience |
4-5 weeks | PWA, live chat, recommendations | 30% conversion increase | 1 Frontend + 1 Backend Developer |
Phase 4 Analytics & Automation |
2-3 weeks | Analytics, chatbot, email automation | Data-driven optimization | 1 Developer + Marketing |