This is a Next.js project bootstrapped with create-next-app.
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun devOpen http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
This is the updated version of the original project: Video_Streaming
StreamNest is a refactored and production-ready evolution of the original Video_Streaming app — built with better architecture, improved developer experience, and scalable backend services.
A video streaming platform designed to deliver high-quality content with a smooth user experience that supports screen recording and uploading video.
SignIn Page![]() |
Home Page![]() |
Home Page![]() |
|
Filter![]() |
Update Visibility![]() |
Video Detail Page![]() |
Profile Page![]() |
Start Recording![]() |
Stop Recording![]() |
Screen Recording![]() |
Upload Video![]() |
git clone https://github.com/Sunanda01/StreamNest.gitNEXT_PUBLIC_BASE_URL=
#Better Auth
BETTER_AUTH_SECRET=
BETTER_AUTH_URL=
#Google Cloud
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
#Arcjet
ARCJET_API_KEY=
#Supabase
SUPABASE_PROJECT_PASSWORD=
DATABASE_URL_POSTGRES=
#Cloudinary
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=""
NEXT_PUBLIC_CLOUDINARY_API_KEY=""
CLOUDINARY_API_SECRET=""
🌍 Client (Browser)
│
┌──────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
Upload Video Upload Thumbnail View Video
(FormData) (FormData) (HLS/URL)
│ │ │
▼ ▼ │
┌────────────────┐ ┌────────────────┐ │
│ Cloudinary API │ │ Cloudinary API │ │
│ (video/upload) │ │ (image/upload) │ │
└────────────────┘ └────────────────┘ │
│ │ │
▼ ▼ │
Secure URLs saved in ↓ │
┌─────────────────────────┘
│
┌───────▼────────┐
│ API Layer │
│ (Next.js + SA) │
└───────┬────────┘
│
┌──────▼──────┐
│ Arcjet │ ◄─ Bot detection, abuse filter
└──────┬──────┘
│
┌──────────▼────────────────┐
│ Drizzle ORM (type-safe) │
└──────────┬────────────────┘
│
┌────────▼────────┐
│ Supabase DB │
│ (PostgreSQL) │
└─────────────────┘
| Component | Before | Now |
|---|---|---|
| Video Upload | Bunny CDN (HLS) | Cloudinary (via /video/upload) |
| Thumbnail Upload | Bunny / Static or Xata | Cloudinary (/image/upload) |
| Database | Xata + PostgreSQL (via Drizzle) | Supabase PostgreSQL (via Drizzle ORM) |
| Bot Protection | Arcjet | Arcjet (unchanged) |
| ORM | Drizzle | Drizzle (still used with Supabase) |











