An open-source, full-stack college management platform — built as a monorepo with Next.js, Express, Go, and Docker.
- Overview
- Monorepo Apps
- Architecture
- Tech Stack
- Features
- Getting Started
- CI/CD & GitHub Workflows
- Deployment
- Contributing
- License
College Ecosystem is a production-grade, monorepo-based college management and student engagement platform. It consolidates academic tools, campus resources, community interaction, and administrative dashboards into a single, cohesive system.
The project powers app.nith.eu.org (Platform) and nith.eu.org (Website) with a multi-service backend spanning Node.js, Go, and a dedicated mail microservice — all orchestrated via Turborepo and Docker Compose.
The repository is organized into five independent applications under the apps/ directory:
| App | Description | Tech | Port |
|---|---|---|---|
| Platform | Primary student and admin-facing application. Handles academic results, schedules, community features, AI chatbot, attendance tracking, hostel management, and role-based dashboards. | Next.js 16, React 19, Tailwind CSS 4, Drizzle ORM, Mongoose, Better Auth, Vercel AI SDK | 3000 |
| Website | Public-facing college website with landing pages, announcements, and informational content. | Next.js 15, React 19, Tailwind CSS 4, Framer Motion, AOS | 3002 |
| Server | REST API and WebSocket server for data-intensive operations — result scraping, Excel processing, real-time updates, and background jobs. | Express 4, TypeScript, Mongoose, Socket.IO, Redis, Multer | 8080 |
| Go Server | High-performance microservice for compute-heavy tasks like web scraping and result parsing. | Go 1.24, Fiber v2, GoQuery | 8080 |
| Mail Server | Transactional email microservice with templated emails (welcome, password reset, result notifications). Deployable to Cloudflare Workers via OpenNext. | Next.js, React Email, Nodemailer, Wrangler | 3001 |
graph TB
subgraph Client["Client Layer"]
Browser["Browser / PWA"]
end
subgraph Frontend["Frontend Apps"]
Platform["Platform<br/>(Next.js 16)"]
Website["Website<br/>(Next.js 15)"]
end
subgraph Backend["Backend Services"]
Server["Node Server<br/>(Express + Socket.IO)"]
GoServer["Go Server<br/>(Fiber v2)"]
MailServer["Mail Server<br/>(React Email + Nodemailer)"]
end
subgraph Data["Data Layer"]
MongoDB[(MongoDB)]
Postgres[(PostgreSQL)]
Redis[(Redis)]
Supabase[(Supabase)]
end
subgraph Infra["Infrastructure"]
Docker["Docker Compose"]
Turbo["Turborepo"]
GHA["GitHub Actions"]
end
Browser --> Platform
Browser --> Website
Platform --> Server
Platform --> GoServer
Platform --> MailServer
Platform --> MongoDB
Platform --> Postgres
Platform --> Redis
Platform --> Supabase
Server --> MongoDB
Server --> Redis
GoServer --> Browser
Docker -.-> Platform
Docker -.-> Website
Docker -.-> Server
Docker -.-> MailServer
Docker -.-> MongoDB
Docker -.-> Postgres
Docker -.-> Redis
Turbo -.-> Platform
Turbo -.-> Website
Turbo -.-> Server
Turbo -.-> MailServer
GHA -.-> Docker
GHA -.-> Turbo
college-ecosystem/
├── apps/
│ ├── platform/ # Main college platform (Next.js 16)
│ │ ├── app/ # App Router (pages, layouts, API routes)
│ │ ├── src/ # Shared source (hooks, lib, utils)
│ │ ├── @/ # Path alias modules
│ │ ├── migrations/ # Drizzle ORM migrations
│ │ └── Dockerfile
│ ├── website/ # Public college website (Next.js 15)
│ │ ├── app/ # App Router
│ │ ├── @/ # Shared components
│ │ └── Dockerfile
│ ├── server/ # REST API + WebSocket server (Express)
│ │ ├── src/
│ │ │ ├── controllers/
│ │ │ ├── models/
│ │ │ ├── routes/
│ │ │ ├── services/
│ │ │ └── scripts/
│ │ └── Dockerfile
│ ├── go-server/ # High-perf microservice (Go + Fiber)
│ │ ├── cmd/
│ │ ├── routes/
│ │ ├── middleware/
│ │ ├── pkg/
│ │ └── Dockerfile
│ └── mail-server/ # Email microservice (React Email)
│ ├── emails/ # Email templates
│ ├── app/ # API routes
│ └── Dockerfile
├── content/ # Chatbot reference data
├── local-setup/ # Local development helpers
├── docker-compose.yml # Full-stack orchestration
├── turbo.json # Turborepo task config
├── package.json # Root workspace config
├── .env.example # Environment variable template
├── CONTRIBUTING.md # Contribution guidelines
├── deployment.md # GCP Cloud Run deployment guide
└── LICENSE # Mozilla Public License 2.0
| Technology | Usage |
|---|---|
| Next.js 15 / 16 | React framework with App Router, SSR, ISR, and API routes |
| React 19 | UI library with Server Components and concurrent features |
| TypeScript 5.x | Type-safe development across all apps |
| Tailwind CSS 4 | Utility-first styling with PostCSS |
| Radix UI | Accessible, unstyled component primitives (Shadcn UI) |
| Framer Motion | Declarative animations and gestures |
| Recharts | Data visualization and charting |
| Lucide React | Icon library |
| Zustand | Lightweight client state management |
| TanStack Query | Server state management and caching |
| TanStack Table | Headless table UI |
| React Hook Form + Zod | Form handling and schema validation |
| nuqs | Type-safe URL search params state |
| Serwist | PWA service worker tooling |
| Technology | Usage |
|---|---|
| Express 4 | Node.js REST API framework |
| Socket.IO | Real-time bidirectional communication |
| Go 1.24 | High-performance backend microservice |
| Fiber v2 | Express-inspired Go web framework |
| GoQuery | HTML parsing and web scraping (Go) |
| Multer | File upload handling |
| Nodemailer | Email delivery via SMTP |
| React Email | Build email templates with React components |
| Vercel AI SDK | LLM integration (Google Gemini, Mistral, DeepSeek) |
| Better Auth | Authentication and session management |
| Technology | Usage |
|---|---|
| MongoDB + Mongoose | Primary document database for unstructured data |
| PostgreSQL + Drizzle ORM | Relational database with type-safe ORM and migrations |
| Redis + ioredis | In-memory caching and rate limiting |
| Supabase | Managed Postgres with real-time subscriptions |
| Neon | Serverless Postgres (via @neondatabase/serverless) |
| Technology | Usage |
|---|---|
| Turborepo | Monorepo build system with caching and task orchestration |
| Bun 1.3 | JavaScript runtime and package manager |
| Docker + Compose | Containerized development and production environments |
| GitHub Actions | CI/CD pipelines for automated deployments |
| Vercel | Hosting for Platform and Server apps |
| Cloudflare Workers | Edge deployment for Mail Server (via OpenNext) |
| Google Cloud Run | Container hosting for server microservices |
| ESLint 9 | Code linting |
| Prettier | Code formatting |
| Drizzle Kit | Database migration tooling |
- Results Portal — Search and view semester results with batch, branch, and programme filtering; aggregate rankings across college, batch, and section
- Syllabus Browser — Browse and search course syllabi by department, type, and semester
- Academic Calendar — View events, important dates, and semester schedules in calendar and list views
- Class Schedules & Timetables — Access and manage class timetables per section and department
- Classroom Availability — Check real-time room availability in lecture halls for booking
- Community Posts — Reddit-style discussion board with upvotes, comments, and topic threads
- Whisper Room — Anonymous messaging feature for students
- Polls & Voting — Create and participate in campus-wide polls
- Announcements — College-wide announcements broadcast to all users
- AI Chatbot — College-specific question-answering assistant powered by Google Gemini and Mistral LLMs
- Attendance Tracker — Personal attendance logging and summary views
- Out Pass System — Digital out-pass applications and approvals for hostellers
- Hostel Room Allotment — Room allocation management for students
- Career & Benefits — Career resources and student benefit information
- User Profiles — Public student profiles with academic information
- Admin Dashboard — User management, result imports, bulk operations, and system settings
- Faculty Dashboard — Faculty-specific tools and class management
- CR Dashboard — Class representative tools for attendance and schedules
- Warden & Chief Warden Dashboards — Hostel management, out-pass approvals, and room allotment
- Guard Dashboard — Gate pass verification tools
- Role-Based Access Control — Granular permissions for Admin, Faculty, Student, CR, HOD, Warden, Chief Warden, and Guard roles
- Progressive Web App (PWA) — Installable on mobile and desktop with offline capabilities via Serwist service worker
- Real-time Updates — Live data sync via Socket.IO WebSockets
- Multi-Database Architecture — MongoDB for documents, PostgreSQL for relational data, Redis for caching
- AI-Powered Features — LLM-based chatbot and content generation via Vercel AI SDK
- Email Notifications — Templated transactional emails (welcome, password reset, result updates)
- Excel Import/Export — Bulk data operations via ExcelJS and read-excel-file
- Sitemap & SEO — Dynamic sitemap generation and OpenGraph image support
- Dark Mode — System-aware theme switching via next-themes
- Node.js >= 20
- Bun >= 1.3 (package manager)
- Docker and Docker Compose (for local infrastructure)
- Go >= 1.24 (for the Go server)
# Clone the repository
git clone https://github.com/kanakkholwal/college-ecosystem.git
cd college-ecosystem
# Copy environment template and configure
cp .env.example .env
# Start all services
docker compose up --buildThis starts the full stack:
| Service | URL |
|---|---|
| Platform | http://localhost:3000 |
| Mail Server | http://localhost:3001 |
| Website | http://localhost:3002 |
| Server | http://localhost:8080 |
# Install all workspace dependencies
bun install
# Run all apps concurrently
bun run dev
# Or run individual apps
bun run dev:platform # Platform on :3000
bun run dev:server # Server on :8080
bun run dev:mail # Mail Server on :3001
bun run dev:website # Website on :3002# Push Drizzle schema to PostgreSQL
cd apps/platform
bun run db:push
# Generate migrations
bun run db:generate
# Apply migrations
bun run db:migrateThe project uses GitHub Actions for continuous deployment with path-based triggers — only deploying services that have changed.
| Workflow | Trigger | Target | File |
|---|---|---|---|
| Deploy Platform | Push to main in apps/platform/** |
Vercel (Production) | cd-platform-vercel.yml |
| Deploy Server | Push to main in apps/server/** |
Vercel (Production) | cd-server-vercel.yml |
Both workflows:
- Check out code and set up Bun
- Install dependencies
- Run linting and tests
- Build and deploy to Vercel (production on
main, preview on PRs)
See
deployment.mdfor Google Cloud Run deployment instructions (Docker-based).
The project supports multiple deployment targets:
| App | Production Host | Method |
|---|---|---|
| Platform | Vercel | GitHub Actions → Vercel CLI |
| Website | Vercel | GitHub Actions → Vercel CLI |
| Server | Vercel / GCP Cloud Run | GitHub Actions → Vercel CLI / Docker |
| Go Server | GCP Cloud Run | Docker container |
| Mail Server | Cloudflare Workers | OpenNext + Wrangler |
For self-hosting with Docker Compose, see the Quick Start section. For GCP Cloud Run, see deployment.md.
We welcome contributions of all kinds — code, design, documentation, and bug reports.
Please read our CONTRIBUTING.md for:
- Development setup instructions
- Coding guidelines and commit conventions
- How to submit pull requests
- Design contribution opportunities
This project is licensed under the Mozilla Public License 2.0.
