(UPDATE) - with the latest dependencies updates, you will have to do some small config changes.
S3MER is an innovative and customizable live streaming platform designed to revolutionize the streaming experience. It offers a feature-rich environment akin to popular platforms, while integrating cutting-edge technologies for enhanced security, customization, and seamless user interaction.
π S3MER Platform π₯
This repository hosts a cutting-edge livestream platform built upon a robust tech stack utilizing TypeScript, React, Next.js, and TailwindCSS to provide a dynamic and responsive user interface. Leveraging the power of Shadcn-ui and Clerk, LiveStreamX delivers a visually immersive experience with personalized themes and advanced user authentication capabilities.
- Frontend: TypeScript, React, Next.js, TailwindCSS, Shadcn-ui
- Prisma & MySQL: Ensuring efficient data management and storage.
- Socket.io & WebRTC: Enabling real-time communication and streaming capabilities.
- WebSockets, Clerk & JWT-decode: Strengthening secure data transmission and authentication.
- Livekit: Leveraging Livekit components, client, and server SDKs for enriched streaming functionalities.
- Tanstack/react-table & Zustand: Facilitating seamless data handling and state management.
- Uploadthing & Sonner: Streamlining file uploads and enhancing user interaction.
- Svix & Webhooks: Providing a robust integration framework for external services.
- NGROK: Enabling secure tunneling for local development and testing.
- RTMP and WHIP connections: Supporting diverse streaming protocols for broad compatibility.
- Server actions: Implementing comprehensive server-side functionalities for streamlined operations.
- Real-Time Streaming: Utilizing WebRTC and WebSockets for seamless live streaming capabilities.
- Security: Prioritizing robust security measures for user data and interactions. Integrated authentication, JWT, and additional security layers for user protection.
- Efficient Data Management: Leveraging Prisma, MySQL, and other technologies for efficient data management.
- Cutting-edge Technologies: Leveraging the latest in streaming technology to provide a seamless experience.
- Customizable UI/UX: Developed with TailwindCSS and Shadcn-ui, ensuring an engaging user interface. Empowering users with extensive customization options for their streaming environments.
- Scalable Architecture & Performance: Built with scalability in mind to accommodate growing user bases while maintaining optimal performance with a focus on delivering a smooth streaming experience.
This project is continuously evolving, incorporating new technologies and enhancements to deliver an exceptional live streaming experience. Contributions and feedback from the community are highly encouraged and welcomed!
Contributions to S#MER are welcome! Whether you're passionate about enhancing user experience, optimizing performance, or adding new features, your contributions are valued.
βββ .github/ # GitHub configuration
β βββ workflows/ # GitHub Actions workflows for CI/CD
βββ actions/ # Server actions
β βββ auth.ts # Authentication actions
β βββ db.ts # Database actions
β βββ streams.ts # Stream management actions
β βββ users.ts # User management actions
β βββ utils.ts # Utility functions
βββ api/ # Backend API
β βββ routes/ # API routes
β β βββ auth.js
β β βββ streams.js
β β βββ users.js
β βββ models/ # Database models
β β βββ User.js
β β βββ Stream.js
β βββ middlewares/ # Express middlewares
β β βββ auth.js
β β βββ errorHandler.js
β βββ utils/ # Utility functions
β β βββ db.js
β βββ server.js # Express server
β βββ index.js # Entry point
βββ app/ # Next.js app
β βββ pages/ # Next.js pages
β β βββ _app.tsx # Global app component
β β βββ _document.tsx # Custom document
β β βββ index.tsx # Home page
β β βββ .... # Other pages
β βββ components/ # React components
β β βββ Auth/
β β β βββ Login.tsx
β β β βββ Register.tsx
β β β βββ ....
β β βββ Home/
β β β βββ HomeHero.tsx
β β β βββ FeaturedStreams.tsx
β β β βββ ....
β β βββ Layout/
β β β βββ Header.tsx
β β β βββ Footer.tsx
β β β βββ ....
β β βββ Live/
β β β βββ LivePlayer.tsx
β β β βββ LiveChat.tsx
β β β βββ ....
β β βββ Profile/
β β β βββ ProfileHeader.tsx
β β β βββ ProfileContent.tsx
β β β βββ ....
β β βββ Settings/
β β β βββ AccountSettings.tsx
β β β βββ AppearanceSettings.tsx
β β β βββ ....
β β βββ Video/
β β βββ VideoPlayer.tsx
β β βββ VideoInfo.tsx
β β βββ ....
βββ hooks/ # Custom hooks
β βββ useAuth.ts
β βββ useStream.ts
β βββ ....
βββ lib/ # Shared lib
β βββ services # API clients
β βββ auth.ts
β βββ streams.ts
β βββ users.ts
βββ prisma/ # Prisma schema & migrations
β βββ schema.prisma
β βββ migrations/
βββ public/ # Static assets
β βββ fonts/
β βββ images/
β βββ styles/
βββ store/ # State management
β βββ index.ts
β βββ slices/
β βββ authSlice.ts
β βββ streamsSlice.ts
β βββ usersSlice.ts
βββ utils/ # Utility functions
β βββ formatTime.ts
β βββ ...
βββ next.config.js # Next.js configuration
βββ package.json
βββ README.md
βββ tsconfig.json
βββ ....
Typescript, React, Next.js, TailwindCSS, Shadcn-ui, Prisma, MySQL, Socket.io, WebRTC, WebSockets, Clerk, Clerk/themes, Livekit/components-react, Livekit-client, Livekit-server-sdk, Tanstack/react-table, Uploadthing, JWT-decode, Sonner, Svix, Ngrok, Zustand, Webhooks, RTMP and WHIP connections, Server actions and more.
# install dependencies
npm install
# or
yarn install
# or
pnpm install
# or
bun install
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=
CLERK_SECRET_KEY=
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/
CLERK_WEBHOOK_SECRET=
DATABASE_URL=''
LIVEKIT_API_URL=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
NEXT_PUBLIC_LIVEKIT_WS_URL=
UPLOADTHING_SECRET=
UPLOADTHING_APP_ID=
# install prisma
npm i @prisma/client
# init
npx prisma init
# create a new migration
npx prisma migrate
# create a new database
npx prisma db push
npx prisma studio
Open http://localhost:3000 with your browser to see the result.