Skip to content

SurajPatil1404/StreamFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

50 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฌ StreamFlow โ€” Smart Video Learning Platform

StreamFlow

React Vite TailwindCSS React Router Vercel License

A YouTube-inspired smart video learning platform with Focus Mode, Watch History Analytics, and Smart Recommendations.


๐Ÿ‘จโ€๐Ÿ’ป Team

Member Role Branch GitHub
Suraj Patil Pages & Routing Lead feat/suraj-pages @SurajPatil1404
Prithviraj UI Components Lead feat/prithviraj-ui @prithviraj-1657
Onkar Data & Context Lead feat/onkar-data @onkarswamii

๐Ÿ“Œ Table of Contents


๐Ÿง  About the Project

Problem Statement

Students and self-learners using YouTube face constant distractions โ€” ads, irrelevant recommendations, comment rabbit holes, and no way to track their actual learning progress.

Our Solution

StreamFlow is a productivity-first video learning platform that solves this by offering:

  • A clean, distraction-free interface
  • Focus Mode that hides all distractions with one click
  • A Watch History Dashboard with real learning analytics
  • Smart Recommendations based on content similarity
  • Persistent Dark/Light Mode for comfortable long study sessions

๐ŸŒ Live Demo

Deployed on Vercel โ€” No installation needed!

๐Ÿ”— Live URL https://stream-flow-jet.vercel.app/
๐Ÿ“ฆ Repository https://github.com/SurajPatil1404/StreamFlow

โœจ Features

๐Ÿ”ต Core Features

Feature Description
๐Ÿ  Homepage Feed Responsive video grid with thumbnails, channel info, views, and category tags
โ–ถ๏ธ Video Player Real YouTube embedded player with like, save, share, and subscribe actions
๐Ÿ’ฌ Comments System Add, view, like, and dislike comments with expandable thread
๐Ÿ” Search Real-time filtering by title, channel, category, tags, and description
๐Ÿ“‚ Sidebar Category navigation with smooth active state animations
๐Ÿ”” Notifications Toast notifications for user actions (saved, subscribed, copied)

๐ŸŸข Advanced / Unique Features

Feature Description
โšก Focus Mode One click hides sidebar, comments, and recommendations โ€” zero distractions
๐Ÿ“Š Watch History Dashboard Stat cards, category breakdown bar chart, and 28-day learning streak heatmap
๐Ÿค– Smart Recommendations Tag + category scoring algorithm surfaces the most relevant next videos
๐ŸŒ™ Dark / Light Mode Instant theme toggle persisted to localStorage
๐Ÿ—‚๏ธ Category Filter Horizontally scrollable filter chips on the homepage

๐Ÿ›  Tech Stack

Technology Version Purpose
React 18.2 UI library โ€” functional components only
Vite 5.1 Lightning-fast dev server and build tool
React Router DOM 6.22 Client-side routing and navigation
Tailwind CSS 3.4 Utility-first styling with dark mode support
Context API built-in Global state (theme, history, focus mode, notifications)
React Hooks built-in useState, useEffect, useContext, useCallback, useMemo, useRef
Lucide React 0.363 Icon library
Vercel โ€” Deployment and hosting

๐Ÿ“ Folder Structure

