A fully responsive vertical video feed app inspired by Instagram Reels and Facebook Shorts. Built using React.js, Tailwind CSS, and Context API. Optimized for smooth performance, mobile-first design, and modern UX behavior.
- Frontend: React.js (with Vite)
- Styling: Tailwind CSS
- Global State: React Context API
- Icons: Lucide React
- Optimizations: React.memo(), useCallback(), IntersectionObserver()
- Mock API: JSON files & local state
- One video per full-screen view (snap scrolling)
- Auto-play when in view, pause when out
- Functional video seekbar, with showing the length of the video
- Tap to toggle:
- Play/Pause (with central overlay icon)
- Mute/Unmute (top-left icon)
- Responsive to mobile, tablet, and desktop
- Hashtag + Creator Name + Follow button
- Reel title + 3-line clamped description
- Right side:
- Like (with optimistic UI)
- Comment count
- Share
- Tip/Earnings
- Three-dot menu
- Fixed bottom navbar (Home, Shorts, Add, Search, Profile)
- Dummy login screen using localStorage
- Blocks access to feed unless logged in
- Logout resets app state
- ✅
React.memo,useCallbackfor render optimization - ✅
IntersectionObserverfor auto video playback - ✅ Optimistic UI updates for like button
- ✅ Lazy video loading (only load when in view)
- ✅ Smooth icon transitions and responsive UX
. ├── eslint.config.js ├── .gitignore ├── index.html ├── package.json ├── package-lock.json ├── public │ ├── data │ │ ├── reels-page-1.json │ │ ├── reels-page-2.json │ │ └── reels-page-3.json │ └── vite.svg ├── README.md ├── src │ ├── App.jsx │ ├── assets │ │ └── react.svg │ ├── components │ │ ├── BottomNav.jsx │ │ ├── FollowButton.jsx │ │ ├── LikeButton.jsx │ │ ├── LoadingScreen.jsx │ │ ├── ReelCard.jsx │ │ └── VideoSeekbar.jsx │ ├── context │ │ └── ReelsContext.jsx │ ├── hooks │ │ └── useInView.js │ ├── index.css │ ├── main.jsx │ ├── pages │ │ └── LoginPage.jsx │ └── services │ └── reelService.js └── vite.config.js 10 directories, 25 files Prantik Ghosh
Frontend Web Developer | React.Js Developer GitHub: @tbs96
This project meets all requirements from the assignment PDF — including bonus features.