Gangio is a full-featured chat and communication platform inspired by Discord. It provides real-time messaging, server-based communities, direct messaging, voice/video communication, and social features in a modern, responsive interface.
- Real-time Communication: Text, Voice, and Video channels.
- Server Management: Create/join servers, role & permission system, channel/category organization, invite system.
- User Management: Authentication (registration/login), profiles (avatar, banner, status, bio), friend system (requests/list), Steam integration.
- Messaging System: Rich text messages, attachments, reactions, mentions, message history, direct messaging.
- Responsive UI: Clean, modern interface inspired by Discord, built with Tailwind CSS.
- Performance: Optimized for speed and efficiency.
- Framework: Next.js (React)
- Styling: Tailwind CSS
- Database: MongoDB
- Real-time: WebSockets (implementation details may vary, e.g., Socket.IO, LiveKit, Pusher)
- Authentication: NextAuth.js (implied for session management and providers like Steam)
The application utilizes MongoDB for data storage. Key collections include:
users
servers
serverMembers
(Note: Uses camelCase)roles
categories
channels
messages
directMessages
badges
Performance is optimized through database indexing on frequently queried fields.
Important: For detailed schema information, indexing strategies, and specific development guidelines (like collection naming conventions), please refer to gangio.md
.
-
Clone the repository:
git clone <repository-url> cd gangio
-
Install dependencies:
npm install # or yarn install
-
Set up environment variables:
- Copy
.env.example
to.env.local
. - Fill in your MongoDB connection string (
MONGODB_URI
). - Add any necessary API keys or secrets (e.g.,
NEXTAUTH_SECRET
,NEXTAUTH_URL
,STEAM_API_KEY
,STEAM_CLIENT_ID
,STEAM_CLIENT_SECRET
, LiveKit keys, etc.).
- Copy
-
Run the development server:
npm run dev # or yarn dev
-
Open http://localhost:3000 in your browser.
- Use the
getCollection(db, 'collectionName')
utility fromlib/db.ts
for consistent database collection access, especially forserverMembers
.