<<<<<<< HEAD
A Django-based travel application that helps users discover and book travel experiences. This project is part of the ALX Software Engineering Program.
-
User Management
- Secure authentication and authorization
- User profiles with customizable settings
- Role-based access control (Hosts and Guests)
-
Property Listings
- Detailed property information
- High-quality image galleries
- Amenities and facilities listing
- Location-based search
- Price filtering and sorting
-
Booking System
- Real-time availability checking
- Secure payment processing
- Booking management dashboard
- Email notifications
- Booking history
-
Review System
- User ratings and reviews
- Host responses
- Review moderation
- Rating analytics
-
Search & Discovery
- Advanced search filters
- Location-based recommendations
- Popular destinations
- Recently viewed properties
-
Backend
- Python 3.8+
- Django 4.2+
- Django REST Framework
- PostgreSQL
- Celery (for async tasks)
-
Frontend
- Bootstrap 5
- Font Awesome
- JavaScript/jQuery
- AJAX for dynamic content
-
Development Tools
- Git for version control
- Docker for containerization
- pytest for testing
- Black for code formatting
- Python 3.8 or higher
- pip (Python package manager)
- PostgreSQL database
- Virtual environment (recommended)
- Git
- Clone the repository:
git clone https://github.com/yourusername/alx_travel_app.git
cd alx_travel_app- Create and activate a virtual environment:
# On Windows
python -m venv venv
venv\Scripts\activate
# On macOS/Linux
python3 -m venv venv
source venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Set up environment variables:
Create a
.envfile in the project root:
DEBUG=True
SECRET_KEY=your-secret-key
DATABASE_URL=postgresql://user:password@localhost:5432/alx_travel_app
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=[email protected]
EMAIL_HOST_PASSWORD=your-app-password- Database setup:
python manage.py migrate
python manage.py createsuperuser
python manage.py seed # Optional: Seed the database with sample data- Run the development server:
python manage.py runserverThe application will be available at http://localhost:8000
alx_travel_app/
├── alx_travel_app/ # Project settings
│ ├── settings.py # Project configuration
│ ├── urls.py # Main URL routing
│ └── wsgi.py # WSGI configuration
├── listings/ # Property listings app
│ ├── models.py # Database models
│ ├── serializers.py # API serializers
│ ├── views.py # View logic
│ ├── urls.py # URL routing
│ └── tests/ # Test cases
├── bookings/ # Booking management
├── reviews/ # Review system
├── users/ # User management
├── templates/ # HTML templates
├── static/ # Static files
└── media/ # User-uploaded files
POST /api/auth/register/- User registrationPOST /api/auth/login/- User loginPOST /api/auth/logout/- User logout
GET /api/listings/- List all propertiesPOST /api/listings/- Create new listingGET /api/listings/{id}/- Get listing detailsPUT /api/listings/{id}/- Update listingDELETE /api/listings/{id}/- Delete listing
GET /api/bookings/- List all bookingsPOST /api/bookings/- Create new bookingGET /api/bookings/{id}/- Get booking detailsPUT /api/bookings/{id}/- Update booking status
GET /api/reviews/- List all reviewsPOST /api/reviews/- Create new reviewGET /api/reviews/{id}/- Get review details
Run the test suite:
python manage.py test- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow PEP 8 guidelines
- Use meaningful variable and function names
- Write docstrings for all functions and classes
- Keep functions small and focused
- Write unit tests for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- ALX Software Engineering Program
- Django Documentation
- Django REST Framework Documentation
- Bootstrap Documentation
- Font Awesome
For support, email [email protected] or create an issue in the repository.
cc38bd0d621101645837a9b626bfaac778b2ee12