Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

EventEase - Campus Event Management Platform

A smart event management and scheduling platform for campus events with AI-powered time-slot suggestions.

🎯 Features

For Students

  • Discover and browse campus events
  • Register for events with one click
  • Personal event calendar with Google Calendar sync
  • Bookmark favorite events
  • View event details and organizers

For Coordinators

  • Create and manage events
  • AI-assisted time-slot suggestions (avoid scheduling conflicts)
  • Real-time analytics dashboard
  • Team/category tagging
  • Conflict detection

🛠️ Tech Stack

Frontend:

  • React 18 (Vite)
  • Tailwind CSS
  • React Router v6
  • Axios
  • FullCalendar

Backend:

  • Node.js
  • Express.js
  • Firebase Authentication
  • Cloud Firestore
  • Gemini AI API
  • Google Calendar API

Hosting:

  • Firebase Hosting (Frontend)
  • Google Cloud Run (Backend)

📁 Project Structure

eventease/
├── frontend/
│   ├── src/
│   │   ├── components/
│   │   │   ├── common/         # Reusable components
│   │   │   ├── layout/         # Layout components
│   │   │   ├── student/        # Student-specific components
│   │   │   └── coordinator/    # Coordinator-specific components
│   │   ├── pages/
│   │   │   ├── public/         # Landing, Login, Register
│   │   │   ├── student/        # Student dashboard & pages
│   │   │   └── coordinator/    # Coordinator dashboard & pages
│   │   ├── services/           # API calls
│   │   ├── contexts/           # React contexts (Auth, etc.)
│   │   ├── utils/              # Helper functions
│   │   └── App.jsx
│   ├── package.json
│   └── vite.config.js
├── backend/
│   ├── src/
│   │   ├── routes/             # API routes
│   │   ├── controllers/        # Route handlers
│   │   ├── services/           # Business logic
│   │   ├── middleware/         # Auth, validation
│   │   └── config/             # Configuration files
│   ├── package.json
│   └── server.js
├── .env.example
└── README.md

🚀 Local Setup

Prerequisites

  • Node.js v18+
  • npm or yarn
  • Firebase account
  • Google Cloud account (for Gemini API & Calendar API)

1. Clone and Install

# Clone the repository
git clone <your-repo-url>
cd eventease

# Install frontend dependencies
cd frontend
npm install

# Install backend dependencies
cd ../backend
npm install

2. Environment Setup

Create .env files in both frontend and backend directories:

frontend/.env:

VITE_API_URL=http://localhost:5000
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id

backend/.env:

PORT=5000
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_PRIVATE_KEY="your_private_key"
FIREBASE_CLIENT_EMAIL=your_client_email
GEMINI_API_KEY=your_gemini_api_key
GOOGLE_CALENDAR_CLIENT_ID=your_client_id
GOOGLE_CALENDAR_CLIENT_SECRET=your_client_secret
JWT_SECRET=your_jwt_secret
NODE_ENV=development

3. Firebase Setup

  1. Go to Firebase Console
  2. Create a new project
  3. Enable Authentication (Email/Password, Google, Facebook)
  4. Enable Firestore Database
  5. Download service account key (Project Settings > Service Accounts)
  6. Copy credentials to backend .env

4. Google Cloud Setup

  1. Go to Google Cloud Console
  2. Enable Gemini API
  3. Enable Google Calendar API
  4. Create API credentials
  5. Copy to backend .env

5. Run the Application

Terminal 1 - Backend:

cd backend
npm run dev
# Server runs on http://localhost:5000

Terminal 2 - Frontend:

cd frontend
npm run dev
# App runs on http://localhost:5173

📊 Firestore Schema

Users Collection

{
  uid: "string",
  email: "string",
  name: "string",
  role: "student" | "coordinator",
  createdAt: "timestamp",
  updatedAt: "timestamp"
}

Events Collection

{
  id: "string",
  title: "string",
  description: "string",
  category: "string", // Technical, Music, Sports, etc.
  organizerId: "string",
  organizerName: "string",
  organizerLogo: "string",
  startDate: "timestamp",
  endDate: "timestamp",
  location: "string",
  venue: "string",
  capacity: "number",
  registeredCount: "number",
  tags: ["array"],
  imageUrl: "string",
  isFree: "boolean",
  price: "number",
  createdAt: "timestamp",
  updatedAt: "timestamp"
}

Registrations Collection

{
  id: "string",
  eventId: "string",
  userId: "string",
  userName: "string",
  userEmail: "string",
  registeredAt: "timestamp",
  status: "confirmed" | "cancelled"
}

🤖 AI Features

Time-Slot Suggestions

When creating an event, the AI analyzes:

  • Existing events in the database
  • Date/time conflicts
  • Venue availability
  • Popular time slots

Returns 3-5 optimal time slot suggestions with conflict explanations.

Conflict Detection

Before finalizing event creation, the system checks:

  • Same venue, overlapping time
  • Same organizer, overlapping time
  • Major campus events

🔒 Security

  • JWT-based authentication
  • Role-based access control (RBAC)
  • Firebase security rules
  • Environment variables for secrets
  • CORS configuration
  • Input validation and sanitization

🚀 Deployment

Frontend (Firebase Hosting)

cd frontend
npm run build
firebase deploy --only hosting

Backend (Google Cloud Run)

cd backend
gcloud run deploy eventease-api \
  --source . \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages