The backend server and admin dashboard for the Tickify campus event ticketing platform. Built with Java's built-in HTTP server — no external frameworks. Manages events, tickets, users, refunds, analytics, and data exports.
- Real-time statistics: total events, tickets sold, revenue, active users
- Quick-glance overview of platform health
- Create, edit, and delete events
- Set event details: title, date, time, venue, category, university, pricing
- Mark events as student-only or open to all
- Track sold vs available tickets per event
- View all tickets with search and filters
- Track ticket status: valid, scanned, refunded
- Per-event and per-user ticket views
- View registered users with email, type (student/guest), and registration date
- User activity tracking
- Process and track ticket refunds
- Refund history with timestamps and amounts
- Chronological log of all platform activity
- Event creation, ticket purchases, scans, refunds
- Overview Cards — net revenue, average ticket price, scan rate, refund rate
- Sales Over Time — daily revenue and ticket count bar chart
- Ticket Breakdown — student vs guest vs regular, scanned, refunded
- Revenue by Event — horizontal bar chart of top-performing events
- University Breakdown — ticket distribution by university/email domain
- Event Performance Table — sell-through rate, scan rate, revenue per event
- Data Export — download Events, Tickets, Users, Refunds, Activity as CSV or JSON
- Full Report — comprehensive JSON export of all analytics and raw data
- Change admin password
- View storage type (Oracle DB or file-based fallback)
| Layer | Technology |
|---|---|
| Backend | Java (com.sun.net.httpserver) |
| Database | Oracle Database (JDBC) with file-based fallback |
| Frontend | HTML5, CSS3, Vanilla JS |
| Icons | Font Awesome 6 (CDN) |
| Font | Inter (Google Fonts) |
No external Java dependencies (except optional Oracle JDBC driver).
admin-console/
├── src/
│ ├── TickifyServer.java # HTTP server, API routes, static file serving
│ └── DataStore.java # Data persistence (Oracle DB + file fallback)
├── public/ # Admin frontend (served at /admin/)
│ ├── index.html # Admin SPA
│ ├── css/
│ │ └── admin.css # Admin styles (classic theme)
│ └── js/
│ ├── config.js # API base URL configuration
│ └── admin.js # Admin logic, charts, exports
├── data/ # File-based storage (auto-created)
├── lib/ # Place ojdbc8.jar here for Oracle DB
│ └── README.txt
├── compile.bat # Compile (Windows)
├── compile.sh # Compile (Linux/macOS)
├── run.bat # Start server (Windows)
├── run.sh # Start server (Linux/macOS)
└── README.md
- Java JDK 11+ —
javacandjavain PATH - Oracle JDBC Driver (optional) — place
ojdbc8.jarinlib/for Oracle DB support
# Windows
compile.bat
# Linux/macOS
chmod +x compile.sh && ./compile.sh# Windows
run.bat
# Linux/macOS
chmod +x run.sh && ./run.shThe server starts on http://localhost:3000 and serves all three sites.
java TickifyServer [options]
Options:
--port, -p <port> Server port (default: 3000)
--api-only Only serve API, no static files
--no-client Don't serve client site
--no-scanner Don't serve scanner site
--db-url <url> Oracle JDBC URL (default: jdbc:oracle:thin:@localhost:1521:XE)
--db-user <user> Oracle DB username (default: system)
--db-pass <pass> Oracle DB password (default: system)
--help, -h Show help
| Site | URL |
|---|---|
| Admin Console | http://localhost:3000/admin/ |
| Client Site | http://localhost:3000/client/ |
| Security Scanner | http://localhost:3000/scanner/ |
| Account | Username | Password |
|---|---|---|
| Admin | admin |
admin123 |
| Security | security |
security123 |
Change the admin password in Admin Console → Settings.
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/admin/login |
Admin login |
| POST | /api/security/login |
Security staff login |
| POST | /api/users/register |
Register new user |
| POST | /api/users/login |
User login |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/events |
List all events |
| POST | /api/events |
Create event (admin) |
| GET | /api/events/:id |
Get event details |
| PUT | /api/events/:id |
Update event (admin) |
| DELETE | /api/events/:id |
Delete event (admin) |
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/tickets/purchase |
Purchase a ticket |
| GET | /api/tickets/all |
List all tickets (admin) |
| GET | /api/tickets/event/:id |
Tickets for an event |
| GET | /api/tickets/user/:email |
Tickets for a user |
| GET | /api/tickets/verify/:code |
Verify a ticket |
| POST | /api/tickets/scan/:code |
Mark ticket as scanned |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/analytics/overview |
Comprehensive stats overview |
| GET | /api/analytics/revenue-by-event |
Revenue grouped by event |
| GET | /api/analytics/sales-over-time |
Daily sales data |
| GET | /api/analytics/ticket-breakdown |
Ticket type breakdown |
| GET | /api/analytics/event-performance |
Per-event performance metrics |
| GET | /api/analytics/university-breakdown |
Tickets by university domain |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/export/events?format=csv |
Export events (CSV or JSON) |
| GET | /api/export/tickets?format=csv |
Export tickets (CSV or JSON) |
| GET | /api/export/users?format=json |
Export users (CSV or JSON) |
| GET | /api/export/refunds?format=csv |
Export refunds (CSV or JSON) |
| GET | /api/export/activity?format=csv |
Export activity log (CSV/JSON) |
| GET | /api/export/full-report |
Full analytics JSON report |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/stats |
Dashboard statistics |
| POST | /api/refunds |
Request a ticket refund |
| GET | /api/refunds |
List all refunds (admin) |
| GET | /api/activity |
Activity log (admin) |
| POST | /api/admin/change-password |
Change admin password |
The server connects to Oracle DB via JDBC. Place ojdbc8.jar in the lib/ folder:
lib/ojdbc8.jar
Default connection: jdbc:oracle:thin:@localhost:1521:XE (user: system, pass: system)
Override with CLI args: --db-url, --db-user, --db-pass
If Oracle is unavailable, the server automatically falls back to file-based storage using Java serialization in the data/ directory. No configuration needed.
For production deployment on an Oracle Linux VM with Apache2 reverse proxy:
# Quick deploy (on the VM)
scp -r Tickify/ user@vm-ip:/tmp/tickify-upload
ssh user@vm-ip "sudo bash /tmp/tickify-upload/deploy/setup-oracle-linux.sh"See the full Deployment Guide for details.
This admin console is part of the Tickify platform and is also available as a standalone repo:
- GitHub: Letsoperate/Tickify-Amin