DevCircle is an open-source platform designed to boost coding communities within colleges through fair and active peer-to-peer support. Instead of fighting for visibility on crowded global platforms, DevCircle creates a focused, trust-based space where developers help each other — and grow together.
New developers often struggle with:
- Getting real feedback on projects
- Receiving GitHub stars or follows
- Finding collaboration partners
- Feeling isolated in their coding journey
DevCircle fixes this by letting you:
- ✅ Request help (code review, bug fix, GitHub star, project collab)
- ✅ Earn help credits by helping others
- ✅ Connect only with active users in your college
- ✅ Build your college's dev culture with no spam, no noise
- 🔁 Mutual help system (you give, you get)
- 🧠 Smart matchmaker (active, fair users only)
- 🎓 Private college instances (self-hosted)
- ⭐ GitHub integration
- ⚖️ Karma / Help Score logic
- 📈 Leaderboard & weekly activity tracker
Every college can self-host DevCircle to strengthen its local developer community. It's not about building another LinkedIn — it's about building trust, accountability, and support at the grassroots level.
- Node.js + Express - RESTful API
- TypeScript - Type-safe development
- MongoDB + Mongoose - Database & ODM
- JWT - Authentication
- GitHub OAuth - User authentication
- React 19 + TypeScript - UI Framework
- React Router - Navigation
- Tailwind CSS - Styling
- Axios - HTTP client
- Context API - State management
- Docker + Docker Compose - Containerization
- Nginx - Reverse proxy for frontend
DevCircle/
├── client/ # React Frontend
│ ├── public/
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React Context (Auth)
│ │ ├── pages/ # Page components
│ │ ├── types/ # TypeScript types
│ │ ├── utils/ # Utility functions
│ │ ├── App.tsx
│ │ └── index.tsx
│ ├── Dockerfile
│ ├── package.json
│ └── tailwind.config.js
│
├── server/ # Node.js Backend
│ ├── config/ # Configuration files
│ ├── controllers/ # Request handlers
│ ├── interfaces/ # TypeScript interfaces
│ ├── middleware/ # Express middleware
│ ├── models/ # Mongoose models
│ ├── repositories/ # Database operations
│ ├── routes/ # API routes
│ ├── services/ # Business logic
│ ├── utils/ # Utility functions
│ ├── app.ts # Express app setup
│ ├── server.ts # Server entry point
│ ├── Dockerfile
│ └── package.json
│
├── docker-compose.yml # Docker orchestration
├── .env.example # Environment variables template
└── README.md # You are here!
- Node.js (v18 or higher)
- MongoDB (v6 or higher) OR Docker
- GitHub OAuth App credentials (Create one here)
git clone https://github.com/yourusername/DevCircle.git
cd DevCirclecd server
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Edit .env and fill in your values:
# - MongoDB connection string
# - GitHub OAuth credentials
# - JWT secret
# - College configuration
nano .env # or use your preferred editor
# Run in development mode
npm run devThe backend will start at http://localhost:4000
cd ../client
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Edit .env with your values:
# - Backend API URL
# - GitHub Client ID
# - College information
nano .env
# Start development server
npm startThe frontend will start at http://localhost:3000
# Copy the example file
cp .env.example .env
# Edit and fill in your values
nano .env# Build and start all services (MongoDB, Backend, Frontend)
docker-compose up --build
# Or run in detached mode
docker-compose up -d --buildAccess the application at http://localhost
docker-compose down
# To remove volumes as well
docker-compose down -vCreate a .env file in the server/ directory:
# Server
PORT=4000
NODE_ENV=development
# MongoDB
MONGODB_URI=mongodb://localhost:27017/devcircle
# JWT
JWT_SECRET=your_super_secret_jwt_key
JWT_EXPIRES_IN=7d
# GitHub OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_CALLBACK_URL=http://localhost:4000/api/auth/github/callback
# Frontend
CLIENT_URL=http://localhost:3000
# College
COLLEGE_DOMAIN=@youruniversity.edu
COLLEGE_ID=your_college_slugCreate a .env file in the client/ directory:
REACT_APP_API_URL=http://localhost:4000/api
REACT_APP_GITHUB_CLIENT_ID=your_github_client_id
REACT_APP_COLLEGE_NAME=Your University
REACT_APP_COLLEGE_ID=your_college_slug- Go to GitHub Developer Settings
- Click "New OAuth App"
- Fill in:
- Application name: DevCircle - Your College
- Homepage URL:
http://localhost:3000(or your domain) - Authorization callback URL:
http://localhost:4000/api/auth/github/callback
- Copy the Client ID and Client Secret to your
.envfiles
GET /api/auth/github- Initiate GitHub OAuthGET /api/auth/github/callback- GitHub OAuth callbackGET /api/auth/verify- Verify JWT token
GET /api/users/me- Get current userGET /api/users/:id- Get user by IDPUT /api/users/me- Update current userGET /api/users/leaderboard?college=xxx- Get leaderboardGET /api/users/college?college=xxx- Get college users
GET /api/requests/open- Get open requestsGET /api/requests/:id- Get request by IDPOST /api/requests- Create new requestGET /api/requests/my/requests- Get my requestsGET /api/requests/my/helped- Get requests I'm helping withPOST /api/requests/:id/accept- Accept a requestPOST /api/requests/:id/complete- Mark request as completePOST /api/requests/:id/cancel- Cancel a request
GET /api/activities/recent- Get recent activitiesGET /api/activities/my- Get my activitiesGET /api/activities/user/:userId- Get user activities
# Build images
docker-compose build
# Start services
docker-compose up
# Start in background
docker-compose up -d
# View logs
docker-compose logs -f
# Stop services
docker-compose down
# Rebuild and restart
docker-compose up --build --force-recreate
# Remove all (including volumes)
docker-compose down -vcd server
npm installcd client
npm install# Backend tests
cd server
npm test
# Frontend tests
cd client
npm test# Backend
cd server
npm run build
# Frontend
cd client
npm run buildContributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Create a new project on Railway
- Add MongoDB service
- Add server service (connect to GitHub repo, set root directory to
server/) - Add client service (connect to GitHub repo, set root directory to
client/) - Configure environment variables
- Deploy!
Frontend (Vercel):
- Import GitHub repo to Vercel
- Set root directory to
client/ - Add environment variables
- Deploy
Backend (Render):
- Create new Web Service
- Connect GitHub repo
- Set root directory to
server/ - Add environment variables
- Deploy
For questions, issues, or feature requests:
- Open an Issue
- Start a Discussion
Want to set up DevCircle for your college? Here's a quick guide:
- Clone and customize - Fork this repo and update branding
- Setup GitHub OAuth - Create OAuth app for your domain
- Configure college domain - Set your
.eduemail domain - Deploy - Use Docker Compose or your preferred platform
- Invite students - Share with your college dev community!
Built with ❤️ for college developers who believe in mutual growth and community support.
Star ⭐ this repository if you find it useful!