Skip to content

A great way to learn from YouTube courses without any distractions and the ability to enroll in courses and track them with a daily streak to become more consistent.

License

Notifications You must be signed in to change notification settings

rosekamallove/youtemy

Repository files navigation

YouTemy

Website State Latest Release License Contributors

YouTemy is a platform to accelerate learning from YouTube courses. Users can learn from YouTube courses without any distractions and have the ability to enroll in courses and track them with a daily streak to become more consistent.

πŸš€ Tech Stack

YouTemy is a web app built with the following:

πŸ€– CI/CD

Firebase Deploy on PR Firebase Deploy on Merge

Deployment to Firebase is automated and controlled through GitHub Actions.

πŸ—Ί Page Hierachy

  • Pages:

    • Landing Page (Middleware goes here if not logged in)

      • LogIn or Contribute
    • Dashboard:

      • Courses currently enrolled
      • Streak Tracker
        • Daily Goal (Progress)
      • All-time Progress (Across Courses)
    • Course Curriculum

      • Different Tracks
        • Web-Dev Track
          • HTML\CSS
          • JavaScript
          • React/Vue/Angular
          • Node.JS / Express
    • User Dashboard

      • Courses currently enrolled in
      • Charts for the progress
      • Tutorial Hell Warnings
      • Maybe percentile
      • Suggested next course
    • Explore Page

      • Search for new Courses on Youtube
      • Add them to bookmrks or enroll in them
    • Settings

      • Delete all Bookmarks
      • Delete all enrolled courses
Folder Strucure
.
β”œβ”€β”€ src
β”‚Β Β  β”œβ”€β”€ App.js
β”‚Β Β  β”œβ”€β”€ Components
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Footer
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Footer.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Footer.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Navbar
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Logo.png
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Navbar.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Navbar.js
β”‚Β Β  β”‚Β Β  └── PrivateRoute.js
β”‚Β Β  β”œβ”€β”€ Pages
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ BookmarksPage
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ BookmarksPage.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── BookmarksPage.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CoursesPage
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CoursesPage.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── CoursesPage.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Dashboard
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Dashboard.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Dashboard.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExplorePage
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExplorePage.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ExplorePage.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PlaylistItem.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ PlaylistsList.js
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SearchBar.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── SearchBar.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SettingsPage
β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ SettingsPage.css
β”‚Β Β  β”‚Β Β  β”‚Β Β  └── SettingsPage.js
β”‚Β Β  β”‚Β Β  └── VideoPlayer
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ RenderWithTracking.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ RenderWithoutTracking.js
β”‚Β Β  β”‚Β Β      β”œβ”€β”€ VideoPlayer.css
β”‚Β Β  β”‚Β Β      └── VideoPlayer.js
β”‚Β Β  β”œβ”€β”€ UserContext.js
β”‚Β Β  β”œβ”€β”€ apis
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ demoObject.json
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ getVideos.js
β”‚Β Β  β”‚Β Β  └── youtube.js
β”‚Β Β  β”œβ”€β”€ css
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ App.css
β”‚Β Β  β”‚Β Β  └── index.css
β”‚Β Β  β”œβ”€β”€ firebase.js
β”‚Β Β  β”œβ”€β”€ firestore
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ addBookmarks.js
β”‚Β Β  β”‚Β Β  β”œβ”€β”€ addCourse.js
β”‚Β Β  β”‚Β Β  └── updateCourse.js
β”‚Β Β  └── index.js
└── yarn.lock

πŸ“· Snapshots of the Hosted Projects

Dashboard

CoursesPage1

CoursesPage2

ExplorePage

BookmarksPage

βš™ Running the Project

Starting the Dev Server

  • Clone the repository to your local system. https://github.com/rosekamallove/youtemy

  • Firebase API Setup:

    1. Go to Firebase Console and follow the steps to create a new Firebase project.

    2. Select </> , Add a project via Code.

    3. Create a new web app using the steps provided on the console.

    4. You will recieve a firebasConfig object with the first paramter as API key. Copy it, which will look something like:

              cosnt firebaseConfig = {
              apiKey: "process.env.REACT_APP_FIREBASE",
              authDomain: "AUTH_DOMAIN",
              projectId: "PROJECT_ID",
              storageBucket: "STORAGE_BUCKET",
              messagingSenderId: "*************",
              appId: "******************************",
              measurementId: "*************"
            };
    5. After you get the Firebase API key, create a .env file in the root folder of the repository

    6. Insert the folowing snippet in the file

       REACT_APP_FIREBASE="API_KEY_HERE"
      
  • Youtube API Setup:

    1. Go to the following link and set up a new project from https://console.cloud.google.com/apis/

    2. Go the the project's dashboard and click on Enable APIs and Services

    3. Select Youtube Data API v3

    4. Click on Credentials to create new credentials for the API client

    5. Select API Key out of the 3 options available (API Key, OAuth Client ID, Service Key)

    6. A new API key will be generated. Copy it in the .env file.

           REACT_APP_YOUTUBE="API_KEY_HERE"
      
  • Ensure that .env is added in .gitignore file.

  • In the root folder and enter the following commands in the CLI

        npm i or yarn
        npm start or yarn start
    
  • If you wish to contribute, either look for issues already created or create an issue if you have a new idea.

πŸ‘¨β€πŸ”¬ Contributors

Contribution list made with contrib.rocks.