EchoDeck is a collaborative streaming queue web app where creators can manage video queues and listeners can upvote or suggest tracks in real time. Built with Next.js 14 App Router, Prisma, PostgreSQL, and NextAuth, it delivers a smooth and interactive experience for managing media queues.
- 🔐 Google Authentication via NextAuth
- 🎥 Video Queue System for creators
- 👍 Upvote mechanism to prioritize videos
- 👥 Multiple user roles: Creator & Listener
- 🧹 Queue clearing logic with persistent database sync
- 📡 Dynamic rendering of the current video and playlist
- 💾 PostgreSQL + Prisma ORM for type-safe DB operations
- ⚡ Real-time state updates (planned with websockets or polling)
| Tech | Description |
|---|---|
| Next.js 14 | App Router for file-based routing |
| TypeScript | Strong typing across the app |
| PostgreSQL | Relational database |
| Prisma | Type-safe ORM with codegen |
| NextAuth | Auth system with Google OAuth |
| Tailwind CSS | Styling framework (optional, if used) |
The app uses the following main Prisma models:
User— Authenticated user infoStream— Represents each media itemCurrentStream— Tracks the currently playing streamUpvote— Voting table for prioritizing queue
Refer to prisma/schema.prisma for detailed definitions.
-
Clone the repo
git clone https://github.com/yourusername/echodeck.git cd echodeck -
Install dependencies
npm install
-
Configure environment variables
Create a
.envfile in the root:DATABASE_URL=postgresql://your-db-url GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret NEXTAUTH_SECRET=your-nextauth-secret
-
Set up Prisma
npx prisma generate npx prisma migrate dev --name init
-
Run the development server
npm run dev
app/
│
├── api/
│ ├── streams/
│ │ ├── route.ts # Fetch streams
│ │ └── clear/route.ts # Clear queue logic
│ └── auth/[...nextauth]/ # NextAuth route handler
│
├── lib/
│ └── db.ts # Prisma client instance
│
├── creator/[creatorId]/ # Creator dashboard
└── ...
- WebSocket support for real-time queue updates
- Admin dashboard for creators
- Spotify integration
- Listener chatroom feature
Pull requests and feedback are welcome! Let's build a better streaming experience together.
MIT © 2025 Aakash Joshi
Let me know if you'd like to add badges, a demo link, or tailor this for deployment (like Vercel/Render/etc).