Skip to content

Manage events, RSVPs, and announcements with a React frontend and Firebase backend

Notifications You must be signed in to change notification settings

UNC-GDSC/Event-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

EventHub - Professional Event Management System

A cutting-edge, production-ready event management platform built with React, TypeScript, and Firebase. Create, manage, and attend events with powerful features including real-time updates, comprehensive analytics, social sharing, and much more.

Build Status TypeScript React Firebase

✨ Highlights

  • 🎯 Production-Ready: Fully tested, optimized build with comprehensive error handling
  • πŸ”„ Real-time Everything: Live updates for events, RSVPs, comments, and announcements
  • πŸŒ“ Dark Mode: Beautiful dark theme with smooth transitions
  • πŸ“± PWA Support: Install as a mobile app with offline capabilities
  • πŸ“Š Advanced Analytics: Admin dashboard with charts and statistics
  • πŸ”’ Secure: Complete Firebase security rules and role-based access control
  • β™Ώ Accessible: WCAG compliant with keyboard navigation support

πŸš€ Core Features

Authentication & User Management

  • βœ… Email/Password authentication
  • βœ… Google OAuth integration
  • βœ… Protected routes with role-based access (User/Admin)
  • βœ… User profile management
  • βœ… Persistent sessions

Event Management

  • βœ… Full CRUD operations for events
  • βœ… Rich event details (title, description, dates, location, capacity)
  • βœ… High-quality image uploads (Firebase Storage)
  • βœ… Event categorization (10+ categories)
  • βœ… Flexible tagging system
  • βœ… Real-time event status (upcoming, ongoing, completed)
  • βœ… Event editing with version control
  • βœ… Bulk operations for admins

RSVP System

  • βœ… Real-time RSVP tracking with Firestore
  • βœ… Multiple response options (Going, Maybe, Not Going)
  • βœ… Guest count management
  • βœ… Live attendee count updates
  • βœ… Attendee list with contact information
  • βœ… Export attendees to CSV
  • βœ… RSVP status changes with notifications

Comments & Discussion

  • βœ… Real-time comment system for events
  • βœ… Threaded discussions
  • βœ… User avatars and timestamps
  • βœ… Delete own comments
  • βœ… Admin moderation capabilities

Announcements

  • βœ… Create and manage announcements
  • βœ… Priority levels (Low, Medium, High)
  • βœ… Real-time updates across all users
  • βœ… Event-specific or general announcements
  • βœ… Rich text formatting

Social Features

  • βœ… Event Sharing: Share to Facebook, Twitter, LinkedIn, WhatsApp
  • βœ… QR Code Generation: Generate and download QR codes for easy check-in
  • βœ… Favorites/Bookmarks: Save events for later
  • βœ… Social Proof: See who else is attending

Admin Dashboard

  • βœ… Comprehensive analytics and statistics
  • βœ… Interactive charts (Pie, Bar, Line charts)
  • βœ… User management overview
  • βœ… Event performance metrics
  • βœ… RSVP analytics
  • βœ… System health monitoring

User Experience

  • βœ… Dark Mode: Toggle between light and dark themes
  • βœ… Skeleton Loaders: Smooth loading experiences
  • βœ… Toast Notifications: Real-time feedback
  • βœ… Error Boundaries: Graceful error handling
  • βœ… 404 Page: Custom not found page
  • βœ… Mobile Responsive: Perfect on all devices
  • βœ… Keyboard Navigation: Full accessibility support

Export & Integration

  • βœ… Export attendee lists to CSV
  • βœ… QR code check-in system
  • βœ… Social media integration
  • βœ… Calendar integration ready
  • βœ… Email notifications ready

πŸ› οΈ Tech Stack

Frontend

  • React 19 - Latest version with concurrent features
  • TypeScript - 100% type-safe codebase
  • Vite - Lightning-fast build tool
  • Tailwind CSS - Utility-first CSS with dark mode
  • React Router v6 - Modern routing
  • Recharts - Beautiful, responsive charts
  • React Icons - Comprehensive icon library
  • React Toastify - Elegant notifications
  • date-fns - Modern date utility library
  • React Share - Social sharing components
  • QRCode.react - QR code generation
  • PapaParse - CSV parsing and generation
  • html-to-image - Export to images

