Sure! Here's a detailed, styled, production-grade README.md for your project, written entirely in a markdown canvas block:
An all-in-one university student engagement platform featuring student dashboards, club management, real-time event tracking, certificate generation, analytics, and live notifications.
CampusConnect.Demo.Video.2.mp4
- About
- Features
- Tech Stack
- Folder Structure
- Setup Instructions
- API Routes
- WebSocket Events
- Analytics & Graphs
- Deployment Notes
- Contributors
- License
- Screenshots
CampusConnect is a web-based platform that bridges the gap between university students and student clubs by offering:
- A dashboard for students to explore, subscribe, and interact with clubs.
- A powerful club admin dashboard to manage events, committee members, certificates, feedback, and real-time data analytics.
- Live updates via WebSockets for RSVPs, notifications, and analytics tracking.
- Explore all clubs and events
- RSVP to events
- View issued certificates
- Give feedback to clubs
- Receive real-time notifications
- Manage committee members
- Create and edit events
- View event RSVP details
- Upload and issue certificates
- Collect and analyze feedback
- Push notifications to subscribers
- Track analytics (engagement, RSVP trends, etc.)
- Live RSVP and view tracking
- Event capacity monitoring
- Subscriber growth trends
- Feedback distribution pie chart
- Certificate issuance reports
- WebSockets for:
- RSVP counter
- Notifications
- Live analytics events
| Frontend | Backend | Database | Real-Time | Other Tools |
|---|---|---|---|---|
| Next.js (App Router) | Express.js | Supabase (PostgreSQL) | Socket.io | Vercel, Render |
| TypeScript | Node.js | dotenv, multer |
client/
βββ src/
βββ app/
βββ student-login/
βββ clubs/[club_id]/dashboard/
βββ admin/university-upload/
βββ ...
server/
βββ routes/
βββ controllers/
βββ middlewares/
βββ utils/
βββ src/index.js
# Clone the repo
git clone https://github.com/your-username/campusconnect.git
cd campusconnect
# Setup client
cd client
npm install
# Setup server
cd ../server
npm install
# Create .env files in both /client and /server
# Refer to .env.example for required variables
# Start development
npm run dev # from client/
npm run dev # from server/| Endpoint | Method | Description |
|---|---|---|
/subscriptions |
GET | Get all club subscriptions |
/certificates |
GET | View issued certificates |
/feedback/:clubId |
POST | Submit feedback for a club |
/notifications |
GET | Fetch student notifications |
/profile |
GET | Get student profile data |
| Section | Endpoint | Method | Description |
|---|---|---|---|
| Events | /events, /events/:eventId |
GET/POST/PUT/DELETE | Manage events |
| RSVPs | /rsvps, /rsvps/download |
GET | View and download RSVP data |
| Certificates | /certificates/upload, /view/:id |
POST/GET | Upload and view certificates |
| Committee | /committee, /committee/search |
GET/POST/PUT/DELETE | Manage committee members |
| Feedback | /feedback/analytics |
GET | Fetch feedback analytics (pie chart data) |
| Analytics | /analytics |
GET | Fetch all analytics data |
| Notifications | /notifications/send |
POST | Send notification to subscribers |
| Club Settings | /edit |
PUT | Edit club name, description, logo etc. |
| Event Name | Direction | Payload Description |
|---|---|---|
join_event_room |
client β server | { eventId } |
rsvp_count_updated |
server β client | newCount |
join_student_room |
client β server | { studentId } |
notification_received |
server β client | notification |
- Event RSVPs over time (Bar graph)
- Event views over time
- Subscriber growth over time
- Feedback distribution (Pie chart)
- Certificate issuance count
Tech used: Chart.js or Recharts (client-side), Supabase queries (server-side)
- Frontend: Deployed to Vercel
- Backend: Hosted on Render
- CORS: Configured with
credentials: trueand properorigin - Certificates: Served statically from
uploads/certificates/viaexpress.static - WebSockets: Socket.IO configured with proper CORS and same origin
- Tirthraj Raval - Full-stack Developer, UI/UX, Database Design
This project is licensed under the MIT License. See LICENSE for more info.