Where college events actually happen
Events shouldn't be scattered across WhatsApp statuses and Google Forms that nobody ever finds.
graph LR
A["π± Events Announced"] --> B["Lost in Noise"]
A --> C["No Tracking"]
A --> D["Manual Chaos"]
B --> Z["Nobody Shows Up"]
C --> Z
D --> Z
We fixed it.
Students: Find events, register in one click, get notified.
Admins: Create events, approve students, track attendance live.
SuperAdmin: Approve colleges, monitor everything, audit all actions.
One platform. Three roles. Zero chaos.
sequenceDiagram
actor S as Student
participant FE as App
participant BE as Backend
participant DB as Database
S->>FE: "Find event"
FE->>BE: GET /events
BE->>DB: Query events
DB-->>BE: Return list
BE-->>FE: Show to student
FE-->>S: "Browse & pick"
S->>FE: "Register"
FE->>BE: POST /register
alt Spot Available
BE->>DB: Create registration
DB-->>BE: Saved
BE-->>FE: "You're in!"
else Slot Full
BE->>DB: Add to waitlist
DB-->>BE: Position #7
BE-->>FE: "Waitlist - we'll notify you"
end
stateDiagram-v2
[*] --> Draft
Draft -->|Submit| Pending: Admin reviews
Pending -->|Approve| Published: Live on platform
Pending -->|Reject| Draft
Published -->|Pause| Paused: Stop registrations
Paused -->|Resume| Published
Published -->|Cancel| Cancelled: Notify students
Published --> [*]: Event ends
Frontend: React 18 + Vite + Tailwind
Backend: Node.js + Express + MongoDB
Auth: JWT (HttpOnly cookies)
Email: Nodemailer
Files: Cloudinary
graph TB
FE["π₯οΈ Frontend<br/>React<br/>Vite<br/>Tailwind"] -->|REST API| BE["π Backend<br/>Express<br/>Mongoose<br/>JWT"]
BE -->|Store| DB["πΎ MongoDB<br/>Multi-tenant<br/>Audit logs"]
BE -->|Upload| C["βοΈ Cloudinary"]
BE -->|Send| EM["π§ Nodemailer"]
graph TB
COLL["π« College"]
USER["π€ User<br/>student/admin/superadmin"]
EVENT["π
Event"]
REG["β
Registration"]
FEED["β Feedback"]
COLL -->|has| USER
COLL -->|has| EVENT
USER -->|creates| REG
EVENT -->|receives| REG
EVENT -->|receives| FEED
USER -->|submits| FEED
# 1. Clone
git clone https://github.com/springboardmentor212/CampusEventHub.git
cd CampusEventHub
# 2. Backend
cd backend && npm install
# Create .env: MONGO_URI, JWT_SECRET, EMAIL_*, CLOUDINARY_*
npm run dev # http://localhost:5000
# 3. Frontend (new terminal)
cd frontend && npm install
# Create .env: VITE_API_URL=http://localhost:5000/api
npm run dev # http://localhost:5173Done. 5 minutes. Open browser.
# Build
docker build -t hub ./backend
# Run
docker run -d -p 5000:5000 --env-file .env.prod hub
# Verify
curl http://localhost:5000/api/healthgraph TB
subgraph A["π Auth"]
A1["POST /auth/register"]
A2["POST /auth/login"]
A3["GET /auth/profile"]
end
subgraph E["π
Events"]
E1["GET /events"]
E2["POST /events/create"]
E3["PATCH /events/:id"]
end
subgraph R["β
Registration"]
R1["POST /registrations/register/:eventId"]
R2["GET /registrations/my"]
R3["PATCH /registrations/:id/attendance"]
end
subgraph F["β Feedback"]
F1["POST /feedback"]
F2["GET /feedback/event/:eventId"]
end
π JWT + HttpOnly cookies
π Bcrypt password hashing
π Rate limiting
π CORS restricted
π Input validation
π Audit logs for all actions
π Email verification
graph TB
SU["βοΈ SuperAdmin<br/>βββ<br/>Approve colleges<br/>Review events<br/>View all analytics"]
CA["π« College Admin<br/>βββ<br/>Create events<br/>Approve students<br/>Mark attendance"]
S["π€ Student<br/>βββ<br/>Discover events<br/>Register/waitlist<br/>Submit feedback"]
SU -->|approves| CA
CA -->|manages| S
CampusEventHub/
βββ frontend/src
β βββ api/
β βββ components/
β βββ pages/
β βββ context/
βββ backend/src
β βββ controllers/
β βββ models/
β βββ routes/
β βββ middleware/
βββ docs/
graph LR
A["Event Discovery"] --> B["Registration System"]
B --> C["Attendance Tracking"]
C --> D["Feedback & Analytics"]
D --> E["Admin Dashboard"]
E --> F["Compliance Audit Logs"]
style A fill:#60a5fa
style B fill:#34d399
style C fill:#fbbf24
style D fill:#f87171
style E fill:#a78bfa
style F fill:#8b5cf6
npm run dev # Start dev server
npm run build # Production build
npm run lint # Check code
npm run test # Run tests
npm audit # Security checkBuilt with π during Infosys Springboard Internship 6.
SOMAPURAM UDAY π΄ Project Owner & Maintainer π» Full-stack architecture & lead development π¨ Frontend architecture & UI/UX design π Backend API & database design π§ͺ Testing & quality assurance π¨ Figma designs & prototyping π¦ Deployment & DevOps π Documentation & code review |
Gayatri Backend Developer πΎ Database implementation Milestone 1: Data models & schemas Milestone 2: API endpoints
Charan Project Mentor & Reviewer π Architecture guidance π Code review & best practices |
CampusEventHub is open to contributions for features and bug fixes that matter.
We accept PRs for:
- π Real bugs that break functionality
- β¨ Features students or admins actually need
- π§ Performance improvements
- π Documentation fixes
We don't accept:
- UI tweaks or styling preferences
- Refactors without clear purpose
- Features solving non-existent problems
How to contribute:
git checkout -b fix/issue-name
# Make your changes
git commit -m "fix: solve the real problem"
git push origin fix/issue-name
# Open PR with clear descriptionAll contributions require code review before merge.
CampusEventHub Custom License
Copyright Β© 2024-2026 SOMAPURAM UDAY (@udaycodespace)
All Rights Reserved
You can:
- Use for educational & personal purposes
- Contribute real bugs, features, & fixes
- Deploy for non-commercial use
- Include merged PRs in your resume
You cannot:
- Sell or commercialize this project
- Use without credit if forking
- Make unnecessary changes
If your PR merges: You can credit this contribution on your resume, LinkedIn, and portfolio.
If you fork: You MUST credit SOMAPURAM UDAY as original author and link to the original repo.
Commercial use is ILLEGAL without explicit permission.
