Welcome to NodeStream, a personal portfolio project aiming to recreate the classic YouTube experience with modern technologies and a touch of AI. NodeStream seeks to provide a familiar yet enhanced video streaming platform.
- Classic YouTube Feel: NodeStream's design draws inspiration from the legacy YouTube interface, aiming for a nostalgic user experience.
- AI-Powered Content Creation:
- Gemini API & Cloudflare's Worker's AI: Generate compelling video titles, descriptions, and thumbnails using AI, streamlining the content creation process.
- Modern Tech Stack:
- Built on Next.js 15 for server-side rendering and performance.
- Bun.js for fast and efficient runtime.
- TypeScript for robust type safety.
- Tailwind CSS and Shadcn for a sleek and responsive UI.
- tRPC for seamless API communication.
- Mux for high-quality video streaming.
- UploadThing for efficient file uploads.
- Upstash for rate limiting and AI background jobs.
- Drizzle ORM for serverless SQL database management.
π¦ NodeStream
ββ .gitignore
ββ .vscode
β ββ settings.json
ββ LICENSE
ββ README.md
ββ bun.lock
ββ components.json
ββ drizzle.config.ts
ββ eslint.config.mjs
ββ next.config.ts
ββ package-lock.json
ββ package.json
ββ postcss.config.mjs
ββ public
β ββ file.svg
β ββ globe.svg
β ββ logo.svg
β ββ next.svg
β ββ placeholder.svg
β ββ user-placeholder.svg
β ββ vercel.svg
β ββ window.svg
ββ src
β ββ app
β β ββ (auth)
β β β ββ layout.tsx
β β β ββ sign-in
β β β β ββ [[...sign-in]]
β β β β ββ page.tsx
β β β ββ sign-up
β β β ββ [[...sign-up]]
β β β ββ page.tsx
β β ββ (home)
β β β ββ feed
β β β β ββ subscriptions
β β β β β ββ page.tsx
β β β β ββ trending
β β β β ββ page.tsx
β β β ββ layout.tsx
β β β ββ page.tsx
β β β ββ playlists
β β β β ββ [playlistId]
β β β β β ββ page.tsx
β β β β ββ history
β β β β β ββ page.tsx
β β β β ββ liked
β β β β β ββ page.tsx
β β β β ββ page.tsx
β β β ββ search
β β β β ββ page.tsx
β β β ββ subscriptions
β β β β ββ page.tsx
β β β ββ users
β β β β ββ [userId]
β β β β β ββ page.tsx
β β β β ββ current
β β β β ββ route.ts
β β β ββ videos
β β β ββ [videoId]
β β β ββ page.tsx
β β ββ (studio)
β β β ββ layout.tsx
β β β ββ studio
β β β ββ page.tsx
β β β ββ videos
β β β ββ [videoId]
β β β ββ page.tsx
β β ββ api
β β β ββ trpc
β β β β ββ [trpc]
β β β β ββ route.ts
β β β ββ uploadthing
β β β β ββ core.ts
β β β β ββ route.ts
β β β ββ users
β β β β ββ webhook
β β β β ββ route.ts
β β β ββ videos
β β β ββ webhook
β β β β ββ route.ts
β β β ββ workflows
β β β ββ description
β β β β ββ route.ts
β β β ββ thumbnail
β β β β ββ route.ts
β β β ββ title
β β β ββ route.ts
β β ββ favicon.ico
β β ββ globals.css
β β ββ layout.tsx
β ββ components
β β ββ filter-carousel.tsx
β β ββ infinite-scroll.tsx
β β ββ responsive-modal.tsx
β β ββ theme-changer.tsx
β β ββ theme-provider.tsx
β β ββ ui
β β β ββ accordion.tsx
β β β ββ alert-dialog.tsx
β β β ββ alert.tsx
β β β ββ aspect-ratio.tsx
β β β ββ avatar.tsx
β β β ββ badge.tsx
β β β ββ breadcrumb.tsx
β β β ββ button.tsx
β β β ββ calendar.tsx
β β β ββ card.tsx
β β β ββ carousel.tsx
β β β ββ chart.tsx
β β β ββ checkbox.tsx
β β β ββ collapsible.tsx
β β β ββ command.tsx
β β β ββ context-menu.tsx
β β β ββ dialog.tsx
β β β ββ drawer.tsx
β β β ββ dropdown-menu.tsx
β β β ββ form.tsx
β β β ββ hover-card.tsx
β β β ββ input-otp.tsx
β β β ββ input.tsx
β β β ββ label.tsx
β β β ββ menubar.tsx
β β β ββ navigation-menu.tsx
β β β ββ pagination.tsx
β β β ββ popover.tsx
β β β ββ progress.tsx
β β β ββ radio-group.tsx
β β β ββ resizable.tsx
β β β ββ scroll-area.tsx
β β β ββ select.tsx
β β β ββ separator.tsx
β β β ββ sheet.tsx
β β β ββ sidebar.tsx
β β β ββ skeleton.tsx
β β β ββ slider.tsx
β β β ββ sonner.tsx
β β β ββ switch.tsx
β β β ββ table.tsx
β β β ββ tabs.tsx
β β β ββ textarea.tsx
β β β ββ toast.tsx
β β β ββ toaster.tsx
β β β ββ toggle-group.tsx
β β β ββ toggle.tsx
β β β ββ tooltip.tsx
β β ββ user-avatar.tsx
β ββ constants.ts
β ββ db
β β ββ index.ts
β β ββ schema.ts
β ββ hooks
β β ββ use-intersection-observer.ts
β β ββ use-mobile.tsx
β β ββ use-toast.ts
β ββ lib
β β ββ mux.ts
β β ββ ratelimit.ts
β β ββ redis.ts
β β ββ uploadthing.ts
β β ββ utils.ts
β β ββ workflow.ts
β ββ middleware.ts
β ββ modules
β β ββ auth
β β β ββ ui
β β β ββ components
β β β ββ auth-button.tsx
β β ββ categories
β β β ββ server
β β β ββ procedures.ts
β β ββ comment-reactions
β β β ββ server
β β β ββ procedures.ts
β β ββ comments
β β β ββ server
β β β β ββ procedures.ts
β β β ββ types.ts
β β β ββ ui
β β β ββ components
β β β ββ comment-form.tsx
β β β ββ comment-item.tsx
β β β ββ comment-replies.tsx
β β ββ home
β β β ββ ui
β β β ββ components
β β β β ββ home-navbar
β β β β β ββ index.tsx
β β β β β ββ search-input.tsx
β β β β ββ home-sidebar
β β β β ββ index.tsx
β β β β ββ main-section.tsx
β β β β ββ personal-section.tsx
β β β β ββ subscriptions-section.tsx
β β β ββ layouts
β β β β ββ home-layout.tsx
β β β ββ sections
β β β β ββ categories-section.tsx
β β β β ββ home-videos-section.tsx
β β β β ββ subscribed-videos-section.tsx
β β β β ββ trending-videos-section.tsx
β β β ββ views
β β β ββ home-view.tsx
β β β ββ subscribed-view.tsx
β β β ββ trending-view.tsx
β β ββ playlists
β β β ββ server
β β β β ββ procedures.ts
β β β ββ types.ts
β β β ββ ui
β β β ββ components
β β β β ββ playlist-add-modal.tsx
β β β β ββ playlist-create-modal.tsx
β β β β ββ playlist-grid-card
β β β β ββ index.tsx
β β β β ββ playlist-info.tsx
β β β β ββ playlist-thumbnail.tsx
β β β ββ sections
β β β β ββ history-videos-section.tsx
β β β β ββ liked-videos-section.tsx
β β β β ββ playlist-header-section.tsx
β β β β ββ playlists-section.tsx
β β β β ββ videos-section.tsx
β β β ββ views
β β β ββ history-view.tsx
β β β ββ liked-view.tsx
β β β ββ playlists-view.tsx
β β β ββ videos-view.tsx
β β ββ search
β β β ββ server
β β β β ββ procedures.ts
β β β ββ ui
β β β ββ sections
β β β β ββ categories-section.tsx
β β β β ββ results-section.tsx
β β β ββ views
β β β ββ search-view.tsx
β β ββ studio
β β β ββ server
β β β β ββ procedures.ts
β β β ββ ui
β β β ββ components
β β β β ββ studio-navbar
β β β β β ββ index.tsx
β β β β ββ studio-sidebar
β β β β β ββ index.tsx
β β β β β ββ studio-sidebar-header.tsx
β β β β ββ studio-upload-modal.tsx
β β β β ββ studio-uploader.tsx
β β β β ββ thumbnail-generate-modal.tsx
β β β β ββ thumbnail-upload-modal.tsx
β β β ββ layouts
β β β β ββ studio-layout.tsx
β β β ββ sections
β β β β ββ form-section.tsx
β β β β ββ videos-section.tsx
β β β ββ views
β β β ββ studio-view.tsx
β β β ββ video-view.tsx
β β ββ subscriptions
β β β ββ hooks
β β β β ββ use-subscriptions.ts
β β β ββ server
β β β β ββ procedures.ts
β β β ββ ui
β β β ββ components
β β β β ββ subscription-button.tsx
β β β β ββ subscriptions-item.tsx
β β β ββ sections
β β β β ββ subscriptions-section.tsx
β β β ββ views
β β β ββ subscriptions-view.tsx
β β ββ suggestions
β β β ββ server
β β β ββ procedures.ts
β β ββ users
β β β ββ server
β β β β ββ procedures.ts
β β β ββ types.ts
β β β ββ ui
β β β ββ components
β β β β ββ banner-upload-modal.tsx
β β β β ββ user-info.tsx
β β β β ββ user-page-banner.tsx
β β β β ββ user-page-info.tsx
β β β ββ sections
β β β β ββ user-section.tsx
β β β β ββ videos-section.tsx
β β β ββ views
β β β ββ user-views.tsx
β β ββ video-reactions
β β β ββ server
β β β ββ procedures.ts
β β ββ video-views
β β β ββ server
β β β ββ procedures.ts
β β ββ videos
β β ββ server
β β β ββ procedures.ts
β β ββ types.ts
β β ββ ui
β β ββ components
β β β ββ video-banner.tsx
β β β ββ video-description.tsx
β β β ββ video-grid-card.tsx
β β β ββ video-info.tsx
β β β ββ video-menu.tsx
β β β ββ video-owner.tsx
β β β ββ video-player.tsx
β β β ββ video-reactions.tsx
β β β ββ video-row-card.tsx
β β β ββ video-thumbnail.tsx
β β β ββ video-top-row.tsx
β β ββ sections
β β β ββ comments-section.tsx
β β β ββ suggestions-section.tsx
β β β ββ videos-section.tsx
β β ββ views
β β ββ video-view.tsx
β ββ scripts
β β ββ seed-categories.ts
β ββ trpc
β ββ client.tsx
β ββ init.ts
β ββ query-client.ts
β ββ routers
β β ββ _app.ts
β ββ server.tsx
ββ tailwind.config.ts
ββ tsconfig.json
-
Clone the repository:
git clone https://github.com/dev-sire/NodeStream.git
-
Install dependencies:
bun install
-
Set up environment variables:
- Create a
.env.localfile and add your API keys, database credentials, and other necessary environment variables.
- Create a
-
Run the development server:
bun run dev
-
Open your browser and navigate to
http://localhost:3000.
Contributions are welcome! If you'd like to contribute:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and submit a pull request.
- We appreciate contributions for bug fixes, UI improvements, and new features that align with the project's vision.
This project is licensed under the Mozilla Public License 2.0.
- Live chat functionality.
- Enhanced video editing tools.
- Improved AI-powered recommendation system.
For questions, feedback, or collaboration, please reach out:
- LinkedIn: Aman Shahid