An open API service indexing awesome lists of open source software.

https://github.com/sunanda01/stream_nest

StreamNest is a modern video sharing platform built with Next.js App Router, Cloudinary for video hosting, and Supabase PostgreSQL for scalable data storage. Featuring secure file uploads, thumbnail support, and Arcjet-based abuse protection β€” fully type-safe with Drizzle ORM.
https://github.com/sunanda01/stream_nest

arcjet better-auth cloudinary drizzle-orm nextjs postgresql screen-re supabase tailwindcss typescript

Last synced: 11 days ago
JSON representation

StreamNest is a modern video sharing platform built with Next.js App Router, Cloudinary for video hosting, and Supabase PostgreSQL for scalable data storage. Featuring secure file uploads, thumbnail support, and Arcjet-based abuse protection β€” fully type-safe with Drizzle ORM.

Awesome Lists containing this project

README

          

This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](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`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.

---

## πŸ“Œ NOTE
This is the updated version of the original project: [Video_Streaming](https://github.com/Sunanda01/Video_Streaming.git)

---

## ▢️ What’s New in StreamNest

> 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.

---

Poster

---

## Quick Glimpses


SignIn Page
Register Page
Home Page
Home Page


Home Page
Home Page


Filter
Filter
Update Visibility
Update Visibility


Video Detail Page
Video Detail Page
Profile Page
Profile Page


Start Recording
Start Recording
Stop Recording
Stop Recording


Screen Recording
Screen Recording
Upload Video
Upload Video

---

## Clone the repo

```bash
git clone https://github.com/Sunanda01/StreamNest.git
```
---

## Add .env of this project

```bash

NEXT_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=""

```

---

## Architecture Overview

```bash

🌍 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) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

```
---

## πŸ”„ Key Architecture Changes

| 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) |

---