streamflow/
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ Layout.jsx              # Main layout wrapper (Navbar + Sidebar + content)
โ”‚   โ”‚   โ”œโ”€โ”€ Navbar.jsx              # Top bar: logo, search, theme toggle, focus mode
โ”‚   โ”‚   โ”œโ”€โ”€ Sidebar.jsx             # Left sidebar: nav links + category list
โ”‚   โ”‚   โ”œโ”€โ”€ VideoCard.jsx           # Video card (grid variant + list variant)
โ”‚   โ”‚   โ”œโ”€โ”€ CommentSection.jsx      # Comments: add, view, like, dislike
โ”‚   โ”‚   โ”œโ”€โ”€ CategoryFilter.jsx      # Scrollable category chips
โ”‚   โ”‚   โ””โ”€โ”€ Notification.jsx        # Toast notification component
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ pages/
โ”‚   โ”‚   โ”œโ”€โ”€ HomePage.jsx            # / โ†’ hero + category filter + video grid
โ”‚   โ”‚   โ”œโ”€โ”€ VideoPlayerPage.jsx     # /watch/:id โ†’ player + actions + recommendations
โ”‚   โ”‚   โ”œโ”€โ”€ HistoryPage.jsx         # /history โ†’ dashboard + analytics + streak
โ”‚   โ”‚   โ””โ”€โ”€ SearchPage.jsx          # /search?q= โ†’ results + trending suggestions
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ context/
โ”‚   โ”‚   โ””โ”€โ”€ AppContext.jsx          # Global state provider + useApp() hook
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ data/
โ”‚   โ”‚   โ””โ”€โ”€ videos.js               # 12 static videos + helper functions
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ App.jsx                     # Route definitions
โ”‚   โ”œโ”€โ”€ main.jsx                    # React DOM entry point
โ”‚   โ””โ”€โ”€ index.css                   # Tailwind directives + custom styles
โ”‚
โ”œโ”€โ”€ index.html
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ tailwind.config.js
โ”œโ”€โ”€ postcss.config.js
โ””โ”€โ”€ vite.config.js

๐Ÿš€ Getting Started

๐ŸŒ Option 1 โ€” Use Live Demo (Easiest)

Visit directly โ†’ https://stream-flow-jet.vercel.app/ No installation needed!

๐Ÿ’ป Option 2 โ€” Run Locally

Prerequisites

Installation & Run

# 1. Clone the repository
git clone https://github.com/SurajPatil1404/StreamFlow.git

# 2. Navigate into the project
cd StreamFlow

# 3. Install dependencies
npm install

# 4. Start the dev server
npm run dev

Open your browser โ†’ http://localhost:5173

Production Build

npm run build
npm run preview

๐Ÿ“ธ Pages Overview

๐Ÿ  Home Page โ€” /

Hero banner with gradient design + horizontally scrollable category filter chips + responsive video grid (1 โ†’ 2 โ†’ 3 โ†’ 4 columns). Each card shows thumbnail, duration badge, category tag, title, channel avatar, views, and upload date.

โ–ถ๏ธ Video Player โ€” /watch/:id

Real YouTube embedded player with autoplay + like, dislike, share, save, subscribe buttons + Focus Mode toggle + expandable video description + Smart Recommendations sidebar + full comments section.

๐Ÿ“Š Watch History โ€” /history

Stat cards (total minutes watched, videos watched, top category, channels explored) + category breakdown bar chart + 28-day learning streak heatmap + clear history button.

๐Ÿ” Search โ€” /search?q=...

Filters across title, channel, category, tags, and description + related category chips + trending search suggestions when query is empty.


โ˜๏ธ Deployment

This project is deployed on Vercel with automatic deployments on every push to main.

Environment URL
๐ŸŸข Production https://stream-flow-jet.vercel.app/

How We Deployed

  1. Pushed final code to GitHub main branch
  2. Connected GitHub repository to Vercel
  3. Vercel auto-detected Vite + React configuration
  4. Build command: npm run build
  5. Output directory: dist
  6. Auto-deploys on every push to main โœ…

๐ŸŒฟ Git Workflow

main
 โ”œโ”€โ”€ feat/suraj-pages       โ† Suraj Patil
 โ”œโ”€โ”€ feat/prithviraj-ui     โ† Prithviraj
 โ””โ”€โ”€ feat/onkar-data        โ† Onkar

Rules followed:

  • โŒ No direct pushes to main
  • โœ… Each member worked on their own feature branch
  • โœ… Pull Requests used to merge into main
  • โœ… Each member committed every day (April 18โ€“24)
  • โœ… Project deployed live on Vercel

