Claude-Tracker
2026-05-28
Built and deployed Claude session tracker web app at project.onceuponadice.com
Started by exploring options for tracking daily Claude interactions as a project tracker. Went through several design iterations — from an in-browser React artifact to a persistent local app. Settled on a Flask web app hosted on the Linux server at 65.181.118.40.
Deployed the full stack:
• Flask + Gunicorn backend on port 5002
• Nginx reverse proxy with SSL via Certbot
• Subdomain project.onceuponadice.com pointed via GoDaddy A record
• JSON file upload system with drag-and-drop
• Logs stored in /opt/project-tracker/logs/
Troubleshooting steps resolved:
• Nginx conf.d missing → manually created with SSL + proxy_pass
• Systemd service not installed → copied and enabled manually
• Venv missing → created and pip installed requirements
• Templates folder not copied → manually transferred
• app.py crashing on list-type summary fields → patched normalize_session() to handle both simple and rich JSON formats
Workflow established: at the end of any Claude session, ask for a log entry JSON, download it, drag it onto the upload zone at project.onceuponadice.com.
EXPECTED JSON FORMAT
{
"project": "BloodMoonRising-Active",
"date": "2026-05-28",
"summary": "One-line description of what was worked on",
"tags": ["Game Dev"],
"details": "Optional longer breakdown of this session"
}
Pass an array [{...}, {...}] to log multiple sessions in one file. Ask Claude at the end of any session: "Generate a log entry for this session" and it will produce this format ready to upload.