Cinemate is a dynamic web application designed to empower movie enthusiasts to discover, review, and curate their favorite films. Built using Django for a robust backend and JavaScript for a fluid frontend experience, it leverages the TMDB API to provide a rich, up-to-date movie database.
- Key Features
- Technologies Employed
- User Interface and Branding
- Installation
- Deployment
- Usage
- Manual Testing
- Static Analysis Reports
- Future Enhancements
- Credits
- License
- Rich Movie Discovery: Explore comprehensive movie details, including plot summaries, cast information, ratings, and trailers, all powered by the TMDB API, enabling users to make informed viewing choices.
- Real-Time Review System: Contribute to a vibrant community by submitting and editing movie reviews dynamically with AJAX, fostering user engagement and providing valuable insights.
- Intuitive Star Ratings: Express opinions quickly and visually with an interactive star rating system, enhancing user feedback and movie evaluation.
- Secure User Authentication: Enjoy a personalized and secure experience with robust user authentication, protecting user data through signup, login, and logout functionalities.
- Personalized Movie Collections: Curate your own movie library by adding films to a favorites list, enabling quick access and personalized recommendations.
- Dark Mode Toggle: Easily switch between light and dark themes for enhanced user experience and accessibility.
- Seamless Responsive Design: Experience optimal viewing and interaction across desktops, tablets, and mobile phones, ensuring a consistent user experience.
- Frontend: HTML, CSS, and JavaScript with AJAX to create a dynamic and interactive user interface, delivering a smooth, single-page application-like feel.
- Backend: Django framework for its robust ORM, built-in security features, and efficient database management, powered by Python for clean and powerful server-side logic.
- Database: SQLite for development and PostgreSQL for production, ensuring scalability and data integrity, with Django's ORM facilitating seamless database interactions.
- APIs: TMDB API integration for fetching up-to-date movie information, enriching the application with a vast movie database.
- Logo: Created using VistaPrint, reflecting the application's modern and user-friendly design.
- Hero Image: Sourced from Unsplash, providing a visually appealing backdrop for movie discovery.
- Clone the repository:
git clone https://github.com/Aziz-Ibrahim/cinemate cd cinemate
- Create a virtual environment:
python -m venv env source env/bin/activate # On Windows: env\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Set environment variables (.env):
SECRET_KEY=your-secret-key TMDB_API_KEY=your-tmdb-api-key
- Apply database migrations:
python manage.py migrate
- Run the development server:
Open http://127.0.0.1:8000 in a browser.
python manage.py runserver
- Run locally using VS Code and the Django development server (see Installation).
- Install Heroku CLI:
or
curl https://cli-assets.heroku.com/install.sh | sh # macOS/Linux
pip install heroku-cli # Windows
- Login to Heroku:
heroku login
- Create a Heroku app:
heroku create cinemate-app
- Add PostgreSQL database:
heroku addons:create heroku-postgresql:hobby-dev
- Set environment variables:
heroku config:set SECRET_KEY=your-secret-key heroku config:set TMDB_API_KEY=your-tmdb-api-key
- Deploy to Heroku:
git push heroku main
- Run database migrations:
heroku run python manage.py migrate
- Open the app:
heroku open
- Create an account or log in to submit reviews and personalize your experience.
- Search for movies and explore detailed information.
- Leave reviews and rate movies to share your opinions.
- Edit or delete reviews dynamically, ensuring your voice is heard.
- Add movies to your favorites for easy access and personalized recommendations.
Feature | Test Description | Status |
---|---|---|
User Authentication | ||
Sign Up | Register with valid credentials and verify redirection to the login page. | ✅ Successful |
Login | Enter valid credentials and confirm redirection to the homepage. | ✅ Successful |
Logout | Click the logout button and ensure return to the login page. | ✅ Successful |
Movie Search and Details | ||
Search | Ensure movie search results display dynamically. | ✅ Successful |
Movie Details | Verify that movie details pages load correctly. | ✅ Successful |
Trailers and Providers | Confirm that correct trailer and provider information is displayed. | ✅ Successful |
Review System | ||
Submit Review | Ensure that reviews are submitted dynamically without requiring a page reload. | ✅ Successful |
Edit Review | Verify that review edits update dynamically. | ✅ Successful |
Delete Review | Confirm that reviews are removed dynamically. | ✅ Successful |
Favorites | ||
Add to Favorites | Ensure that movies are added to favorites and the UI updates accordingly. | ✅ Successful |
Remove from Favorites | Verify that removing movies from favorites is reflected in the UI. | ✅ Successful |
Favorites Page | Confirm that added movies appear correctly on the favorites page. | ✅ Successful |
Responsiveness | ||
Mobile and Tablet Testing | Ensure that the application is fully responsive across mobile and tablet devices. | ✅ Successful |
Browser Compatibility | Verify consistency and functionality across Chrome, Firefox, and Edge browsers. | ✅ Successful |
Dark Mode Toggle | ||
Theme Toggle | Ensure that switching themes updates page colors and images dynamically. | ✅ Successful |
This project incorporates static analysis to ensure code quality and adherence to best practices. The following reports were generated and are available in the docs
directory for review:
- PEP 8 Linter Report
- HTML Markup Validation Report
- CSS Markup Validation Report
- JavaScript JSHint Report
Additionally:
Feature | Description | Status |
---|---|---|
Bookmark Movies | Include bookmarking movies besides adding to favorites | 🔄 Planned |
- Developed with the assistance of AI tools like ChatGPT and Gemini, which played a crucial role in debugging and resolving complex coding challenges, significantly expediting the development process.
- This project is open-source and available under the MIT License.