Skip to content

πŸŽ₯ Vynce β€” A full-stack YouTube clone built with Next.js 15, React 19, Firebase Auth, and MongoDB. Features video uploads, streaming, subscriptions, comments, history, and a responsive modern UI powered by TailwindCSS. Deployed seamlessly on Vercel.

Notifications You must be signed in to change notification settings

grep-many/vynce

Repository files navigation

πŸŽ₯ Vynce – YouTube Clone (Next.js 15 + Firebase + MongoDB)

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.


πŸš€ Features

βœ… 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


🧩 API Endpoints Overview

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)

🧰 Tech Stack

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

πŸ“ Project Structure

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

βš™οΈ Getting Started

1️⃣ Clone the repository

git clone https://github.com/grep-many/vynce.git
cd vynce

2️⃣ Install dependencies

npm install

3️⃣ Set up .env.local

MONGO_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_id

4️⃣ Run the development server

npm run dev

Then open http://localhost:3000


🧠 Key Highlights

  • 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

🌍 Deployment (Vercel)

  1. Push code to GitHub
  2. Connect the repo to Vercel
  3. Set environment variables
  4. Click Deploy πŸš€

Live Demo: here


πŸ’‘ Inspiration

Built with ❀️ to explore video platforms, scalable APIs, and modern full-stack development with Next.js and Firebase.

About

πŸŽ₯ Vynce β€” A full-stack YouTube clone built with Next.js 15, React 19, Firebase Auth, and MongoDB. Features video uploads, streaming, subscriptions, comments, history, and a responsive modern UI powered by TailwindCSS. Deployed seamlessly on Vercel.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published