Fenyxz WiFi — Hotspot Voucher Platform
A web app for selling WiFi vouchers. Customers buy and redeem vouchers on their own and watch their remaining time, while the admin manages codes, promotions, and cash flow from one panel.
- Role
- Full-Stack Developer
- Period
- Apr–May 2025
- Tools
-
- Laravel 12
- PHP
- MySQL
- Blade
- Bootstrap 5
- Chart.js
The challenge
Fenyxz WiFi sells internet access as timed vouchers, from 1 hour up to 24 hours. It needed a place where customers could buy and redeem codes on their own, rules so a code couldn’t be used twice or by someone else, and a way for the admin to see revenue without tallying it by hand.
My role
I built it as the full-stack developer: the database schema, the buy and redeem flow, the customer area, the admin panel, and the cash-flow charts.
Process
I worked on it from late April to mid-May 2025. I started with the data model (voucher codes, promotions, transactions, and usage history) and added columns as the rules became clear, such as the redeem time and expiry date. I used Laravel with Blade and Bootstrap for two areas separated by role middleware: the admin panel and the customer area. Time turned out to be the hardest part. There’s a window for redeeming after purchase, and then a usage period that only starts once the voucher is redeemed. So the usage history stores its own start and end times, and for older records without an end time I wrote an Artisan command that fills it in.
Solution
- Self-service buying: customers pick a plan from the catalogue, choose a payment method (bank transfer, QRIS, or e-wallet), and get a printable invoice with instructions.
- Clear redeem rules: the code has to exist, be unused, belong to the same account, and still be within its time limit. When it fails, the message says why.
- Visible remaining time: the customer dashboard counts down the time left on each voucher and the total time left.
- Admin panel: a summary of active and expired vouchers, a 30-day usage chart, plan distribution, and voucher code management with search.
- Promotions: price discounts or bonus minutes, with a date range and minimum purchase, attached to specific vouchers.
- Cash-flow analysis: total revenue, a 12-month chart, and the share of each payment method, straight from transaction data.
- Role-based access: admins and customers each have their own pages, and user management is admin-only.
Results
| Need | How the app handles it |
|---|---|
| Buy without waiting | Catalogue, payment options, and automatic invoices |
| No code used twice | Redeeming checks owner, status, and time limit |
| Customers know their time left | A countdown per voucher plus total time left |
| The owner knows the revenue | Monthly revenue chart and payment-method breakdown |
- Payment is still simulated: the method is recorded, but there’s no payment gateway yet.
- The admin enters voucher codes in the panel; the app doesn’t create codes on the router yet.
Lessons
Time logic changed the design more than anything else. Separating the redeem window from the usage period, each with its own columns, made the calculations and the history much easier to check. I also learned that specific error messages, like “code already used” or “not yours”, help customers far more than a plain “failed”. The most useful next step is connecting the app to the router through the RouterOS API so hotspot codes are created automatically when a voucher sells, followed by a real payment gateway.
Documentation
-
Vouchers that haven't been redeemed yet count down their remaining time. All data in this gallery is test data. -
Mobile view. Voucher cards stack vertically. -
The catalogue only lists vouchers that haven't been sold. -
Three payment methods. Payment is still simulated, with no payment gateway yet. -
Every purchase produces a printable invoice with instructions for using the voucher. -
The admin's voucher summary and usage chart. -
The admin adds, edits, searches, and deletes voucher codes. -
Revenue by month and by payment method, calculated from the transactions table.