A YouTube-inspired smart video learning platform with Focus Mode, Watch History Analytics, and Smart Recommendations.
| 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 |
- About
- Live Demo
- Features
- Tech Stack
- Folder Structure
- Getting Started
- Pages Overview
- Deployment
- Git Workflow
- Viva Preparation
- Future Scope
Students and self-learners using YouTube face constant distractions โ ads, irrelevant recommendations, comment rabbit holes, and no way to track their actual learning progress.
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
Deployed on Vercel โ No installation needed!
| ๐ Live URL | https://stream-flow-jet.vercel.app/ |
| ๐ฆ Repository | https://github.com/SurajPatil1404/StreamFlow |
| Feature | Description |
|---|---|
| ๐ Homepage Feed | Responsive video grid with thumbnails, channel info, views, and category tags |
| 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) |
| 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 |
| 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 |
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
Visit directly โ https://stream-flow-jet.vercel.app/ No installation needed!
- Node.js v18+ โ nodejs.org
- Git โ git-scm.com
# 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 devOpen your browser โ http://localhost:5173
npm run build
npm run previewHero 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.
Real YouTube embedded player with autoplay + like, dislike, share, save, subscribe buttons + Focus Mode toggle + expandable video description + Smart Recommendations sidebar + full comments section.
Stat cards (total minutes watched, videos watched, top category, channels explored) + category breakdown bar chart + 28-day learning streak heatmap + clear history button.
Filters across title, channel, category, tags, and description + related category chips + trending search suggestions when query is empty.
This project is deployed on Vercel with automatic deployments on every push to main.
| Environment | URL |
|---|---|
| ๐ข Production | https://stream-flow-jet.vercel.app/ |
- Pushed final code to GitHub
mainbranch - Connected GitHub repository to Vercel
- Vercel auto-detected Vite + React configuration
- Build command:
npm run build - Output directory:
dist - Auto-deploys on every push to
mainโ
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
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.
A
focusModeboolean is stored inAppContext. When toggled, components conditionally render based on this flag โ{!focusMode && <Sidebar />}. One click hides the sidebar, comments section, and recommendations panel completely.
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);
addToHistory(video)is called inuseEffectwhen VideoPlayerPage mounts. Data saves tolocalStorageviaJSON.stringify. HistoryPage usesuseMemoto compute analytics (total watch time, top category, unique channels) from the history array.
| 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 |
Global state like
darkMode,watchHistory, andfocusModeis 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.
We separated code into
components/(reusable UI),pages/(one per route),context/(global state), anddata/(static data). This follows the separation of concerns principle โ each folder has one clear responsibility, making the codebase easy to navigate and maintain.
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.
Three key differences:
- Focus Mode โ removes all distractions instantly
- Learning Analytics โ tracks watch time, categories, and streak
- Smart Recommendations โ based on content similarity not engagement bait
- User Authentication โ Login/signup with JWT tokens and personalized profiles
- Real Backend โ Node.js + Express + MongoDB replacing static data
- Video Upload โ Allow creators to upload and host their own content
- AI Summaries โ OpenAI API for auto-generated timestamps and key takeaways
- Spaced Repetition โ Smart reminders to re-watch based on forgetting curves
- Study Rooms โ Real-time collaborative viewing with live chat
- PWA Support โ Offline mode with service workers
- Accessibility โ Full WCAG 2.1 compliance and keyboard navigation
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