Skip to content

ShowTime is a platform for streaming shows and movies.

License

Notifications You must be signed in to change notification settings

ThisMSH/ShowTime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShowTime

"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.

Features

  • 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

Tech Stack

Front end:

Front-end

Back end:

Back-end

Installation

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.

Front 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

Back end

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:

Email 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/)


Additional information

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.

Appendix

Actors

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)

Side note

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.

Feedback

If you have any feedback, please reach out to me at:

E-mail: [email protected]
LinkedIn: @elmahdish

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

ShowTime is a platform for streaming shows and movies.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published