Build. Collaborate. Grow. Powered by AI.
A next-generation developer community platform where engineers share knowledge, collaborate on code, and get AI-assisted help β all in one place.
DevConnect AI is a full-stack developer community platform that unifies fragmented developer workflows β discussions, Q&A, collaboration, and AI-powered drafting help β into a single ecosystem.
Developers today are scattered across:
Thereβs no single platform that combines all of this with built-in AI assistance. DevConnect AI solves that.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| UI Library | React 19 |
| Styling | Tailwind CSS v4 / CSS variables |
| Authentication | Firebase Auth (Google + GitHub OAuth) |
| Database | Firestore (Firebase) |
| Icons | lucide-react |
| Markdown Rendering | react-markdown + remark-gfm |
| AI | Sarvam AI (Chat Completions API) |
/loginonSnapshot/api/ai-draft).onSnapshot, send-on-enter, timestamp displayDevConnect-AI/
βββ app/
β βββ layout.js # Root layout with AuthProvider
β βββ page.js # Landing page (features tour)
β βββ globals.css # Global styles + markdown styles
β βββ api/
β β βββ ai-draft/
β β β βββ route.js # Sarvam AI-powered "Draft with AI" endpoint
β β βββ code-review/
β β β βββ route.js # Code review endpoint (in progress)
β β βββ rooms/
β β βββ [roomId]/
β β βββ summary/
β β βββ route.js # AI room summary endpoint
β βββ dashboard/
β β βββ page.js # Main community feed (protected)
β βββ login/
β β βββ page.js # Login with Google / GitHub
β βββ rooms/
β β βββ page.js # Rooms hub β list/create rooms (protected)
β β βββ [roomId]/
β β βββ page.js # Room workspace β chat, notes, editor, call
β βββ signup/
β β βββ page.js # Signup with Google / GitHub
β βββ profile/
β β βββ page.js # User profile page
β βββ settings/
β βββ page.js # Settings page
βββ components/
β βββ rooms/
β β βββ RoomCallControls.js # Voice/video/screen-share controls + camera preview
β β βββ RoomChat.js # Real-time chat panel
β β βββ RoomCursorLayer.js # Remote cursor/presence overlay
β β βββ RoomEditor.js # Collaborative code editor
β β βββ RoomMembers.js # Online member list
β β βββ RoomNotes.js # Shared markdown notes
β β βββ RoomSummaryButton.js # Generate/view summary button
β β βββ RoomSummaryModal.js # Markdown summary modal with backdrop blur
β βββ dashboard/
β β βββ LeftSidebar.js # Feed tabs + rooms nav
β β βββ RightSidebar.js # AI copilot + rooms promo widgets
β βββ AIDraftAssistant.js # "Draft with AI" prompt box + Sarvam AI call
β βββ CodeEditorModal.js # Modal for inserting formatted code blocks
β βββ CodeReview.js # Code review UI component
β βββ Navbar.js
β βββ ProtectedRoute.js # Auth guard β redirects to /login if not authenticated
β βββ ScrollToTop.js
β βββ ThemeToggle.js
βββ context/
β βββ AuthContext.js # Firebase auth state (Google + GitHub login/logout)
βββ lib/
β βββ firebase.js # Firebase client initialization
β βββ firebase-admin.js # Firebase server-side initialization (for API routes)
β βββ rooms.js # Room CRUD + presence + summary helpers
β βββ webrtc.js # WebRTC signaling + media stream management
βββ .env.local # Environment variables (not committed)
βββ .gitignore
βββ package.json
βββ README.md
Make sure you have the following installed before setting up:
Check your versions:
node -v
npm -v
Click the Fork button at the top right of this page to fork it to your GitHub account.
git clone https://github.com/<your-username>/DevConnect-AI.git
cd DevConnect-AI
npm install
This installs all dependencies, including react-markdown and remark-gfm used for rendering post content.
.env.local filecp .env.example .env.local
Or create it manually and fill in your Firebase and Sarvam AI credentials (see Environment Variables).
npm run dev
Open http://localhost:3000 in your browser.
</>) β register the app β copy the config objecthttp://localhost:3000https://<your-project>.firebaseapp.com/__/auth/handler)From Project Settings β Your Apps β SDK setup and configuration, copy all the config values into your .env.local.
The Draft with AI Assistant feature uses the Sarvam AI chat completions API.
.env.local as SARVAM_API_KEY (see below).app/api/ai-draft/route.js β it is never exposed to the browser.model deprecated error, check Sarvamβs docs for the current supported model names (e.g. sarvam-30b, sarvam-105b) and update the model field in route.js accordingly.β οΈ Never commit your Sarvam API key. If a key is ever accidentally committed or shared, rotate it immediately from the Sarvam dashboard.
Create a .env.local file in the root of the project with the following keys:
# Firebase
NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=abcname
NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET=deafult
# Sarvam AI (server-side only β do NOT prefix with NEXT_PUBLIC_)
SARVAM_API_KEY=your_sarvam_api_key
β οΈ Never commit
.env.localto Git. It is already added to.gitignore.Restart your dev server (
npm run dev) after adding or changing any environment variable β Next.js only loads.env.localon startup.
All Firebase values are available in Firebase Console β Project Settings β Your Apps β SDK config.
The rooms feature uses these Firestore collections (created automatically on first use):
| Collection | Purpose |
|---|---|
rooms/{roomId} |
Room metadata β title, description, language, members, createdBy, createdAt |
rooms/{roomId}/messages/{messageId} |
Real-time chat messages |
rooms/{roomId}/notes/{noteId} |
Shared markdown notes (one active note per room) |
rooms/{roomId}/presence/{uid} |
Live presence β last heartbeat, cursor position, media state |
No manual collection setup is required β Firestore creates these on first write.
| Command | Description |
|---|---|
npm run dev |
Start development server at localhost:3000 |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint |
| Route | Description | Protected |
|---|---|---|
/ |
Landing page with features tour | No |
/login |
Login with Google or GitHub | No |
/signup |
Signup with Google or GitHub | No |
/dashboard |
Main community feed | β Yes |
/rooms |
Collaboration rooms hub β list/create rooms | β Yes |
/rooms/[roomId] |
Room workspace β chat, notes, editor, voice/video | β Yes |
/profile |
User profile page | β Yes |
/settings |
Settings page | β Yes |
/api/ai-draft |
Server-side Sarvam AI draft endpoint | N/A (API route) |
/api/rooms/[roomId]/summary |
AI room summary generation endpoint | N/A (API route) |
Protected routes automatically redirect unauthenticated users to
/login.
This project is under active development. Hereβs whatβs done and whatβs still in progress:
| Feature | Status |
|---|---|
| Landing page UI | β Done |
| Google OAuth login/signup | β Done |
| GitHub OAuth login/signup | β Done |
| User saved to Firestore on first login | β Done |
| Protected routes | β Done |
| Dashboard UI (feed, sidebar, layout) | β Done |
| Firestore CRUD for posts | β Done |
| Like system | β Done |
| Comment system (add/edit/delete) | β Done |
| Real-time updates | β Done |
| Markdown rendering for posts (headings, lists, code blocks) | β Done |
| In-post code editor / inserter | β Done |
| Draft with AI Assistant (Sarvam AI, question-only mode) | β Done |
| Collaboration Rooms β hub + workspace shell | β Done |
| Room chat (real-time, Firestore onSnapshot) | β Done |
| Room shared notes (markdown, auto-save) | β Done |
| Room collaborative code editor | β Done |
| Room voice/video/screen-share (WebRTC) | β Done |
| Room presence (members, cursors, heartbeat) | β Done |
| AI Room Summaries (Sarvam AI + markdown modal) | β Done |
| AI Code Review (Copilot) | π In Progress |
Contributions are welcome! Hereβs how to get started:
git checkout -b feat/your-feature-name
# or for fixes:
git checkout -b fix/issue-description
# or for docs:
git checkout -b docs/what-you-updated
git add .
git commit -m "feat: add post creation to dashboard"
Follow this commit convention:
feat: β new featurefix: β bug fixdocs: β documentation changesstyle: β formatting, no logic changerefactor: β code restructure, no feature changechore: β dependency updates, config changesgit push origin feat/your-feature-name
Then open a Pull Request against the main branch of the original repo. In your PR description, reference the issue it closes:
Closes #<issue-number>
ISC License β see LICENSE for details.
Made with β€οΈ for the developer community