Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Trackathon

Transform YouTube Playlists into a Structured Learning Experience

Trackathon is a full-stack MERN application that transforms ordinary YouTube playlists into a distraction-free learning workspace. Instead of simply watching videos, learners can track progress, stay consistent with learning streaks and a GitHub-style heatmap, organise notes, and resume exactly where they left off.

React Vite TailwindCSS Express MongoDB JWT

πŸ”— Live Demo

🌐 Website: https://trackathon-tau.vercel.app

πŸŽ₯ Product Tour

πŸ“š Learning Workflow

Learning Workflow Demo

πŸš€ Authentication

Authentication Demo

βš™οΈ Productivity

Productivity Demo

πŸ“– Why Trackathon?

While learning Data Structures & Algorithms through Striver's roadmap, I realised how motivating a structured learning path can be. Every topic had a clear roadmap, progress tracking, and a sense of accomplishment.

However, YouTube playlists lacked that experience.

There was no structured dashboard, no consistency tracking, no organised progress, and no dedicated workspace for learning.

So I built Trackathon to bring that same structured learning experience to YouTubeβ€”helping learners stay focused, track their progress, maintain learning streaks, visualise consistency through a GitHub-style heatmap, and organise long playlists into manageable learning journeys.


✨ Features

πŸ” Authentication

  • Secure JWT Authentication
  • Register & Login
  • Logout
  • Password Encryption using bcrypt

πŸ“š Playlist Management

  • Import Public YouTube Playlists
  • Playlist Library
  • Playlist Details
  • Playlist Re-sync
  • Delete Playlist

πŸŽ₯ Learning Experience

  • Embedded YouTube Player
  • Resume Watching
  • Continue Learning
  • Playlist Queue
  • Video Progress Tracking
  • Video Notes

πŸ“Š Learning Analytics

  • Dashboard Overview
  • Recent Playlists
  • Learning Streak
  • GitHub-style Heatmap
  • Total Playlists
  • Total Videos
  • Completed Videos

βš™οΈ User Settings

  • Profile Update
  • Password Change
  • About Section
  • Danger Zone

🎨 User Experience

  • Responsive Design
  • Modern Dark Theme
  • Toast Notifications
  • Smooth Navigation
  • Distraction-free Learning Interface

πŸ”„ Playlist Re-sync

Keep your imported playlists up to date.

Whenever new videos are added to the original YouTube playlist, Trackathon can fetch and append them while preserving your existing learning progress.

Note: Deleted videos from the original YouTube playlist are currently retained in the imported playlist.


πŸ–ΌοΈ Application Preview

πŸš€ Getting Started

Landing Import Playlist

πŸ” Authentication

Register Login

πŸ“Š Dashboard

Dashboard Library

πŸŽ₯ Learning Workspace

Playlist Details Learning Player

πŸ“ Productivity

Video Notes Settings

πŸ—οΈ System Architecture

flowchart TD
    User([πŸ‘€ User]) --> FE

    subgraph FE ["🎨 Frontend (React + Vite)"]
        direction TB
        F1["Responsive UI"]
        F2["Authentication"]
        F3["Dashboard"]
        F4["Playlist Management"]
        F5["Learning Workspace"]
        F6["Settings"]
    end

    FE <===>|"β•‘ REST API / HTTP β•‘"| BE

    subgraph BE ["βš™οΈ Backend (Node.js + Express)"]
        direction TB
        B1["JWT Authentication"]
        B2["Playlist Management"]
        B3["Progress Tracking"]
        B4["Video Notes"]
        B5["YouTube Integration"]
    end

    BE <---> DB
    BE <---> YT

    subgraph DB ["πŸ—„οΈ MongoDB Atlas"]
        direction TB
        D1["Users"]
        D2["Playlists"]
        D3["Video Progress"]
        D4["Notes"]
        D5["Streak & Heatmap"]
    end

    subgraph YT ["πŸ“‘ YouTube Data API v3"]
        direction TB
        Y1["Playlist Metadata"]
        Y2["Videos"]
        Y3["Durations"]
        Y4["Thumbnails"]
    end

    %% Custom Styling
    style User fill:#38bdf8,stroke:#0284c7,color:#fff,stroke-width:2px
    style FE fill:#1e293b,stroke:#3b82f6,color:#fff,stroke-width:2px
    style BE fill:#1e293b,stroke:#22c55e,color:#fff,stroke-width:2px
    style DB fill:#1e293b,stroke:#10b981,color:#fff,stroke-width:2px
    style YT fill:#1e293b,stroke:#ef4444,color:#fff,stroke-width:2px
