This project is currently under active development, focusing on building a robust movie database platform with Django. The backend is designed with best practices and modern architecture, while the frontend utilizes Django templates with dynamic JavaScript enhancements.
- Enhancing the movie rating system
- Implementing user reviews and comments
- Adding advanced search and filtering capabilities
- Optimizing server-side rendering performance
- Implementing category-based movie browsing
This is a modern IMDb clone built with Django and Django Rest Framework, featuring a robust backend API and server-side rendered frontend. The project demonstrates modern web development practices including containerization, CI/CD, and cloud integration, with a focus on performance and scalability.
-
Authentication & Authorization
- JWT-based authentication system
- Custom user model with email-based authentication
- Role-based access control
-
Movie Management
- Comprehensive movie information storage
- Multiple category support for each movie
- Advanced rating system with user scores
- Cloud-based image handling with Cloudinary
-
Frontend Features
- Server-side rendering with Django Templates
- Dynamic content loading with vanilla JavaScript
- Responsive design with Bootstrap
- Modern UI with CSS animations
-
Performance & Scaling
- Redis caching for improved performance
- Rate limiting and throttling
- Asynchronous task processing with Celery
- Containerized with Docker for easy scaling
-
Security & Quality
- Comprehensive test coverage
- CI/CD pipeline with GitHub Actions
- Code quality enforcement with linting
- Secure media handling with Cloudinary
- Python 3.9
- Django 4.2
- Django REST Framework
- PostgreSQL
- Redis
- Celery
- JWT Authentication
- Django Templates
- Bootstrap 5
- Vanilla JavaScript
- CSS3 with modern features
- Cloudinary (Media Storage)
- Redis (Caching & Message Broker)
- Docker & Docker Compose
- GitHub Actions
- Flake8, Black, and isort for code quality
- Pytest for testing
git clone https://github.com/your-username/imdb-clone.git
cd imdb-clone
Make sure to have Python 3.9+ and Docker installed. Then install the project dependencies:
pip install -r requirements.txt
Create a .env file in the root directory with the following content:
SECRET_KEY=your_secret_key
DEBUG=True
DB_NAME=your_db_name
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_HOST=localhost
DB_PORT=5432
CELERY_BROKER_URL=redis://redis:6379/0
CLOUDINARY_CLOUD_NAME=your_cloud_name
CLOUDINARY_API_KEY=your_api_key
CLOUDINARY_API_SECRET=your_api_secret
Build and run the Docker containers. This command will set up the Django application, PostgreSQL database, and Redis server.
docker-compose up --build
Once the containers are up, run the migrations:
docker-compose exec web python manage.py migrate
The application will be available at http://localhost:8000/.
To access the Django admin panel, create a superuser:
docker-compose exec web python manage.py createsuperuser
Continuous Integration (CI) ensures that every code change is automatically tested and linted, maintaining code quality and preventing bugs. Continuous Deployment (CD) will be implemented in the future to automate the deployment process.
This project uses GitHub Actions to manage continuous integration (CI) and continuous deployment (CD) processes. Code quality is checked with Flake8, Black, and isort on every pull request. Tests are run integrated with PostgreSQL on every code update.
The CI process includes the following steps:
- Running tests.
- Linting and code quality checks.
- Testing database configurations.
For detailed CI/CD configuration, you can refer to the .github/workflows/ci.yml
and .github/workflows/lint.yml
files.
Currently, there is no deployment pipeline. This project is focused on the development and testing phase, with Dockerized local development and CI integration through GitHub Actions.
The most recent update to the project includes integrating Cloudinary for handling media storage. Now, images can be uploaded and stored securely in Cloudinary, instead of being saved locally.
- β Basic movie CRUD operations
- β User authentication with JWT
- β Category management system
- β Rating system implementation
- π§ User reviews and comments
- π§ Advanced search functionality
- π Movie watchlist feature
- π Personalized recommendations
- π Enhanced category filtering
- π Performance optimizations
- π User profile customization
- π Email notification system
- π Advanced caching strategies
- π Admin dashboard improvements
- π Content moderation tools
- Enhanced Search: Implementing advanced search functionality with filters
- User Profiles: Adding detailed user profiles with watching history
- Category System: Improving the movie categorization system
- Performance: Implementing additional caching strategies
- UI Improvements: Enhancing the user interface with modern design patterns
We welcome contributions! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated. Please check our Contributing Guidelines for more details.
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- IMDb for inspiration
- Django community for excellent documentation
- All contributors who help improve this project