EventStaff is a role-based PHP + MySQL platform for event workforce management. It connects organizers who need part-time staff with employees looking for shift-based event work.
The web experience follows the same product framing used in index.php: modern landing page, role-specific dashboards, and workflow-driven modules for events, applications, payments, and notifications.
- PHP (procedural + utility functions)
- MySQL (via PDO)
- Bootstrap 5 + Bootstrap Icons
- Vanilla JavaScript for polling and UI interactions
- XAMPP local environment
Expected location:
/Applications/XAMPP/xamppfiles/htdocs/EventStaff
From XAMPP Control Panel, start:
- Apache
- MySQL
Option A: phpMyAdmin
- Open
http://localhost/phpmyadmin - Import
config/setup.sql
Option B: CLI
cd /Applications/XAMPP/xamppfiles/htdocs/EventStaff
/Applications/XAMPP/xamppfiles/bin/mysql -u root < config/setup.sqlNotifications are created in one of two ways:
- Auto-create in
config/database.php(runs when pages load and DB connection is initialized) - Manual migration file:
migrations/001_create_notifications_table.sql
Manual run (if needed):
cd /Applications/XAMPP/xamppfiles/htdocs/EventStaff
/Applications/XAMPP/xamppfiles/bin/mysql -u root eventstaff_db < migrations/001_create_notifications_table.sqlOpen:
http://localhost/EventStaff/config/test_connection.php
You should see connection success plus detected tables and sample users.
Seeded by config/setup.sql:
- Admin:
admin@eventstaff.com/admin123 - Organizer:
organizer@test.com/password123 - Employee:
employee@test.com/password123
Note: This project uses MD5 hashing in current auth flow for academic/demo purposes.
- Access platform-level dashboard and analytics
- Review users and change user roles
- View payments and notifications
Primary entry:
/EventStaff/admin/dashboard.php
- Complete organizer profile
- Create events and event shifts
- Review employee applications
- Track payments and notifications
Primary entry:
/EventStaff/organizer/dashboard.php
- Complete employee profile
- Browse and apply for shifts
- Track application statuses
- Track payments and notifications
Primary entry:
/EventStaff/employee/dashboard.php
index.php: landing page and conversion entry pointauth/login.php: login + role-based redirectauth/register.php: registration for organizer and employee rolesauth/logout.php: session logoutincludes/session.php: session state, guards, role checks, flash helpers
config/database.php: PDO connection and notifications table bootstrapconfig/NotificationService.php: notification CRUD and email helperconfig/setup.sql: base schema + sample seed dataconfig/test_connection.php: visual DB verificationmigrations/001_create_notifications_table.sql: notifications migration
organizer/dashboard.php: organizer KPIs and quick actionsorganizer/events.php: organizer event listingorganizer/create_event.php: create new eventorganizer/event_detail.php: event detailsorganizer/event_shifts.php: shift management by eventorganizer/applications.php: review incoming applicationsorganizer/payments.php: organizer-side payments vieworganizer/notifications.php: organizer notificationsorganizer/profile.php: organizer profile completion/editorganizer/employee_profile.php: employee profile inspectionorganizer/debug_*.php: development/debug utilities
employee/dashboard.php: employee summary and shortcutsemployee/shifts.php: browse available shiftsemployee/my_applications.php: track submitted applicationsemployee/payments.php: employee earnings and payment statesemployee/notifications.php: employee notificationsemployee/profile.php: employee profile completion/edit
admin/dashboard.php: system stats, role management, recent activityadmin/payments.php: global payment oversightadmin/notifications.php: admin notifications
api/notification_count.php: unread notification count endpointassets/css/style.css: global stylesassets/js/notification-polling.js: client polling for unread counts
Base URL:
http://localhost/EventStaff/
GET /EventStaff/-> landing page (index.php)GET /EventStaff/auth/login.php-> login formPOST /EventStaff/auth/login.php-> authenticate userGET /EventStaff/auth/register.php-> registration formPOST /EventStaff/auth/register.php-> create userGET /EventStaff/auth/logout.php-> logout
GET /EventStaff/admin/dashboard.phpGET /EventStaff/admin/payments.phpGET /EventStaff/admin/notifications.php
GET /EventStaff/organizer/dashboard.phpGET /EventStaff/organizer/profile.phpGET /EventStaff/organizer/events.phpGET /EventStaff/organizer/create_event.phpGET /EventStaff/organizer/event_detail.phpGET /EventStaff/organizer/event_shifts.phpGET /EventStaff/organizer/applications.phpGET /EventStaff/organizer/employee_profile.phpGET /EventStaff/organizer/payments.phpGET /EventStaff/organizer/notifications.php
GET /EventStaff/employee/dashboard.phpGET /EventStaff/employee/profile.phpGET /EventStaff/employee/shifts.phpGET /EventStaff/employee/my_applications.phpGET /EventStaff/employee/payments.phpGET /EventStaff/employee/notifications.php
GET /EventStaff/api/notification_count.php(requires active session)
- Route protection is centralized in
includes/session.php(require_login,require_role). - Registration currently allows only
organizerandemployee; admin users are expected from seed data or manual DB admin actions. - Password verification currently uses MD5 and should be upgraded to
password_hash+password_verifyfor production. - Default local DB user settings (
rootwith empty password) are for local development only.
- Employee flow
- Register -> complete profile -> browse shifts -> apply -> track status/payments/notifications
- Organizer flow
- Register -> complete profile -> create event -> create shifts -> review applications -> manage payments/notifications
- Admin flow
- Login with admin account -> monitor system stats -> manage user roles -> monitor payments