Vynce is a full-stack YouTube clone built using Next.js 15 (Page Router), React 19, TypeScript, and MongoDB.
It supports video uploads, playback, authentication, subscriptions, and real-time interactions with a modern, responsive UI.
β
Authentication & JWT β Secure Firebase Auth + JSON Web Tokens
πΉ Video Upload & Streaming β Handled via vercel blob
π¬ Comments & Reactions β Real-time comment system using MongoDB
π¬ Custom Video Player β Responsive player with progress tracking
πΊ Channel System β Subscribe/unsubscribe, view channel videos
π Watch Later & History β Manage viewing preferences and activity
π Search & Pagination β Find videos easily with server-side filtering
π¨ Modern UI β TailwindCSS v4 + Radix UI + Lucide Icons
π Dark/Light Themes β Managed using next-themes
βοΈ Full REST API β Modular, structured API endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/channel/:id |
Get channel by ID |
| POST | /api/channel |
Create a new channel |
| PUT | /api/channel |
Toggle subscribe/unsubscribe |
| GET | /api/channel/subscriptions |
Get subscribed channels |
| GET | /api/comment?id= |
Get comments for a video |
| POST | /api/comment |
Add a new comment |
| PUT | /api/comment |
Edit comment |
| DELETE | /api/comment |
Delete comment |
| GET | /api/video?page=1&limit=8&search= |
Get paginated videos |
| POST | /api/video |
Upload new video |
| GET/PUT | /api/video/react |
Get or react to videos |
| GET/PUT | /api/watch |
Watch later management |
| POST | /api/auth |
Authenticate user |
| GET/POST/PATCH/DELETE | /api/history |
Manage history (CRUD) |
| Category | Technology |
|---|---|
| Frontend | Next.js 15 (Page Router), React 19, TypeScript |
| Backend | Next.js API Routes, Firebase, MongoDB (Mongoose) |
| Styling | TailwindCSS v4, Radix UI, Lucide React Icons |
| Auth | Firebase Auth + JWT |
| Uploads | Vercel Blob |
| Utilities | Axios, clsx, class-variance-authority |
| Deployment | Vercel |
src/
βββ components/ # Reusable UI components
βββ context/ # Global app state (Auth, Video, Comments)
βββ controllers/ # API logic (Channel, Comment, Video, etc.)
βββ hooks/ # Custom React hooks
βββ lib/ # Firebase, JWT, Axios, utils
βββ middleware/ # Authentication & DB connections
βββ models/ # MongoDB (Mongoose) schemas
βββ pages/ # Next.js Page Router + API routes
βββ services/ # Axios service wrappers
βββ types/ # TypeScript definitions
git clone https://github.com/grep-many/vynce.git
cd vyncenpm installMONGO_URI=mongodb://localhost:27017/vynce
BASE_URL=http://localhost:3000/api
ACCESS_TOKEN_SECRET=your_jwt_secret
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_auth_domain
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_idnpm run devThen open http://localhost:3000
- Server-side rendering (SSR) for better SEO & performance
- Scalable modular structure for maintainability
- Context-based global state management
- Responsive & accessible UI following modern design standards
- Push code to GitHub
- Connect the repo to Vercel
- Set environment variables
- Click Deploy π
Live Demo: here
Built with β€οΈ to explore video platforms, scalable APIs, and modern full-stack development with Next.js and Firebase.