A smart event management and scheduling platform for campus events with AI-powered time-slot suggestions.
- 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
- Create and manage events
- AI-assisted time-slot suggestions (avoid scheduling conflicts)
- Real-time analytics dashboard
- Team/category tagging
- Conflict detection
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)
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
- Node.js v18+
- npm or yarn
- Firebase account
- Google Cloud account (for Gemini API & Calendar API)
# Clone the repository
git clone <your-repo-url>
cd eventease
# Install frontend dependencies
cd frontend
npm install
# Install backend dependencies
cd ../backend
npm installCreate .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_idbackend/.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- Go to Firebase Console
- Create a new project
- Enable Authentication (Email/Password, Google, Facebook)
- Enable Firestore Database
- Download service account key (Project Settings > Service Accounts)
- Copy credentials to backend
.env
- Go to Google Cloud Console
- Enable Gemini API
- Enable Google Calendar API
- Create API credentials
- Copy to backend
.env
Terminal 1 - Backend:
cd backend
npm run dev
# Server runs on http://localhost:5000Terminal 2 - Frontend:
cd frontend
npm run dev
# App runs on http://localhost:5173{
uid: "string",
email: "string",
name: "string",
role: "student" | "coordinator",
createdAt: "timestamp",
updatedAt: "timestamp"
}{
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"
}{
id: "string",
eventId: "string",
userId: "string",
userName: "string",
userEmail: "string",
registeredAt: "timestamp",
status: "confirmed" | "cancelled"
}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.
Before finalizing event creation, the system checks:
- Same venue, overlapping time
- Same organizer, overlapping time
- Major campus events
- JWT-based authentication
- Role-based access control (RBAC)
- Firebase security rules
- Environment variables for secrets
- CORS configuration
- Input validation and sanitization
cd frontend
npm run build
firebase deploy --only hostingcd backend
gcloud run deploy eventease-api \
--source . \
--platform managed \
--region us-central1 \
--allow-unauthenticated