Backend & Services

  • Firebase Authentication - Secure user management
  • Cloud Firestore - Real-time NoSQL database
  • Firebase Storage - Scalable file storage
  • Firebase Security Rules - Data protection
  • Firestore Indexes - Optimized queries

Development & Build

  • ESLint - Code quality
  • PostCSS - CSS processing
  • Autoprefixer - Browser compatibility

πŸ“¦ Project Structure

Event-Management-System/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ manifest.json       # PWA manifest
β”‚   β”œβ”€β”€ sw.js              # Service worker
β”‚   └── icons/             # App icons
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ announcements/  # Announcement components
β”‚   β”‚   β”‚   β”œβ”€β”€ AnnouncementCard.tsx
β”‚   β”‚   β”‚   └── AnnouncementForm.tsx
β”‚   β”‚   β”œβ”€β”€ common/         # Shared components
β”‚   β”‚   β”‚   β”œβ”€β”€ ErrorBoundary.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Loading.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ErrorMessage.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ProtectedRoute.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ DarkModeToggle.tsx
β”‚   β”‚   β”‚   └── SkeletonLoader.tsx
β”‚   β”‚   β”œβ”€β”€ events/         # Event components
β”‚   β”‚   β”‚   β”œβ”€β”€ EventCard.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ EventForm.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ RSVPSection.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Comments.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ AttendeesList.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ FavoriteButton.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ShareEvent.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ QRCodeModal.tsx
β”‚   β”‚   β”‚   └── ExportAttendees.tsx
β”‚   β”‚   └── layout/         # Layout components
β”‚   β”‚       └── Navbar.tsx
β”‚   β”œβ”€β”€ contexts/          # React contexts
β”‚   β”‚   β”œβ”€β”€ AuthContext.tsx
β”‚   β”‚   └── ThemeContext.tsx
β”‚   β”œβ”€β”€ hooks/             # Custom hooks
β”‚   β”‚   β”œβ”€β”€ useEvents.ts
β”‚   β”‚   β”œβ”€β”€ useRSVPs.ts
β”‚   β”‚   └── useAnnouncements.ts
β”‚   β”œβ”€β”€ pages/             # Page components
β”‚   β”‚   β”œβ”€β”€ Home.tsx
β”‚   β”‚   β”œβ”€β”€ Login.tsx
β”‚   β”‚   β”œβ”€β”€ Register.tsx
β”‚   β”‚   β”œβ”€β”€ Events.tsx
β”‚   β”‚   β”œβ”€β”€ EventDetails.tsx
β”‚   β”‚   β”œβ”€β”€ EditEvent.tsx
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx
β”‚   β”‚   β”œβ”€β”€ Announcements.tsx
β”‚   β”‚   β”œβ”€β”€ AdminDashboard.tsx
β”‚   β”‚   └── NotFound.tsx
β”‚   β”œβ”€β”€ services/          # Firebase services
β”‚   β”‚   β”œβ”€β”€ authService.ts
β”‚   β”‚   β”œβ”€β”€ eventService.ts
β”‚   β”‚   β”œβ”€β”€ rsvpService.ts
β”‚   β”‚   β”œβ”€β”€ announcementService.ts
β”‚   β”‚   β”œβ”€β”€ commentService.ts
β”‚   β”‚   └── favoriteService.ts
β”‚   β”œβ”€β”€ types/             # TypeScript definitions
β”‚   β”‚   └── index.ts
β”‚   β”œβ”€β”€ utils/             # Utility functions
β”‚   β”‚   β”œβ”€β”€ dateUtils.ts
β”‚   β”‚   └── validation.ts
β”‚   └── config/            # Configuration
β”‚       └── firebase.ts
β”œβ”€β”€ firestore.rules        # Security rules
β”œβ”€β”€ firestore.indexes.json # Database indexes
β”œβ”€β”€ storage.rules          # Storage security rules
β”œβ”€β”€ firebase.json          # Firebase config
└── tailwind.config.js     # Tailwind configuration

