Tokora · Quickstart
Tokora Quickstart, as shipped in the download
The QUICKSTART.txt in the download — the same steps your delivery email carries.
TOKORA — QUICKSTART
===================
Self-hosted queue & token management with a waiting-room display board — PHP +
MySQL/SQLite. Manages a waiting queue only (no payments, no cards, no crypto,
no personal health records).
REQUIREMENTS
------------
- PHP 8.1+ (tested on 8.3) with extensions: pdo, pdo_sqlite (or pdo_mysql)
- MySQL 5.7+ / MariaDB 10+ OR SQLite 3 (SQLite requires no extra setup)
- A web server (Apache with mod_rewrite, or Nginx with try_files)
- No Composer packages, no API keys, no external services, no CDN.
SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the contents of the `app/` folder to your web root (e.g. public_html/)
or a subdirectory (e.g. public_html/tokora/).
2. Make sure this directory is writable by PHP:
data/
Via cPanel File Manager: right-click -> Permissions -> set to 755 or 775.
3. Visit https://yourdomain.com/install/ in your browser.
4. Fill in the installer:
- Database: choose MySQL (fill in host/name/user/pass) or SQLite (no setup)
- Organisation name (shown on the board) + timezone
- Your admin name, email + password
The installer seeds a few starter services and counters so you can start
straight away.
5. Log in, then:
- Setup > Services: name each line and give it a token prefix (P, C, R…)
- Setup > Counters: name each desk; bind it to a service or "Any service"
- Open the Display board and Ticket kiosk (links in the sidebar)
THE PUBLIC SCREENS (NO LOGIN)
-----------------------------
- DISPLAY BOARD /board — put this on a lobby TV. Shows now-serving per
counter, each line's length, and recent calls.
Auto-refreshes (meta refresh + a tiny offline
polling script; falls back gracefully with no JS).
- TICKET KIOSK /kiosk — put this on a tablet by the door. A visitor taps
a service and gets the next number.
- TICKET STATUS /t/{id} — a visitor can watch their own place in line from
their phone; it updates until they're called.
RUNNING THE DESK (STAFF)
------------------------
- Dashboard shows today's lines and every counter. Click a counter to open its
console.
- "Call next" completes whoever the counter was serving and calls the oldest
waiter for its service (or the oldest across all services for an "Any" desk).
- "Served" / "No-show" resolve the current caller; "Recall" re-announces them.
TRY IT WITH DEMO DATA FIRST
---------------------------
- In Settings, click "Load demo data" for a sample clinic (3 services, 3
counters, a day of tokens across every status), then "Reset all data".
- Or from the command line: php bin/demo.php
(login: admin@tokora.app / admin123)
VPS / SELF-HOSTED (APACHE)
--------------------------
<VirtualHost *:80>
DocumentRoot /var/www/tokora/app
<Directory /var/www/tokora/app>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
DOCKER (QUICK TEST)
-------------------
docker run --rm -p 8080:8080 \
-v "$(pwd)/app:/var/www/html" \
-w /var/www/html \
php:8.3-cli \
php -S 0.0.0.0:8080 router.php
Then visit http://localhost:8080/install/
REPORTS & EXPORTS
-----------------
- Daily report > pick a day > Export PDF or CSV.
- The PDF is a genuine, dependency-free document (summary + per-service).
- The CSV lists the day's tokens and is safe to open in Excel / Google Sheets
(formula-injection hardened).
POST-INSTALL SECURITY CHECKLIST
--------------------------------
[ ] config.php is protected (the .htaccess does this automatically)
[ ] data/ is not web-accessible (.htaccess blocks it automatically)
[ ] Use HTTPS in production
[ ] Keep PHP updated
NOTES
-----
* Token numbers are sequential per service and reset each day automatically —
no cron job is required.
* Tokora manages a waiting queue only. It processes no payments and stores no
cards, bank details, cryptocurrency, or personal health records.
← Back to Tokora · Manual · API · Test run