CineWhisper is a robust backend system for a movie recommendation web application. This project is designed to simulate real-world backend development scenarios with a strong focus on performance, security, and modular architecture.
- Movie Recommendations API:
- Fetch trending movies and personalized recommendations by integrating with TMDb.
- Robust error handling and caching using Redis.
- User Management:
- JWT-based authentication for secure access.
- Endpoints for user registration, login, and managing favorite movies.
- First-Time User Experience:
- New users receive default recommendations (e.g., popular movies) before setting personal preferences.
- Database Optimization:
- Optimized PostgreSQL schema and queries.
- API Documentation:
- Interactive Swagger/OpenAPI documentation for easy integration.
- Security:
- Secure token management and role-based permissions.
├ core/
├ movies/
├ users/
├ docs/
├ manage.py
├ requirements.txt
├ .env
└ README.md- Backend: Python 3.12, Django 4.2
- API Framework: Django REST Framework (DRF)
- Database: PostgreSQL
- Caching: Redis
- Authentication: JWT (using Simple JWT)
- Documentation: Swagger/OpenAPI
- Python 3.12+
- PostgreSQL
- Redis
- Virtual Environment (e.g., venv)
- (Optional) Docker & Docker Compose
# Clone the repository
git clone https://github.com/yourusername/CineWhisper.git
cd CineWhisper
# Copy the environment variables file
cp .envs/.env.example .env
# Build Docker images and start the containers
docker-compose up --build -d
# Run database migrations
docker-compose exec web python manage.py migrate
# Create a superuser for admin access
docker-compose exec web python manage.py createsuperuser# Clone the repository
git clone https://github.com/yourusername/CineWhisper.git
cd CineWhisper
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment variables
cp .envs/.env.example .env
# Run migrations
python manage.py migrate
# Create a superuser for admin access
python manage.py createsuperuser
# Start the development server
python manage.py runserverInteractive API documentation is available at:
- Swagger UI: http://localhost:8000/api/docs/swagger/
- ReDoc: http://localhost:8000/api/docs/redoc/
A live version of CineWhisper is hosted at:
- CineWhisper Live: https://cinewhisper.up.railway.app
Contributions are welcome! To contribute:
- Fork the repository.
- Create your feature branch:
git flow feature start <feature-name>
- Commit Your Changes
git add . git commit -m "feat: describe your changes"
- Push Your Branch to your fork
git push origin feature/<feature-name>
- Open a Pull Request On GitHub, open a pull request from your feature branch into the develop branch of the main repository.
This project is licensed under the MIT License.
For support or any questions, please email ajiboseibrahim12@gmail.com or open an issue in the repository.