TV Show Alert is an open-source project that allows users to stay informed about new episodes of their favorite TV series. Users can receive notifications via email or check their personalized timeline on the website to see their subscribed shows and upcoming episodes.
The project is developed using Laravel, Livewire 3, and Tailwind CSS, offering a smooth, AJAX-driven user experience. It leverages Laravel Scout for fast searching and utilizes the Laravel Data package for Data Transfer Objects (DTOs). The codebase is fully tested with PHPUnit, and GitHub Actions ensures automatic testing after each push to GitHub.
You can see live version of this app here: Series Alert
- Episode Notifications: Receive email notifications about new episodes of your subscribed TV shows.
- Personalized Timeline: Access a user-friendly timeline on the website to view your subscribed shows and upcoming episodes.
- Today's Shows: Quickly check all TV shows with new episodes scheduled for today.
- Smooth User Experience: AJAX requests provide a seamless and responsive user experience.
- Fast Search: Leveraging Laravel Scout, the system offers high-speed searching for TV shows and episodes.
- Automate TV Show updates: Fully automatically scan for new shows and get info of current shows in the background.
- Data Transfer Objects: Utilizes the Laravel Data package to efficiently manage data transfer objects.
- Tested Codebase: The project is fully tested with PHPUnit and analyzed by PHPInsights, ensuring reliability and stability.
- Dockerized: The project is dockerized and can become up and running very fast.
This is an example of your timeline in site:
- Laravel: The project is built using the robust Laravel framework.
- Livewire 3: Real-time interactions are powered by Livewire 3.
- Tailwind CSS: The user interface is styled with the utility-first Tailwind CSS framework.
- Laravel Scout: Provides efficient and high-speed searching capabilities. Document
- Laravel Data: Offers a structured approach to Data Transfer Objects (DTOs).
- PHPUnit: The codebase is rigorously tested with PHPUnit.
- GitHub Actions: Automatic testing and continuous integration are enabled with GitHub Actions.
This project is Dockerized, allowing you to easily run it with the following command:
docker-compose up
This will make the project accessible at localhost:3838
.
Before running the project with Docker, consider customizing the .env
file located in the project root directory. This file allows you to configure settings based on your needs.
Also, you can have more settings in the .env.example
file in the src
directory.
For deployment purposes, refer to the deployment
directory. This directory contains various configuration files for MySQL, Nginx, and PHP-fpm.
The docker-compose.yml
file defines several services that work together to run this application:
- app: The laravel backend app, built on a PHP-FPM Docker image.
- scheduler: This service is essentially a copy of the app service, but its purpose is solely to run the Laravel scheduler. This allows the scheduler to crawl for TV series data without interfering with the main app functionality.
- mysql: Database service that stores the application's data. It utilizes a separate storage volume named
mysql-data
for persistence. - nginx: Web server that handles incoming web requests and directs them to the app service.
In this article, I explain how I implemented Laravel Scout along with TNTSearch to enhance the project's search capabilities:
Blazingly fast search with laravel scout & TNTSearch
Thanks to episodate.com for their great api which allowed us to get updates info of tv-series.
Also thanks to mailtrap.io for their email systems which we used for sending email notifications.
I extend my heartfelt gratitude to the open-source community and all contributors who have helped make this project possible. Your support and contributions are greatly appreciated.
This project is open-source and available under the MIT License.