Loading

⚑ Tech Stack

🎨 Frontend

  • React 19
  • Vite
  • Tailwind CSS v4
  • React Router DOM
  • Axios
  • React YouTube
  • React Hot Toast
  • Lucide React

βš™οΈ Backend

  • Node.js
  • Express.js
  • JWT Authentication
  • bcrypt.js
  • REST APIs
  • CORS

πŸ—„οΈ Database

  • MongoDB Atlas
  • Mongoose ODM

🌐 APIs

  • YouTube Data API v3

πŸ› οΈ Developer Tools

  • Git
  • GitHub
  • Postman
  • ESLint

πŸ“‚ Project Structure

Trackathon
β”œβ”€β”€ client
β”‚   β”œβ”€β”€ public
β”‚   └── src
β”‚       β”œβ”€β”€ api                # Axios API layer
β”‚       β”œβ”€β”€ components
β”‚       β”‚   β”œβ”€β”€ common
β”‚       β”‚   β”œβ”€β”€ layout
β”‚       β”‚   β”œβ”€β”€ modals
β”‚       β”‚   β”œβ”€β”€ playlist
β”‚       β”‚   └── settings
β”‚       β”œβ”€β”€ context            # Global state management
β”‚       β”œβ”€β”€ hooks              # Custom React hooks
β”‚       β”œβ”€β”€ pages              # Application pages
β”‚       β”œβ”€β”€ utils              # Helper utilities
β”‚       β”œβ”€β”€ App.jsx
β”‚       └── main.jsx
β”‚
β”œβ”€β”€ server
β”‚   β”œβ”€β”€ config                 # Database configuration
β”‚   β”œβ”€β”€ controllers            # Request handlers
β”‚   β”œβ”€β”€ middleware             # JWT authentication
β”‚   β”œβ”€β”€ models                 # Mongoose schemas
β”‚   β”œβ”€β”€ routes                 # REST API routes
β”‚   β”œβ”€β”€ services               # Business logic & YouTube API
β”‚   β”œβ”€β”€ utils                  # Helper utilities
β”‚   β”œβ”€β”€ app.js
β”‚   └── server.js
β”‚
β”œβ”€β”€ assets
β”‚   β”œβ”€β”€ screenshots
β”‚   β”œβ”€β”€ authentication-demo.gif
β”‚   β”œβ”€β”€ learning-workflow-demo.gif
β”‚   └── productivity-demo.gif
β”‚
β”œβ”€β”€ README.md
└── LICENSE

πŸš€ Getting Started

Follow these steps to set up Trackathon locally.

πŸ“‹ Prerequisites

Make sure you have the following installed:

  • Node.js (v18 or later)
  • npm
  • MongoDB Atlas account
  • YouTube Data API v3 Key
  • Git

πŸ“₯ Clone the Repository

git clone https://github.com/dyson-025/Trackathon.git

cd Trackathon

πŸ“¦ Install Dependencies

Frontend

cd client
npm install

Backend

cd ../server
npm install

πŸ”‘ Environment Variables

Backend (server/.env)

PORT=5000

MONGO_URI=your_mongodb_connection_string

JWT_SECRET=your_jwt_secret

YOUTUBE_API_KEY=your_youtube_api_key

Frontend (client/.env)

VITE_API_URL=http://localhost:5000/api

▢️ Run the Application

Start Backend

cd server
npm run dev

Start Frontend

cd client
npm run dev

🌍 Open in Browser

http://localhost:5173

The application should now be running locally.

πŸ›£οΈ Roadmap

The following features are planned for future releases:

  • AI-powered playlist summaries
  • Smart video recommendations
  • Search videos within imported playlists
  • Learning analytics dashboard
  • Playlist categories & tags
  • Export & import learning progress
  • Public profile & achievements
  • Mobile-friendly PWA support

🀝 Contributing

Contributions are welcome!

If you'd like to improve Trackathon:

  1. Fork the repository
  2. Create a new feature branch
  3. Commit your changes
  4. Push to your branch
  5. Open a Pull Request

Please ensure your code follows the existing project structure and coding style.

πŸ“„ License

This project is licensed under the MIT License.

See the LICENSE file for more information.

⭐ Support

If you found this project helpful, consider giving it a ⭐ on GitHub.

It helps others discover the project and motivates future development.

About

Transform YouTube playlists into a structured learning experience with progress tracking, notes, learning streaks, and resume watching.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages