Transform discussions into structured debates with live participation, team collaboration, and instant polling
Features โข Demo โข Quick Start โข Tech Stack โข Documentation
DEB8 is a cutting-edge platform that revolutionizes online debates and discussions. Whether you're hosting a structured 2v2 debate, organizing a free-for-all discussion, or conducting live polls, DEB8 provides the tools to make every voice heard in real-time.
Perfect for educators, debate clubs, community organizers, and anyone who wants to facilitate meaningful conversations online.
- 2v2 Team Debates - Structured debates with two teams arguing opposing viewpoints
- Free-for-All Rooms - Open discussions where everyone can participate
- Role-Based Participation - Join as debater or audience member
- Private Rooms - Password-protected debates for exclusive discussions
- Create custom polls with multiple options
- Real-time vote tracking and results visualization
- Category-based poll organization
- Time-limited polls with countdown timers
- User vote history and participation tracking
- Instant message delivery with WebSocket technology
- Team-specific chat channels in 2v2 debates
- Message history preservation
- Typing indicators and online status
- Secure JWT-based authentication
- User profiles with activity statistics
- Personal debate and poll history
- Password recovery and account management
- Modern, responsive design with Tailwind CSS
- Smooth animations with Framer Motion
- Material-UI components for consistency
- Dark mode support (coming soon)
Experience DEB8 in action: https://mydeb8.netlify.app
- Create a free account in seconds
- Browse trending debates and active polls
- Join a public debate or create your own
- Cast your vote in live polls
- Track your participation in your profile
Frontend:
- โ๏ธ React 18 - Component-based UI framework
- โก Vite - Lightning-fast build tool and dev server
- ๐จ Tailwind CSS - Utility-first CSS framework
- ๐งฉ Material-UI - Pre-built React components
- ๐ฌ Framer Motion - Animation library for smooth transitions
- ๐บ๏ธ React Router - Client-side routing
- ๐ Socket.io Client - Real-time WebSocket communication
- ๐ Axios - HTTP client for API requests
Backend:
- ๐ Express.js - Fast, unopinionated web framework
- ๐๏ธ MongoDB - NoSQL database for flexible data storage
- ๐ฆ Mongoose - Elegant MongoDB object modeling
- ๐ Socket.io - Real-time bidirectional event-based communication
- ๐ JWT - Secure authentication tokens
- ๐ bcrypt.js - Password hashing for security
- ๐ CORS - Cross-origin resource sharing
- ๐ dotenv - Environment variable management
Before you begin, ensure you have the following installed:
- ๐ฆ Node.js (v16 or higher) - Download
- ๐๏ธ MongoDB (v5 or higher) - Download
- ๐ npm or yarn - Comes with Node.js
git clone https://github.com/K007-K/DEB8.git
cd DEB8npm install# Copy the example environment file
cp .env.example .env
# Edit .env with your configuration
nano .env # or use your preferred editorRequired Environment Variables:
# MongoDB Configuration
MONGODB_URI=mongodb://localhost:27017/deb8
# Server Configuration
PORT=5000
NODE_ENV=development
# JWT Configuration
JWT_SECRET=your_super_secret_jwt_key_here
JWT_EXPIRE=7d
# Frontend URL (for CORS)
CLIENT_URL=http://localhost:5173# macOS/Linux
mongod
# Windows
mongod.exeOption A: Development Mode (Recommended)
# Terminal 1: Start the backend server
npm run server
# Terminal 2: Start the frontend dev server
npm run devOption B: Using Concurrently (Coming Soon)
npm run dev:all- ๐จ Frontend: http://localhost:5173
- ๐ง Backend API: http://localhost:5000
- ๐ API Health Check: http://localhost:5000/api/health
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CLIENT LAYER โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ React UI โ โ WebSocket โ โ Axios โ โ
โ โ Components โ โ Client โ โ HTTP Client โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SERVER LAYER โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Express.js โ โ Socket.io โ โ JWT Auth โ โ
โ โ Routes โ โ Server โ โ Middleware โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATABASE LAYER โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Users โ โ Rooms โ โ Polls โ โ
โ โ Collection โ โ Collection โ โ Collection โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ MongoDB Atlas โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
-
๐ฑ Frontend Layer
- React-based SPA with modern UI/UX
- Real-time updates via Socket.io
- RESTful API integration with Axios
- Client-side routing with React Router
-
โ๏ธ Backend Layer
- Express.js API server
- JWT-based authentication
- WebSocket server for real-time features
- CORS configuration for secure cross-origin requests
-
๐๏ธ Database Layer
- MongoDB for flexible data storage
- Mongoose ODM for data modeling
- Indexed collections for optimal performance
- Automatic timestamps and validation
DEB8/
โโโ ๐ public/ # Static assets
โ โโโ index.html
โ โโโ _redirects.txt
โโโ ๐ server/ # Backend application
โ โโโ index.js # Main server file
โ โโโ ๐ models/ # Database models
โ โโโ Room.js # Room schema
โโโ ๐ src/ # Frontend application
โ โโโ ๐ api/ # API configuration
โ โ โโโ axios.js # Axios instance with auth
โ โ โโโ axiosNoAuth.js # Axios without auth
โ โโโ ๐ components/ # Reusable components
โ โ โโโ Header.jsx
โ โ โโโ PollCard.jsx
โ โ โโโ ...
โ โโโ ๐ context/ # React context providers
โ โ โโโ AuthContext.jsx
โ โโโ ๐ pages/ # Page components
โ โ โโโ LandingPage.jsx
โ โ โโโ HomePage.jsx
โ โ โโโ RoomPage.jsx
โ โ โโโ ...
โ โโโ App.jsx # Main app component
โ โโโ main.jsx # App entry point
โ โโโ index.css # Global styles
โโโ ๐ .env.example # Environment variables template
โโโ ๐ .gitignore # Git ignore rules
โโโ ๐ .gitattributes # Git attributes
โโโ ๐ CONTRIBUTING.md # Contribution guidelines
โโโ ๐ package.json # Dependencies and scripts
โโโ ๐ tailwind.config.js # Tailwind configuration
โโโ ๐ vite.config.js # Vite configuration
โโโ ๐ README.md # This file
- Navigate to Create Room from the home page
- Choose Format: 2v2 Team Debate or Free-for-All
- Fill Details:
- Topic and description
- Category selection
- Max participants (for free-for-all)
- Team names and descriptions (for 2v2)
- Privacy Options: Make it public or private with password
- Launch and share the room ID with participants
- Go to Create Poll section
- Enter Question that you want to ask
- Add Options (minimum 2, maximum unlimited)
- Select Category for organization
- Set End Date for the poll
- Publish and share with your audience
- Public Rooms: Browse and join directly
- Private Rooms: Enter room ID and password
- Choose Role: Debater or Audience
- For 2v2: Select your team
# Start frontend development server
npm run dev
# Start backend server
npm run server
# Build for production
npm run build
# Preview production build
npm run preview
# Run linter
npm run lint- Frontend Development: Runs on
http://localhost:5173 - Backend Development: Runs on
http://localhost:5000 - MongoDB: Local instance on
mongodb://localhost:27017/deb8
POST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/verify- Verify JWT token
GET /api/rooms- Get user's roomsGET /api/rooms/debates- Get all debate roomsPOST /api/rooms- Create new roomGET /api/rooms/:roomId- Get room detailsPOST /api/rooms/:roomId/join- Join a roomDELETE /api/rooms/:roomId- Delete room
GET /api/polls- Get all pollsGET /api/polls/trending- Get trending pollsPOST /api/polls- Create new pollPOST /api/polls/:pollId/vote- Vote on a pollGET /api/polls/my-polls- Get user's polls
GET /api/users/profile- Get user profileGET /api/users/room-history- Get user's room history
- Build the project:
npm run build- Deploy to Netlify:
# Install Netlify CLI
npm install -g netlify-cli
# Deploy
netlify deploy --prod- Set environment variables on your hosting platform
- Connect your GitHub repository
- Set build command:
npm install - Set start command:
npm run server
- Create a free cluster at MongoDB Atlas
- Get your connection string
- Update
MONGODB_URIin your environment variables
We love contributions! Please see CONTRIBUTING.md for detailed guidelines.
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with โค๏ธ by the DEB8 team
- Inspired by the need for better online debate platforms
- Special thanks to all our contributors
- ๐ง Email: karthikuramdasu@gmail.com
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Website: https://mydeb8.netlify.app