- Overview
- Features
- Tech Stack
- Project Structure
- Quick Start
- Configuration
- Running Locally
- Testing
- Documentation
- Contributing
- Contributors
- License
- Acknowledgments
UniEvent is a comprehensive, open-source event management platform built specifically for universities and educational institutions. It bridges the gap between event organizers and students — making campus life more connected, organized, and engaging.
Whether it's a department seminar, cultural fest, hackathon, or club meetup — UniEvent brings it all under one roof.
| Problem | UniEvent's Solution |
|---|---|
| Events scattered across WhatsApp, notice boards, emails | One centralized platform for all campus events |
| Manual attendance tracking via paper | QR Code-based contactless check-in |
| No visibility into event participation data | Analytics dashboard with branch & year-wise insights |
| Poor student engagement with campus activities | Gamification — points, badges, and leaderboards |
| Difficult for clubs to manage registrations | Custom forms, payment integration & dashboards |
- Built for Campus Life — Tailored for students, clubs, and administrators
- Data-Driven — Rich analytics for every event organizer
- Firebase-Powered — Enterprise-grade scalability and real-time sync
- Cross-Platform — Native iOS, Android, and Progressive Web App
- Open Source — MIT licensed, community contributions welcome
| Feature | Description |
|---|---|
| Event Discovery | Browse and search events filtered by department, year, and interests |
| One-Tap Registration | Quick RSVP with automatic calendar integration |
| Smart Notifications | Push notifications and timely reminders before events |
| QR Code Check-in | Contactless, instant attendance tracking |
| Gamification | Earn reputation points and compete on campus leaderboards |
| Saved Events | Bookmark events you're interested in for quick access later |
| Event Chat | Real-time discussion space with fellow attendees |
| Feature | Description |
|---|---|
| Event Creation | Rich media support with precise audience targeting |
| Live Attendance Dashboard | Real-time QR code scanning and attendee tracking |
| Analytics Suite | Branch-wise, year-wise, and time-based participation insights |
| Custom Registration Forms | Dynamic forms with validation tailored to each event |
| Payment Integration | Built-in ticketing and payment support for paid events |
| Google Meet Integration | Auto-generate meeting links for virtual or hybrid events |
| Reputation Tracking | Gamified scoring system based on event success metrics |
| Feature | Description |
|---|---|
| Control Panel | Platform-wide event moderation and oversight tools |
| Role Management | Assign admin and club privileges via Firebase Cloud Functions |
| Event Moderation | Suspend or reinstate events that violate community guidelines |
| Platform Analytics | Track engagement, user growth, and event activity metrics |
| Bulk Operations | Efficiently manage multiple events simultaneously |
| Technology | Purpose |
|---|---|
| React Native + Expo | Cross-platform mobile development (iOS & Android) |
| React Navigation | App routing and screen navigation |
| Firebase SDK | Auth, Firestore, Storage & Cloud Functions integration |
| Expo Notifications | Push notification system |
| React Native Reanimated | Fluid animations and gesture-based interactions |
| Technology | Purpose |
|---|---|
| Firebase Cloud Functions | Serverless TypeScript backend logic |
| Firebase Admin SDK | Privileged server-side operations |
| Node.js 18+ | Runtime environment for cloud functions |
| EmailJS & Resend | Automated transactional email delivery |
| PDF-lib | Dynamic certificate and document generation |
| Tool | Purpose |
|---|---|
| GitHub Actions | CI/CD pipeline automation |
| ESLint + Prettier | Code style enforcement and formatting |
| Jest | Unit and integration testing |
| Firebase Emulators | Local development environment |
| Dependabot | Automated dependency security updates |
| CodeRabbit AI | Automated AI-assisted code reviews |
Uni-Event/
├── app/ # React Native + Expo frontend
│ ├── assets/ # Images, fonts, icons
│ ├── components/ # Reusable UI components
│ ├── screens/ # App screens (Home, Events, Profile, etc.)
│ ├── navigation/ # React Navigation config
│ ├── services/ # Firebase service wrappers
│ ├── hooks/ # Custom React hooks
│ ├── utils/ # Helper functions
│ ├── .env.example # Environment variable template
│ └── package.json
│
├── cloud-functions/ # Firebase Cloud Functions (TypeScript)
│ ├── src/
│ │ ├── index.ts # Function entry points
│ │ ├── auth/ # Auth-related functions
│ │ ├── events/ # Event management functions
│ │ └── notifications/ # Push & email notification logic
│ └── package.json
│
├── docs/ # Project documentation
│ ├── SETUP.md # Full setup guide
│ ├── ENV_SETUP.md # Environment variables & API key guide
│ ├── FIREBASE_SETUP.md # Firebase & emulator config
│ └── Architecture.md # System architecture overview
│
├── .github/
│ ├── workflows/ # GitHub Actions CI/CD pipelines
│ └── ISSUE_TEMPLATE/ # Bug report & feature request templates
│
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community standards
└── LICENSE # MIT License
Make sure you have the following installed before proceeding:
- Node.js v18+ → Download
- npm or yarn
- Expo CLI:
npm install -g expo-cli - Firebase CLI:
npm install -g firebase-tools - Java 11+ (required for Firebase Emulators)
git clone https://github.com/roshankumar0036singh/Uni-Event.git
cd Uni-Event# Install frontend dependencies
cd app
npm install
# Install cloud functions dependencies
cd ../cloud-functions
npm installcp app/.env.example app/.envOpen app/.env and populate the required keys. The file contains three groups of variables:
| Group | Variables |
|---|---|
| Firebase Config | FIREBASE_API_KEY, FIREBASE_AUTH_DOMAIN, FIREBASE_PROJECT_ID, FIREBASE_STORAGE_BUCKET, FIREBASE_MESSAGING_SENDER_ID, FIREBASE_APP_ID |
| Google OAuth | GOOGLE_CLIENT_ID_ANDROID, GOOGLE_CLIENT_ID_IOS, GOOGLE_CLIENT_ID_WEB |
| Email Service (Optional) | EMAILJS_SERVICE_ID, EMAILJS_TEMPLATE_ID, EMAILJS_PUBLIC_KEY |
For a step-by-step guide on how to obtain each key from the respective platforms (Firebase Console, Google Cloud Console, EmailJS), refer to docs/ENV_SETUP.md.
You'll need two terminals running simultaneously.
Terminal 1 — Start Firebase Emulators (Backend)
cd cloud-functions
npm run serveThis starts local emulators for Firestore, Auth, and Cloud Functions.
Terminal 2 — Start the Expo App (Frontend)
cd app
npm startThen press the appropriate key in the terminal:
| Key | Platform |
|---|---|
w |
Web (browser) |
a |
Android (emulator or device) |
i |
iOS (simulator) |
Run Firestore security rule tests:
npm run test:rulescd app
npm run test:rulescd cloud-functions
npm test| Document | Description |
|---|---|
| Setup Guide | Full installation and configuration walkthrough |
| Environment Variables | How to obtain and configure all required API keys |
| Firebase Setup | Firebase project creation and emulator configuration |
| Document | Description |
|---|---|
| Architecture | System design, data flow, and architecture overview |
| Contributing Guide | How to contribute code, docs, or bug reports |
| Code of Conduct | Community standards and expectations |
We warmly welcome contributions from the community — whether you're a first-timer or a seasoned open-source developer. Bug fixes, new features, documentation improvements, and issue reports are all valuable.
# Step 1: Fork the repository on GitHub
# Step 2: Clone your fork locally
git clone https://github.com/YOUR_USERNAME/Uni-Event.git
cd Uni-Event
# Step 3: Add the original repo as upstream
git remote add upstream https://github.com/roshankumar0036singh/Uni-Event.git
# Step 4: Verify remotes
git remote -v# Fetch latest changes from the original repo
git fetch upstream
# Switch to your main branch
git checkout main
# Merge upstream changes into your local main
git merge upstream/main
# Push the updated main to your fork
git push origin main# Create a new branch for your feature or fix
git checkout -b feature/your-feature-name
# Make your changes, then stage and commit
git add .
git commit -m "feat: add your feature description"
# Push your branch to your fork
git push origin feature/your-feature-name
# Open a Pull Request on GitHub 🎉- Follow the existing code style (ESLint + Prettier enforced).
- Write clear, descriptive commit messages.
- Reference related issues in your PR description (e.g.,
Closes #42). - Add or update tests where applicable.
- Read CONTRIBUTING.md before submitting a PR.
Thanks to all the amazing people who contribute to Uni-Event 🚀
This project is licensed under the MIT License — you're free to use, modify, and distribute it with attribution.
See the LICENSE file for full details.
UniEvent is built and maintained by contributors from the open-source community. Special thanks to everyone who has submitted issues, pull requests, or feedback to make this platform better.
Built with ❤️ using:
- Firebase — Backend infrastructure
- Expo — Cross-platform app development
- React Native — Mobile UI framework
If you run into issues or have questions:
- 🐛 Bug Reports → GitHub Issues
- 💬 Discussions → GitHub Discussions
- 📖 Documentation → Project Wiki
