A comprehensive movie and television database web application built with Laravel and modern web technologies. Cinema Paradiso provides users with an extensive platform to discover, track, and discuss movies and TV shows while connecting with a community of film enthusiasts.
Discover trending movies, TV shows, and get personalized recommendations
Cinema Paradiso is a full-featured entertainment platform that integrates with The Movie Database (TMDb) API to provide users with access to a vast collection of movies, TV shows, and celebrity information. The application combines content discovery with social features, enabling users to build their personal collections, engage with other members, and stay updated with the latest entertainment news.
Browse curated movie recommendations, trending content, and in-theater releases. Features include movie carousels, celebrity spotlights, and video trailers.
Login & Password Recovery: Secure authentication with email/username login, "Remember Me" functionality, and password reset via email.
User Registration: Create new accounts with username, email, password, and optional bio. Password validation ensures minimum 8 characters.
Profile Customization: Edit personal information including username, email, name, phone, location (country/state), and bio. Upload custom avatars with real-time preview.
Top 5 Favorite Movies: Search and select up to 5 favorite movies to display on your public profile. Visual movie posters with easy selection interface.
Browse Movies: Filter by year, rating, popularity, and genre. Search by keywords with a comprehensive movie database powered by TMDb API.
Movie Details: View comprehensive information including synopsis, ratings, release year, cast, crew, and media. Quick actions to add to collection, like, watchlist, write reviews, and share.
Community Reviews: Read detailed reviews from other users with star ratings and timestamps. Filter by newest, oldest, or highest rated.
Write Reviews: Rate movies with a 10-star system and share your thoughts (minimum 10 characters). Mark if you've watched the movie before.
Cast & Crew Information: Browse complete cast lists, directors, writers, producers, and music composers. Click on any name to view their full filmography.
Media Gallery: Watch trailers, teasers, behind-the-scenes content, and visual trailers. 23+ videos available with subtitled and dubbed versions.
Discover Similar Content: Find movies related to what you're viewing with ratings and quick descriptions.
Community Directory: Browse all members with activity statistics (followers, following, movies watched). Sort by most popular users and view their favorite movies.
Celebrity Profiles: Explore over 4.4 million celebrities with photos, roles, and filmographies. Search by name and sort by popularity.
Latest News: Stay updated with entertainment news from Variety, Deadline, The Guardian, and other sources. Articles include images, publication dates, and source attribution.
- Extensive Movie Database: Browse and search through millions of movies with detailed information including cast, crew, ratings, and reviews
- TV Show Database: Access comprehensive TV series information with season and episode details
- Celebrity Profiles: View detailed information about actors, directors, and other entertainment industry professionals (4.4M+ celebrities)
- Advanced Search: Universal search functionality across movies, TV shows, and celebrities with smart filters
- Genre Filtering: Browse content by specific genres with year and rating filters
- Rich Media: Access 23+ trailers, teasers, behind-the-scenes content, and promotional materials for each title
- Personal Movie Collection: Add and organize movies in your personal library with custom lists
- Watchlist System: Maintain a list of movies and TV shows to watch later
- Reviews and Ratings: Write detailed reviews with 10-star rating system (minimum 10 characters)
- Top 5 Favorites: Showcase up to 5 favorite movies on your profile with visual posters
- Like System: Heart your favorite movies and track what resonates with you
- User Statistics: Track viewing habits, collection statistics, and activity points
- Customizable User Profiles: Personalize profiles with avatars, bio, location, and contact information
- Avatar Upload: Upload custom profile pictures with instant preview (JPEG, PNG, GIF up to 2MB)
- Follow System: Follow other users to stay updated with their movie activity and reviews
- Community Directory: Discover 21+ active members, browse by popularity, and connect with fellow movie enthusiasts
- Direct Messaging: Private chat system with message requests for privacy control
- Activity Tracking: View follower/following lists and user activity streams
- Public Profiles: Share your favorite movies and reviews with the community
- Entertainment News: Aggregated news from Variety, Deadline, The Guardian, and NewsAPI
- Multiple Sources: Quality journalism from trusted entertainment industry sources
- Reddit Integration: Access popular movie discussions from Reddit communities
- Cached Content: Optimized news delivery with 6-hour intelligent caching for fast loading
- Secure Login: Email/username authentication with "Remember Me" functionality
- Password Recovery: Email-based password reset with temporary password generation
- User Registration: Create accounts with validation (8+ character passwords, unique usernames/emails)
- Session Management: Secure session handling with CSRF protection
- Rate Limiting: Protection against abuse on uploads, messaging, and sensitive endpoints
- Framework: Laravel 12.0
- Language: PHP 8.2+
- Database: MySQL/PostgreSQL (configurable)
- Caching: Redis/File-based caching
- Queue System: Laravel Queue with database/Redis driver
- Email: Laravel Mail with multiple driver support
- CSS Framework: Tailwind CSS 4.0
- Build Tool: Vite 7.0
- HTTP Client: Axios
- JavaScript: Modern ES6+ standards
- TMDb API: The Movie Database API for movie and TV show data
- NewsAPI: Entertainment news aggregation
- The Guardian API: Quality journalism and reviews
- Reddit API: Community discussions and trending topics
cinema-paradiso/
βββ app/
β βββ Console/
β β βββ Kernel.php
β β βββ Commands/
β β βββ CacheStatus.php # Check cache status
β β βββ FixBrokenPosters.php # Fix broken poster images
β β βββ InvalidateCache.php # Invalidate specific caches
β β βββ OptimizeCache.php # Optimize application cache
β β βββ UpdateUserPopularity.php # Update user popularity scores
β β
β βββ Http/
β β βββ Controllers/
β β β βββ Controller.php # Base controller
β β β βββ AuthController.php # User authentication
β β β βββ BlogController.php # News and blog posts
β β β βββ CelebrityController.php # Celebrity information
β β β βββ ChatController.php # Messaging system
β β β βββ CommunityController.php # Community features
β β β βββ ContactController.php # Contact form handling
β β β βββ HomeController.php # Homepage and search
β β β βββ MovieController.php # Movie browsing and details
β β β βββ TVShowController.php # TV show functionality
β β β βββ UserController.php # User profile management
β β β βββ UserMovieController.php # User-movie interactions
β β β βββ UserTVShowController.php # User-TV show interactions
β β β
β β βββ Middleware/
β β βββ Authenticate.php # Authentication middleware
β β βββ CompressResponse.php # Response compression
β β
β βββ Jobs/
β β βββ WarmCacheJob.php # Cache warming background job
β β
β βββ Mail/
β β βββ ContactNotification.php # Contact form email
β β βββ ForgotPasswordMail.php # Password reset email
β β
β βββ Models/
β β βββ User.php # User model
β β βββ Movie.php # Movie model
β β βββ ChatMessage.php # Chat message model
β β βββ ChatRequest.php # Chat request model
β β βββ Contact.php # Contact submission model
β β βββ UserActivity.php # User activity tracking
β β βββ UserFavoriteMovie.php # User favorite movies
β β βββ UserFollower.php # User follow relationships
β β βββ UserMovie.php # User movie collection
β β βββ UserMovieLike.php # Movie likes
β β βββ UserMovieReview.php # Movie reviews
β β βββ UserWatchlist.php # User watchlist
β β
β βββ Providers/
β β βββ AppServiceProvider.php # Application service provider
β β
β βββ Services/
β βββ ApiRateLimiter.php # API rate limiting service
β βββ CacheOptimizationService.php # Cache optimization
β βββ MovieService.php # Movie data service
β βββ NewsService.php # News aggregation service
β βββ TVShowService.php # TV show data service
β βββ UserPopularityService.php # User popularity calculation
β
βββ bootstrap/
β βββ app.php # Application bootstrap
β βββ providers.php # Service providers registration
β βββ cache/
β βββ packages.php # Package manifest cache
β βββ services.php # Service manifest cache
β
βββ config/
β βββ app.php # Application configuration
β βββ auth.php # Authentication configuration
β βββ cache.php # Cache configuration
β βββ database.php # Database configuration
β βββ filesystems.php # File storage configuration
β βββ logging.php # Logging configuration
β βββ mail.php # Mail configuration
β βββ queue.php # Queue configuration
β βββ services.php # Third-party services (TMDb, APIs)
β βββ session.php # Session configuration
β
βββ database/
β βββ factories/
β β βββ UserFactory.php # User factory for testing
β β
β βββ migrations/
β β βββ 0001_01_01_000000_create_users_table.php
β β βββ 0001_01_01_000001_create_cache_table.php
β β βββ 0001_01_01_000002_create_jobs_table.php
β β βββ 2025_09_30_190326_create_contacts_table.php
β β βββ 2025_10_03_213727_add_community_features_to_users_table.php
β β βββ 2025_10_20_161423_add_location_fields_to_users_table.php
β β βββ 2025_10_20_173048_create_user_movies_table.php
β β βββ 2025_10_20_173153_create_user_movie_likes_table.php
β β βββ 2025_10_20_173636_create_user_watchlist_table.php
β β βββ 2025_10_20_181236_create_user_movie_reviews_table.php
β β βββ 2025_10_22_175739_add_media_type_to_user_watchlist_table.php
β β βββ 2025_10_23_202109_create_chat_messages_table.php
β β βββ 2025_10_23_202206_create_chat_requests_table.php
β β
β βββ seeders/
β βββ DatabaseSeeder.php # Main database seeder
β
βββ public/
β βββ index.php # Application entry point
β βββ robots.txt # Search engine directives
β βββ test-auth.html # Authentication test page
β βββ test-forgot-link.html # Password reset test page
β βββ css/ # Compiled CSS files
β βββ js/ # Compiled JavaScript files
β βββ images/ # Static images and assets
β βββ storage/ # Symbolic link to storage
β
βββ resources/
β βββ css/
β β βββ app.css # Main application styles
β β
β βββ fonts/ # Custom web fonts
β β
β βββ images/ # Source images
β β
β βββ views/
β βββ layouts/
β β βββ app.blade.php # Main application layout
β β
β βββ components/
β β βββ tv-card.blade.php # TV show card component
β β
β βββ partials/
β β βββ _header_top.blade.php # Header partial
β β βββ _movieCard.blade.php # Movie card partial
β β βββ _movieCardSmall.blade.php # Small movie card
β β βββ _search.blade.php # Search partial
β β
β βββ movies/
β β βββ index.blade.php # Movies listing page
β β βββ show.blade.php # Movie detail page
β β βββ search.blade.php # Movie search results
β β βββ genre.blade.php # Movies by genre
β β
β βββ tv/
β β βββ index.blade.php # TV shows listing
β β βββ show.blade.php # TV show detail page
β β βββ season.blade.php # Season detail page
β β βββ search.blade.php # TV show search
β β βββ genre.blade.php # TV shows by genre
β β
β βββ celebrities/
β β βββ index.blade.php # Celebrities listing
β β βββ show.blade.php # Celebrity detail page
β β
β βββ profile/
β β βββ userprofile.blade.php # User profile page
β β βββ userlist.blade.php # User list page
β β βββ usermovies.blade.php # User movie collection
β β βββ userwatchlist.blade.php # User watchlist
β β βββ userreviews.blade.php # User reviews
β β βββ following.blade.php # Following list
β β βββ followers.blade.php # Followers list
β β βββ partials/ # Profile partials
β β
β βββ community/
β β βββ index.blade.php # Community directory
β β βββ profile.blade.php # Public user profile
β β
β βββ chat/
β β βββ index.blade.php # Chat inbox
β β βββ show.blade.php # Chat conversation
β β
β βββ emails/
β β βββ contact-notification.blade.php
β β βββ forgot-password.blade.php
β β
β βββ welcome.blade.php # Welcome/landing page
β βββ index_main.blade.php # Main index page
β βββ help.blade.php # Help page
β βββ test-auth.blade.php # Authentication test view
β βββ bloggrid.blade.php # Blog grid layout
β βββ blogdetail.blade.php # Blog detail page
β βββ moviegrid.blade.php # Movie grid layout
β βββ movielist.blade.php # Movie list layout
β βββ celebritygrid01.blade.php # Celebrity grid (style 1)
β βββ celebritygrid02.blade.php # Celebrity grid (style 2)
β βββ celebritylist.blade.php # Celebrity list layout
β βββ celebritysingle.blade.php # Single celebrity page
β
βββ routes/
β βββ web.php # Web application routes
β βββ console.php # Artisan console routes
β
βββ storage/
β βββ app/
β β βββ public/ # Publicly accessible files
β β βββ private/ # Private storage
β β
β βββ framework/
β β βββ cache/ # Framework cache files
β β βββ sessions/ # Session files
β β βββ views/ # Compiled Blade views
β β
β βββ logs/
β βββ laravel.log # Application logs
β
βββ tests/
β βββ TestCase.php # Base test case
β βββ Feature/ # Feature tests
β βββ Unit/ # Unit tests
β
βββ vendor/ # Composer dependencies (generated)
β
βββ .env # Environment configuration (not in VCS)
βββ .env.example # Example environment file
βββ .gitignore # Git ignore rules
βββ artisan # Artisan CLI executable
βββ composer.json # PHP dependencies
βββ composer.lock # Locked PHP dependencies
βββ package.json # Node.js dependencies
βββ package-lock.json # Locked Node dependencies
βββ phpunit.xml # PHPUnit configuration
βββ vite.config.js # Vite build configuration
βββ README.md # Project documentation
- PHP 8.2 or higher
- Composer
- Node.js and npm
- MySQL or PostgreSQL database
- Redis (recommended for caching and queues)
- Clone the repository:
git clone https://github.com/yourusername/cinema-paradiso.git
cd cinema-paradiso- Install PHP dependencies:
composer install- Install JavaScript dependencies:
npm install- Create and configure environment file:
cp .env.example .env- Configure your
.envfile with the following essential settings:
APP_NAME="Cinema Paradiso"
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=cinema_paradiso
DB_USERNAME=your_username
DB_PASSWORD=your_password
TMDB_API_KEY=your_tmdb_api_key
NEWS_API_KEY=your_news_api_key
GUARDIAN_API_KEY=your_guardian_api_key
MAIL_MAILER=smtp
MAIL_HOST=your_mail_host
MAIL_PORT=587
MAIL_USERNAME=your_email
MAIL_PASSWORD=your_password- Generate application key:
php artisan key:generate- Run database migrations:
php artisan migrate- Build frontend assets:
npm run build- Start the development server:
php artisan serve- In a separate terminal, compile assets for development:
npm run devFor background job processing:
php artisan queue:work- Register for a free account at The Movie Database
- Navigate to Settings > API and request an API key
- Add your API key to the
.envfile asTMDB_API_KEY
- Register at NewsAPI
- Obtain your API key
- Add to
.envasNEWS_API_KEY
- Register at The Guardian Open Platform
- Request an API key
- Add to
.envasGUARDIAN_API_KEY
The application includes the following primary tables:
users: User accounts and authenticationuser_movies: User movie collectionsuser_movie_likes: Movie likes/favoritesuser_movie_reviews: User-submitted movie reviewsuser_watchlist: Movies and TV shows on user watchlistschat_messages: Direct messages between userschat_requests: Chat request managementuser_followers: User follow relationshipscontacts: Contact form submissionsuser_activities: User activity tracking
- CSRF protection on all forms
- Rate limiting on sensitive endpoints (avatar uploads, messaging, chat requests)
- Password hashing with bcrypt
- SQL injection protection through Eloquent ORM
- XSS protection through Laravel's built-in escaping
- Authentication middleware for protected routes
- Multi-layer Caching: Strategic caching of API responses, database queries, and rendered views
- Image Optimization: Lazy loading and responsive images
- Database Indexing: Optimized queries with proper indexing
- API Rate Limiting: Prevents excessive API calls with intelligent rate limiting
- Queue System: Offloads time-intensive operations to background jobs
- Asset Bundling: Vite-powered asset compilation and minification
GET /- Home pageGET /movies- Browse moviesGET /movies/{id}- Movie detailsGET /tv- Browse TV showsGET /tv/{id}- TV show detailsGET /celebrities- Browse celebritiesGET /blog- Entertainment newsGET /community- Community member directory
POST /movies/add- Add movie to collectionPOST /movies/like- Like/unlike a moviePOST /movies/watchlist- Add/remove from watchlistPOST /movies/review- Submit movie reviewGET /messages- View messagesPOST /messages/{receiver}/send- Send messagePOST /profile/follow/{userId}- Follow userPOST /profile/update- Update profile
Run the test suite:
php artisan testRun specific test suites:
php artisan test --testsuite=Feature
php artisan test --testsuite=UnitContributions are welcome. Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature-name) - Commit your changes (
git commit -m 'Add comprehensive description') - Push to the branch (
git push origin feature/your-feature-name) - Open a Pull Request
Please ensure your code follows PSR-12 coding standards and includes appropriate tests.
This project follows PSR-12 coding standards. Format your code using Laravel Pint:
./vendor/bin/pintThis project is licensed under the MIT License. See the LICENSE file for details.
- The Movie Database (TMDb) for providing comprehensive movie and TV show data
- NewsAPI for entertainment news aggregation
- The Guardian for quality journalism
- Laravel community for the excellent framework and ecosystem
For issues, questions, or contributions, please open an issue on the GitHub repository.
Active development. New features and improvements are regularly added.
Built with Laravel and Tailwind CSS

