Publish the website
Upload the static ZIP to Cloudflare Pages and add babouanalytics.com under Custom domains. You can already browse every page, even without live data.
The website can go online before the bot sync is ready. When you connect the two, it will show your actual Discord statistics, not sample numbers.
Upload the static ZIP to Cloudflare Pages and add babouanalytics.com under Custom domains. You can already browse every page, even without live data.
The complete source includes functions/api/stats.js and functions/api/ingest.js. Deploy via a Git-connected Cloudflare Pages project to enable these functions, then bind a KV namespace named ANALYTICS_KV.
Add a private INGEST_SECRET to Cloudflare Pages and the matching WEB_INGEST_SECRET only to your bot's private environment. Configure the Python publisher to send aggregated counts to /api/ingest periodically.
After the first successful sync, the dashboard automatically switches from the empty state to real numbers. The refresh button always requests the latest data.