A comprehensive web platform for watching movies and series with extended social features, built on Laravel 11 using Livewire 3 and Filament 3.
Cinema Online is a modern web platform for watching movies and series with a strong emphasis on social interaction and co-watching. The platform supports the Ukrainian language and includes full-text search with Ukrainian localization.
- π Full catalog of movies, series, cartoons, and anime
- π₯ Role system (user/moderator/admin)
- π Full-text search with Ukrainian localization
- π Co-watching rooms with WebSocket synchronization
- π± Responsive design with dark/light theme support
- π Social login (Discord, Telegram)
- π Ratings, comments, and reviews system
- π Personalized user lists
- π¨ Admin panel
- Manage movies, series, and episodes
- Tags and genres system
- Information about actors, directors, and crew
- Studios and production companies
- Content collections
- Rating system
- Registration and authentication
- User profiles
- Personal lists (favorites, watched, planned)
- Comments on movies, episodes, and collections
- Like/dislike system
- Nested comments (replies)
- Private and public rooms
- Video synchronization via WebSocket
- Viewer limits
- Password protection for private rooms
- QR code invitations
- Full-text search with Ukrainian localization
- Filtering by genres, years, ratings, etc.
- Admin panel using Filament 3
- Manage all entities
- Moderation tools
- Analytics and statistics
- User and role management
- PHP 8.3+ β Main programming language
- Laravel 11 β Web framework
- Livewire 3 β Reactive components
- Filament 3 β Admin panel
- PostgreSQL β Database with full-text search
- Laravel Reverb β WebSocket server for real-time features
- Laravel Socialite β Social authentication
- CSS β Styling
- Alpine.js (via Livewire) β Reactive JavaScript
- Vite β Frontend asset bundler
- Laravel Echo β WebSocket client
- Laravel Breeze β Authentication
- Laravel Trend β Analytics and trends
- Blade Icons β Icons (Clarity, BoxIcons, FontAwesome)
- Laravel Lang β Ukrainian localization
Userβ Users with roles and profiles
Movieβ Movies and series with metadataEpisodeβ Episodes of seriesPersonβ Actors, directors, and crewStudioβ Studios and production companiesTagβ Genres and tagsSelectionβ Curated content collections
Commentβ Polymorphic commentsCommentLikeβ Likes/dislikes on commentsCommentReportβ Comment reportsRatingβ Movie ratingsUserListβ Polymorphic personal lists
Roomβ Co-watching roomsWatchHistoryβ Viewing historySearchHistoryβ Search history
- ULID as primary keys for all models
- Polymorphic relationships for flexibility (comments, lists, selections)
- JSON fields for performance optimization
- Scoped models for automatic filtering
- Custom Query Builders for complex queries
- Policy classes for role-based authorization
The application is available at: http://cinema-online.pp.ua:99/
/β Home page with trending content/moviesβ Movies catalog/seriesβ Series catalog/cartoonsβ Cartoons catalog/animeβ Anime catalog/selectionsβ Curated collections/person/{person}β Person profile
/movies/{movie}β Movie detail page/movies/{movie}/commentsβ Comments on movie/movies/{movie}/watchβ Watch page/movies/{movie}/watch/{episode}β Watch specific episode/movies/{movie}/watch/{episode}/{room}β Watch with others in room
/profileβ User profile/my-listsβ Personal lists/roomsβ Co-watching rooms
cinema-online/
βββ app/
β βββ Enums/ # Enums (statuses, roles, types)
β βββ Events/ # WebSocket events
β βββ Filament/ # Admin panel
β βββ Http/ # Controllers and middleware
β βββ Livewire/ # Livewire components
β βββ Models/ # Eloquent models
β βββ Policies/ # Authorization policies
β βββ ValueObjects/ # Value objects
βββ database/
β βββ factories/ # Factories for testing
β βββ migrations/ # Database migrations
β βββ seeders/ # Seeders for data population
β βββ fts-dict/ # Dictionaries for full-text search
βββ resources/
β βββ css/ # CSS styles
β βββ js/ # JavaScript files
β βββ views/ # Blade templates
βββ tests/ # Tests
The project follows:
- PSR-12 for PHP code
- BEM methodology for CSS class naming
- Conventional Commits for commit messages
- Ukrainian localization for all UI strings
- Fork the repository
- Create a new branch for your feature (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Create a Pull Request
This project is licensed under the MIT License.