Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

🎪 Event Management System

A blazing-fast 🏃‍♂️, offline-first 📴, and scalable ⚡ backend for managing attendees, check-ins, wristbands, and more — all powered by FastAPI + PostgreSQL + RFID.


🚀 Features

  • 🎟️ Attendee Onboarding via CSV
  • 🚂 RFID Wristband Assignment
  • ⏱️ Real-time Check-in/Check-out Tracking
  • 🡾 Freebies & Kit Distribution Tracking
  • 🔌 Offline Caching for Desks
  • 🔄 Multi-System Syncing with Conflict Resolution
  • 🔒 Data Integrity & Deduplication

🧠 Tech Stack

LayerTech
Backend API⚡ FastAPI
Database🐘 PostgreSQL + SQLite (Offline)
RFID Interface🎯 PySerial / Device SDK
Caching📦 Local JSON / SQLite
Deployment☁️ Docker-ready

🛠️ Setup Instructions

1. Clone the repo

git clone https://github.com/ashvp/Event-Management.git
cd Event-Management

2. Install dependencies

python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt

3. Setup PostgreSQL

Create a .env file with your DB creds:

DATABASE_URL=postgresql://user:pass@localhost:5432/rfid_event

Run migrations:

alembic upgrade head

4. Run the backend

uvicorn app.main:app --reload

🧪 Testing

pytest

📆 API Endpoints

POST /attendees/upload_csv → Bulk onboard via CSVGET /attendees/ → Get all attendee infoPOST /attendees/ → On spot registrationPOST /attendees/{attendee_id}/assign_rfid → Assign RFID to attendeeGET /attendees/rfid_export/ → Downloads RFIDPOST /check-in/ → Check in attendeePOST /claim/{item_name} → Claiming an offered itemGET /event_days/ → Get event daysPOST /event_days/ → Add event daysGET /dashboard/stats → Get basic statsGET /dashboard/ → Dashboard with advanced search

📚 Full docs available at /docs via Swagger UI.


🤝 Contributing

Wanna help out? Pull requests welcome! Please follow the conventional commits style and keep PRs atomic.


🚇 Known Challenges

  • RFID reader behavior can vary by vendor 🤷‍♂️
  • Offline-first mode can cause timestamp conflicts — we dedupe based on uuid + ts
  • SQLite schema must match production schema — auto-migration WIP 🔧

📊 Future Improvements

  • Admin Dashboard (React / Streamlit / Vue)
  • PDF Badge Generator
  • Realtime WebSocket Sync
  • Telegram Bot for Check-in Alerts 📲

🐛 Bug? Suggestion?

Open an issue or hit us up via carrier pigeon. Seriously, just open an issue ☛ here


📜 License

MIT © Ashwin 2025


💡 Fun Fact

Each wristband is basically a tiny dumb storage device with a superpower: being at the right place at the right time.


About

A Basic Event Management Software with a Twist

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages