"ShowTime" is an entertainment platform that houses a vast library of shows. Whether you’re a fan of riveting movies, binge-worthy series, or captivating anime, ShowTime is your go-to destination for a wide array of entertainment options.
- Personal account for every user
- Light/Dark mode toggle
- Modern design
- Smooth navigation between prequels and sequels of any show
- Rating system based on the community of the platform
- Comments section on every episode
- Private favorite list
Front end:
Back end:
First of all you need to run the database locally using XAMPP, MySQL, MariaDB or any similar program that can run MySQL databases.
To clone this repo use:
git clone https://github.com/ThisMSH/ShowTime.git
After that follow these steps to install all the necessary dependencies for both front end and back end.
Go to the Frontend directory:
cd ShowTime/Frontend
Now to install the dependencies run the command (Make sure that you have NodeJS installed in your machine):
npm i
The front end should be ready to run now. If you want to run the front end in development mode just use the command:
npm run dev
And if you want to run the front end in production mode, first use:
npm run build
Then install serve
package if you don't have it already:
npm install --global serve
And finally:
serve dist
Now go to the backend directory:
cd ../Backend
To install all dependencies run the command (Make sure that you have Composer and 7-Zip installed in your machine):
composer install
Now run the following commands to make a copy of .env.example
file and generate API_KEY
:
cp .env.example .env
php artisan key:generate
Now create a new database, and then open .env
and modify it:
### Modify the port for the back-end (8000 by default)
APP_URL=http://localhost:xxxx
### Modify the port for the front-end (3000 by default)
FRONTEND_URL=http://localhost:yyyy
SANCTUM_STATEFUL_DOMAINS=localhost:yyyy
SESSION_DOMAIN=localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
### Here you can modify value of these variables to match your database
### Make sure to change the name of the database, username, and password if you set one
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database-name
DB_USERNAME=root
DB_PASSWORD=
To create all the tables run:
php artisan migrate
Now run the following commands:
php artisan db:seed
php artisan db:seed --class=CategorySeeder
These 2 commands will create 4 categories and 3 accounts in the database, each account has a specific role. Here are the emails and passwords to access each one of them from login page:
Password | ||
---|---|---|
Regular account | [email protected] | password |
Premium account | [email protected] | password |
Admin account | [email protected] | password |
More about these roles later.
Now run this command to make the storage directory publicly accessible:
php artisan storage:link
And now you should be all set to run the back end, all you need to do is to run this command:
php artisan ser
After this all you need to do is to visit the link that was generated by VueJS (By default: http://localhost:3000/)
You can generate more random users by using Laravel Tinker, here is an example of generating 20 users:
php artisan tinker
User::factory(20)->create();
Now you will have an additional 20 users with random information. You can do the same method with ratings, but make sure that you already added some shows and users in your database:
Rating::factory(250)->create();
This will create 250 random ratings (1 to 10)
that will belong to random shows and users.
ShowTime has mainly 4 actors:
- 1st - Visitor: Visitors can basically browse and discover all the shows, watch the trailers and read community's comments on every episode. However, they can't watch any episode, nor they have access to the dashboard.
- 2nd - Regular users: In addition of what visitors can do, regular users can also watch free episodes and they have their own dashboard where they can modify their information, see and manage their lists of favorite shows and rated shows, they can also add comments on the episodes and manage their own comments. However, they can't watch premium episodes.
- 3rd - Premium users: In addition of what regular users can do, premium users can also watch premium episodes.
- 4th - Admin users: Admin users have full control on the platform. An admin can:
- Manage the comments of any users (Update or delete them)
- Manage the users (Update their information or permanently delete a user)
- Manage the shows (Create, update or delete a show)
- Manage the episodes (Create, update or delete a episode)
- Manage the trailers (Create, update or delete a trailer)
- Manage the subtitles (Create, update or delete a subtitle)
- Manage the recommandations (Create, update or delete a recommandation)
After following the Installation guide and running the project, make sure to add some shows (At least 5 in each category) so you can see the platform alive with bunch of shows.
If you have any feedback, please reach out to me at:
E-mail: [email protected]
LinkedIn: @elmahdish
This project is licensed under the MIT License. See the LICENSE file for details.