- Remove 'processing' intermediate status (not in payments ENUM) β fetch
pending payment directly then mark completed in one step
- Fix double-protocol in Portal base log (PORTAL_HOST already has scheme)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add migration runner that executes before server startβ
Migrations are idempotent β errno 1060 (duplicate column) is silently
skipped so they are safe to run on every boot.
First migration adds ssid_name, ssid_password, omada_wlan_id, omada_ssid_id
to the devices table for existing installations.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Node.js/Express backend with Omada SDN integration, M-Pesa payments via
Snippe, SMS notifications, captive portal, and tenant dashboard API.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>