Tickify is a tertiary event ticketing platform for South African universities and colleges. It is built as a Java EE (JEE) web application and organized into three connected components:
- Admin Console
- Client Site
- Security Scanner
Tickify helps campus event teams publish and manage events, while students and external attendees can discover events and buy digital tickets. Each ticket includes a unique QR code used at venue entrances for fast and secure verification.
The platform supports institutions such as UJ, Wits, UP, and UCT, and can enforce student-only event access using institutional email-domain validation.
Administrators can:
- Create and manage campus events
- Configure student-only restrictions
- Track ticket sales and attendance
- Monitor revenue through a real-time dashboard
Students and external attendees can:
- Browse upcoming campus events
- Register using university credentials
- Purchase event tickets
- Receive unique QR-coded tickets for entry
Venue guards use a mobile-first web interface to:
- Scan ticket QR codes via camera
- Validate tickets through manual code entry (fallback)
- Receive instant validation feedback (visual, audio, and vibration)
This system follows a layered Java EE structure:
- Presentation layer: JSP pages and servlet controllers
- Business and data-access layer: DAO classes for entity operations
- Persistence layer: JPA entities and persistence configuration
All client applications communicate with the backend through REST-style API calls. Authentication state is maintained on the client using localStorage session tokens.
The datastore layer supports:
- Local JSON file storage
- Oracle database connectivity
On first launch, the server seeds default administrator and security accounts to simplify initial setup.
Tickify now requires explicit database credentials. No default database password is used.
Set either JVM properties or environment variables before starting the app:
- JVM properties:
-Dtickify.db.user=... -Dtickify.db.password=... - Environment variables:
TICKIFY_DB_USERandTICKIFY_DB_PASSWORD
Optional connection settings (if not provided):
TICKIFY_DB_HOST(default:localhost)TICKIFY_DB_PORT(default:1527)TICKIFY_DB_NAME(default:tickifyDB)
Client password reset links are now delivered by email (not shown on-screen).
Configure SMTP via environment variables or JVM properties:
TICKIFY_SMTP_HOSTor-Dtickify.smtp.host=...TICKIFY_SMTP_PORTor-Dtickify.smtp.port=...(default:587)TICKIFY_SMTP_USERor-Dtickify.smtp.user=...TICKIFY_SMTP_PASSWORDor-Dtickify.smtp.password=...TICKIFY_SMTP_FROMor-Dtickify.smtp.from=...TICKIFY_SMTP_STARTTLSor-Dtickify.smtp.starttls=true|false(default:true)TICKIFY_SMTP_SSLor-Dtickify.smtp.ssl=true|false(default:false)
Branding and link generation settings:
TICKIFY_APP_BASE_URLor-Dtickify.app.baseUrl=...for absolute reset links in email.TICKIFY_LOGO_URLor-Dtickify.logo.url=...for the logo rendered in the email template.
This repository contains the Java EE implementation for the web platform, including servlets, DAO classes, entities, and JSP-based views for the different user roles.
This project uses the Tickify brand name across the application and documentation.
Use PRODUCTION_HARDENING_CHECKLIST.md as the release gate checklist for security, validation, scanner readiness, client readiness, admin readiness, and deployment operations.