๐ŸŽ“ Viva Preparation

โ“ Q1: What problem does StreamFlow solve?

YouTube is built for entertainment, not focused learning. It bombards users with ads, autoplay, and irrelevant recommendations. StreamFlow provides a distraction-free environment with Focus Mode, Watch History analytics, and study-relevant smart recommendations.

โ“ Q2: How does Focus Mode work?

A focusMode boolean is stored in AppContext. When toggled, components conditionally render based on this flag โ€” {!focusMode && <Sidebar />}. One click hides the sidebar, comments section, and recommendations panel completely.

โ“ Q3: How does Smart Recommendations work?

getRecommendations() scores every other video: +1 for each matching tag, +2 if the category matches. Videos are sorted by score descending and top 8 are shown.

const score = sharedTags.length + (sameCategory ? 2 : 0);

โ“ Q4: How is Watch History stored?

addToHistory(video) is called in useEffect when VideoPlayerPage mounts. Data saves to localStorage via JSON.stringify. HistoryPage uses useMemo to compute analytics (total watch time, top category, unique channels) from the history array.

โ“ Q5: What React hooks did you use?

Hook Where Used
useState Comments, likes, form inputs, local UI toggles
useEffect History on page load, dark class sync to DOM
useContext useApp() consumed by every component
useCallback addToHistory to prevent unnecessary re-renders
useMemo Analytics in HistoryPage, search filtering in SearchPage
useRef Category filter scroll container
useParams Get :id from URL in VideoPlayerPage
useSearchParams Read ?q= query from URL in SearchPage

โ“ Q6: Why Context API instead of prop drilling?

Global state like darkMode, watchHistory, and focusMode is needed by many unrelated components across the tree. Without Context, we'd pass props through 4-5 levels of components making code messy and hard to maintain. Context API provides a clean single source of truth accessible anywhere in the app without passing props manually.

โ“ Q7: What is the folder structure and why?

We separated code into components/ (reusable UI), pages/ (one per route), context/ (global state), and data/ (static data). This follows the separation of concerns principle โ€” each folder has one clear responsibility, making the codebase easy to navigate and maintain.

โ“ Q8: How did your team collaborate?

We used Git Feature Branch Workflow. Each member had their own branch โ€” Suraj owned pages, Prithviraj owned UI components, and Onkar owned data and context. We committed daily and merged via Pull Requests. The project is deployed live on Vercel at stream-flow-jet.vercel.app.

โ“ Q9: What makes StreamFlow different from YouTube?

Three key differences:

  1. Focus Mode โ€” removes all distractions instantly
  2. Learning Analytics โ€” tracks watch time, categories, and streak
  3. Smart Recommendations โ€” based on content similarity not engagement bait

๐Ÿ”ฎ Future Scope

  1. User Authentication โ€” Login/signup with JWT tokens and personalized profiles
  2. Real Backend โ€” Node.js + Express + MongoDB replacing static data
  3. Video Upload โ€” Allow creators to upload and host their own content
  4. AI Summaries โ€” OpenAI API for auto-generated timestamps and key takeaways
  5. Spaced Repetition โ€” Smart reminders to re-watch based on forgetting curves
  6. Study Rooms โ€” Real-time collaborative viewing with live chat
  7. PWA Support โ€” Offline mode with service workers
  8. Accessibility โ€” Full WCAG 2.1 compliance and keyboard navigation

๐Ÿ“„ License

Licensed under the MIT License โ€” see LICENSE for details.


Built with โค๏ธ by Team StreamFlow

Newton School of Technology โ€” Pune | College Project 2026

Suraj Patil ยท Prithviraj Ghorpade ยท Onkar Swami

๐Ÿš€ View Live Project

About

๐ŸŽฅ A modern video learning platform built with React. Features include Focus Mode, Watch History, Smart Recommendations, and personalized learning paths. A YouTube clone for college project.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors