youtube-share-app Tailwind Templates

Youtube Share App

Its just a small application that allow the user can see the shared youtube videos

Introduction: Funny Video Application

Its just a small application that allow the user can see the shared youtube videos, with un-authen user they can access the video list, they can sign up and login as logged user. With logged user they can share any post from youtube by simple paste the youtube link. They also can get a small notification with any new video shared by other logged user.

The nicest thing on this application, We use 100% Backend features on firebase, so we don't need any backend service, but i still cover all features: authentication, realtime for youtube videos and the in-app notification.

Demo Link : https://funny-movies-vanbui.netlify.app/

Screenshot 2023-10-24 at 18 58 52

Prerequisites:

  • NodeJS: Version >= 18
  • Yarn: >= 1.22 (optional you are OK to use npm)

Installation & Configuration

  • Make sure you are the root of the project
  • Run yarn install with yarn or npm install with npm
  • I build application with firebase (backend + database + authentication), you can use frontend application only that default connect with my firebase, if you really need to touch and use new firebase, please take a look on Backend/Database Setup

Installation & Configuration

Running the application

  • Make sure you are the root of the project and install dependencies like section: "Installation & Configuration"
  • Run yarn dev or npm run dev to start application in dev server locally
  • The URL will be shown like the image below, just click on the link to access the applicationScreenshot 2023-10-24 at 18 50 23

Run the test suite

  • Make sure you are the root of the project and install dependencies like section: "Installation & Configuration"
  • Run yarn test or npm run test to run the test suite
  • The test result will be shown on the console like the image belowScreenshot 2023-10-24 at 18 49 35

Build & Deploy

Build

Backend/Database Setup

  • I recommend you can use directly my firebase config on the current frontend code, you don't need to create a new firebase project to test out the app, but if you really want to setup a new one, please follow these steps:

      1. Create new firebase project
    Screenshot 2023-10-24 at 18 35 53 - 2. Add new web application on the new firebase project Screenshot 2023-10-24 at 18 38 28
      1. After create new application please copy the config object
    Screenshot 2023-10-24 at 18 41 57
      1. Add new authentication provider "Email & Password", just make sure turn on it
    Screenshot 2023-10-24 at 18 38 42 - 4. Create video collection and first record Screenshot 2023-10-24 at 18 39 56
      1. Replace firebase config object to the file src/modules/common/firebase/firebase.ts
    Screenshot 2023-10-24 at 18 43 36
      1. You are done, you can restart the server or rebuild again

Usage

  • User can access the shared videos via home page, they don't have share button to share until they register or login

  • Register & login:

    • Just make sure fill correctly format for email & password
    • I have a validation on almost form, after register i will let the user login successfully
      • I keep the user session by using the sessionStorage, so every tab will have different session for easier testing
    Screenshot 2023-10-24 at 19 12 05 Screenshot 2023-10-24 at 19 12 09
  • User can click on share button when logged

    Screenshot 2023-10-24 at 19 13 11 Screenshot 2023-10-24 at 19 13 26
  • When user submit successfully, all users can see new post

  • When user submit successfully, all logged users receive a notificaiton about new shared post

    Screenshot 2023-10-24 at 19 18 22

Folder structure

.
src
├── ...
├── pages                     # Contain all main pages, the root component of each page
│   ├── my-page               # My Page
├── components                # Contains all common/general/layout components
├── services                  # HTTP service layer, the one connect with backend api
└── enums                     # Define all enums or const variables
└── types                     # Define all interface & type of the project (except the component types)
└── public                    # All public resources (image, svg, font...)
└── main.tsx                  # React entry point file (Root)
└── index.css                 # CSS entry point file (Root)
└── tailwind.config.cjs       # Tailwind config, I configured all colors/spacing of the guideline via this file

Top categories

Loading Svelte Themes