πŸš€ Getting Started

Prerequisites

  • Node.js 16 or higher
  • npm or yarn
  • Firebase account

Installation

  1. Clone the repository

    git clone <repository-url>
    cd Event-Management-System
  2. Install dependencies

    npm install
  3. Firebase Setup

    Create a Firebase project at console.firebase.google.com

    Enable these services:

    • Authentication: Email/Password + Google
    • Firestore Database: Start in production mode
    • Storage: Default settings
  4. Configure environment

    Copy .env.example to .env:

    cp .env.example .env

    Add your Firebase config:

    VITE_FIREBASE_API_KEY=your_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
  5. Deploy Firebase rules

    firebase deploy --only firestore:rules,storage
  6. Run development server

    npm run dev

    Open http://localhost:5173

πŸ—οΈ Build for Production

npm run build

Build output will be in dist/ directory.

πŸ“š Usage Guide

For End Users

  1. Sign Up/Login

    • Create account with email or Google
    • Secure authentication with Firebase
  2. Browse Events

    • View all events with search and filters
    • See event details, location, and capacity
    • Check real-time RSVP counts
  3. RSVP to Events

    • Choose: Going, Maybe, or Not Going
    • Specify number of guests
    • View other attendees
  4. Engage with Events

    • Add comments and discussions
    • Favorite events for later
    • Share on social media
    • Download QR codes
  5. Manage Your Events

    • Create events with rich details
    • Upload event images
    • Edit and update events
    • Track RSVPs and attendance
    • Export attendee lists

For Administrators

Set first user as admin in Firestore:

  1. Go to Firebase Console β†’ Firestore
  2. Open users collection
  3. Find your user document
  4. Set role field to "admin"

Admin capabilities:

  • Access admin dashboard at /admin
  • View system-wide analytics
  • Manage all events and users
  • Monitor RSVP trends
  • Export data and reports
  • Moderate comments
  • View detailed statistics

🎨 Features in Detail

Dark Mode

Toggle between light and dark themes. Preference is saved to localStorage and persists across sessions.

Real-time Updates

All data syncs in real-time using Firestore listeners:

  • Event changes
  • New RSVPs
  • Comments
  • Announcements

Social Sharing

Share events on:

  • Facebook
  • Twitter
  • LinkedIn
  • WhatsApp
  • Copy link to clipboard

QR Code Check-in

  • Generate unique QR codes for each event
  • Download as PNG
  • Scan to view event details
  • Perfect for event check-in

Export Features

  • Export attendee lists to CSV
  • Includes name, email, RSVP status, guest count
  • Perfect for event planning

Analytics Dashboard

Visualize your data:

  • Event distribution by category
  • Status breakdown (upcoming/ongoing/completed)
  • User growth metrics
  • RSVP trends
  • Recent activity

πŸ”’ Security

  • Firebase Security Rules for Firestore and Storage
  • Role-based access control (RBAC)
  • Input validation and sanitization
  • Protected routes
  • Secure file uploads (5MB limit, image types only)
  • XSS protection
  • CSRF protection

🌐 Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)
  • Mobile browsers

πŸ“± PWA Features

  • Install on home screen
  • Offline capabilities
  • App-like experience
  • Push notifications (ready)

🀝 Contributing

See CONTRIBUTING.md for contribution guidelines.

πŸ“„ License

MIT License - see LICENSE file for details.

πŸ™ Acknowledgments

  • Firebase for backend services
  • Tailwind CSS for styling
  • React community
  • All open-source contributors

πŸ“§ Support

For issues or questions:

  • Open an issue on GitHub
  • Check existing documentation
  • Review FAQ section

πŸ—ΊοΈ Roadmap

  • Email notifications
  • Calendar integration
  • Recurring events
  • Event templates
  • Multi-language support
  • Advanced search with Algolia
  • Video streaming integration
  • Payment integration
  • Ticket sales
  • Event analytics export

Built with ❀️ using React, TypeScript, Firebase, and Tailwind CSS

Version: 2.0.0
Last Updated: November 2025

About

Manage events, RSVPs, and announcements with a React frontend and Firebase backend

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •