Use ADMIN_USERNAME and ADMIN_PASSWORD set in Cloudflare Pages environment variables.
Choose the admin task you want to work on. Each tool opens separately so the admin page stays clean and easy to use.
Upload a GTFS .zip file and convert one route into a clean AVL simulator route pack. Use this first — no BusMaps API needed.
Search BusMaps stops, next departures, route cards and import GTFS-backed route packs into the Global Route Library.
Create paid invoice access codes or free/test usernames and passwords for simulator users.
Set route running times, headways, stand times, breaks, PVR and route criteria.
Build reusable minute-by-minute scenarios and save them to Supabase without changing simulator logic.
Create invoices with logo, manual line items, VAT and payment/bank details.
Generate attendance certificates with logo, date, company, course title and certificate number.
Add or change the YouTube video shown on the first landing page.
Add cities, routes, operators, GTFS status, demo visibility and simulator-ready status. Review custom route-pack requests.
Edit quiz settings, questions, pass mark and trainee assessment content.
Review existing simulator access licences and refresh licence records.
Paste any YouTube watch, youtu.be, shorts, live or embed link. The first landing page will show the video immediately inside the opening hero. Autoplay is muted so browsers allow it to start straight away.
Manage the public Global Route Library and the route-pack request form. This only controls the commercial/global route-pack layer. It does not block Objectives Platform access and does not change simulator payment rules.
This imports from the BusMaps API using Cloudflare environment variables only. The API key is never exposed to the browser. Use this as an admin preview/import workflow first, then validate the route before marking it simulator-ready.
Imported routes stay here so they do not feel lost. Use Validate before marking a route simulator-ready.
Use this first. Pick the city, type the route number, then press Search route. The app will find the BusMaps routeId and regionName in the background.
Search the BusMaps GTFS downloads catalogue. This confirms which official or improved GTFS feeds exist for the city/country.
Use a coordinate near the city or route. BusMaps returns stops and usually the regionName needed for the /line route-card endpoint.
Enter the routeId and regionName from BusMaps results. For busmaps.com, countryIso is normally required. For wikiroutes.info, leave countryIso empty if the API rejects it.
Use Paid / Invoice Access Code for customer access after payment or invoice. Use Free / Test Username + Password for temporary demo or internal trainer access. All access is only valid for the selected time after first login.
Configure each route separately. This controls A→B/B→A runtime, frequency, terminal stand time, full-day schedule, breaks and generated PVR. Save globally to Supabase so Trainer Host, Simulator and trainees all load the same route data.
Set the official timing, curtailment and changeover points for this selected route only. All stops/points from the route are available in the dropdown. Save globally to Supabase so Trainer Host, Simulator, Demo Simulator and trainees use the same route criteria.
Create a simple AVL Training Doctor invoice from inside the admin screen. This does not affect simulator access; use Create Simulator Access separately to issue the login/code.
Blank start: the invoice form opens empty on every page load. Enter only the details you want printed, then generate the invoice. The generated invoice preview is editable before printing or downloading.
Create a simple attendance certificate from inside the admin screen. This does not save personal details to Supabase.
Safe phase 1: this tool creates scenario templates in Supabase only. The simulator is not forced to wait for these records, so existing startup and route running stay unchanged.
Questions are editable from admin and saved to Supabase. Trainees access this from the front page using Take Training Quiz.