Skip to content
Bibimbap101Public

Repository files navigation

Eventify

What Eventify does

Live demo Node.js 18+ React 19 Express 5 MongoDB

Event management for National University – Mall of Asia (NU MOA).
Every college, the Student Council and offices such as Career Services run their events here.

Eventify demo


✨ Features

🎟️ For attendees

  • Browse events by category or on the calendar
  • Register and pick a seat on the seat map
  • QR ticket for check-in and exit
  • Certificates and feedback after the event

🗂️ For event managers

  • Submit events for admin approval
  • Venue booking with clash and capacity checks
  • Session timeline, speakers and announcements
  • Registrations, attendance and reports

🛡️ For admins

  • Approve, reject or archive events
  • Manage users, venues and platform settings
  • Audit log of every change
  • CSV reports across all events

📷 For door staff

  • Scan tickets to check attendees in
  • Rotating exit QR to verify who stayed
  • Duplicate and too-early scans are refused

📸 The flow, step by step

Home page

1 · Home
What's coming up on campus

Explore events

2 · Explore events
Filter by category, venue and status

Manager creates an event

3 · Manager submits an event
Venue, time and capacity are checked for clashes

Admin approves the event

4 · Admin approves it
Approving opens registration right away

Student picks a seat

5 · Student registers
Pick a seat on the seat map

QR ticket pass

6 · QR ticket pass
Shown at the door to check in

Check-in desk

7 · Staff check-in desk
Fake, cancelled and used tickets are refused

Certificates

8 · Certificate
Issued after the exit scan, with hours earned

Event reports

9 · Reports
Registrations, attendance and feedback per event

🔄 How an event flows

flowchart TD
    A([Manager creates event]) --> B{Admin review}
    B -- Rejected --> A
    B -- Approved --> C[Registration opens]
    C --> D[Attendee registers<br/>and picks a seat]
    D --> E[Staff scans QR ticket<br/>at check-in]
    E --> F[Exit QR verified]
    F --> G([Certificate + feedback])
Loading

🧰 Tech stack

Frontend

TechnologyPurpose
React 19UI library
React Router 7Client-side routing
Create React AppDev server, production build and tests
Lucide ReactIcons
qrcode + jsQRTicket QR codes and in-browser scanning
html-to-imageDownloadable tickets and certificates
DiceBearGenerated profile avatars
Vercel + Vercel AnalyticsHosting and page analytics

Backend

TechnologyPurpose
Node.jsRuntime environment
Express 5REST API framework
MongoDB + Mongoose 8Database & ODM
JSON Web TokensAuthentication & role-based access
bcryptjsPassword hashing
NodemailerPassword-reset emails

Tooling & testing

TechnologyPurpose
NodemonAuto-restart dev server
ESLintLinting (react-app config)
Jest + node:testApp and server tests

Note

A React app (this folder) talks to an Express + MongoDB server (server/). See SYSTEM_FLOW.md for how the parts work together.

🚀 Getting started

1. Clone and install
git clone https://github.com/Bibimbap101/eventify.git
cd eventify
npm install
npm --prefix server install
2. Set up the server

You need MongoDB, either installed locally or a free MongoDB Atlas database.

Create server/.env with at least these two lines:

MONGODB_URI=mongodb://127.0.0.1:27017/eventify
JWT_SECRET=any-long-random-text

Optional: PORT (default 5000), CLIENT_URL (default https://eventifys.vercel.app; set it to http://localhost:3000 locally), JWT_EXPIRES_IN (default 7d), and SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, MAIL_FROM for password-reset and announcement emails (without them the email prints in the server console). On hosts that block SMTP ports, such as Render's free plan, set BREVO_API_KEY and MAIL_FROM instead, and emails go through Brevo's HTTP API. MAIL_FROM must be a sender verified in Brevo.

3. Load demo data (optional)

Add SEED_ADMIN_EMAIL, SEED_ADMIN_PASSWORD and SEED_PASSWORD_SUFFIX to server/.env, then:

npm --prefix server run seed

[!WARNING] Seeding wipes every event, registration and non-admin account in that database first.

4. Run it

Start the server and the app in two terminals:

npm run server
npm start

The app runs at http://localhost:3000.

5. Run the tests
npm test
npm --prefix server test

[!TIP] The server's data-rule tests need a local MongoDB (or MONGODB_TEST_URI). They use a throwaway eventify_rules_test database and are skipped when no MongoDB is running.

Releases

Packages

Contributors

Languages