Add self-hosted usage analytics: pageview tracking + admin stats dashboard
Records pageviews (path, referrer, browser/OS/device, IP, GeoIP country) via a POST /api/track beacon into a new PageView table, and exposes aggregated daily/breakdown stats behind a token-gated GET /api/admin/stats endpoint with brute-force lockout. Frontend gets a /admin dashboard (charts + breakdown tables) built on recharts, with a switchable per-day pageviews chart. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,8 @@ SQLAlchemy[asyncio]>=2.0
|
||||
aiosqlite>=0.20 # dev / default DATABASE_URL
|
||||
asyncpg>=0.29 # production (PostgreSQL)
|
||||
pyotp>=2.9 # TOTP login
|
||||
user-agents>=2.2 # parse User-Agent for /track (self-hosted analytics)
|
||||
geoip2>=4.8 # resolve IP -> country from a local .mmdb file (no external calls)
|
||||
|
||||
# NOTE: the legacy Flask/Jinja HTTP UI (api/routes.py, api/forms.py,
|
||||
# api/templates/) is dormant and its dependencies (Flask, Flask-WTF, etc.)
|
||||
|
||||
Reference in New Issue
Block a user