Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

105 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CampusEventHub Logo

Where college events actually happen

Events shouldn't be scattered across WhatsApp statuses and Google Forms that nobody ever finds.


πŸ”₯ The Real Problem

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
Loading

We fixed it.


🎯 What You Get

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.


πŸ—οΈ How It Works

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
Loading

πŸ“Š Event Lifecycle

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
Loading

πŸ’» Tech Stack

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"]
Loading

πŸ—„οΈ Data Model

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
Loading

⚑ Quick Start

# 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:5173

Done. 5 minutes. Open browser.


🐳 Deploy (Docker Only)

# Build
docker build -t hub ./backend

# Run
docker run -d -p 5000:5000 --env-file .env.prod hub

# Verify
curl http://localhost:5000/api/health

πŸ“‘ API Routes

graph 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
Loading

πŸ”’ Security

πŸ” JWT + HttpOnly cookies
πŸ” Bcrypt password hashing
πŸ” Rate limiting
πŸ” CORS restricted
πŸ” Input validation
πŸ” Audit logs for all actions
πŸ” Email verification

πŸ”„ Roles & Permissions

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
Loading

πŸ“ Project Structure

CampusEventHub/
β”œβ”€β”€ frontend/src
β”‚   β”œβ”€β”€ api/
β”‚   β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ pages/
β”‚   └── context/
β”œβ”€β”€ backend/src
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ routes/
β”‚   └── middleware/
└── docs/

🎯 Features Built

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
Loading

πŸ› οΈ Commands

npm run dev      # Start dev server
npm run build    # Production build
npm run lint     # Check code
npm run test     # Run tests
npm audit        # Security check


πŸ‘¨β€πŸ’Ό Project Ownership & Credits

Built with πŸ’™ during Infosys Springboard Internship 6.

Uday Chaudhary
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
Gayatri

Backend Developer
πŸ’Ύ Database implementation
Milestone 1: Data models & schemas
Milestone 2: API endpoints

Charan
Charan

Project Mentor & Reviewer
πŸŽ“ Architecture guidance
πŸ“‹ Code review & best practices


🀝 Contributing

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 description

All contributions require code review before merge.


πŸ“„ License

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.

Full License β†’


πŸ“§ Get in touch β€” LinkedIn Β· GitHub Β· Email

⭐ If this helped, star it on GitHub.

React β€’ Vite β€’ Node.js β€’ MongoDB

About

Event Management 🎟️ with Waitlists πŸ“‹, Feedback ⭐, and Real-Time Insights πŸ“Š

Resources

Stars

Watchers

Forks

Packages

Contributors

Languages