Files
Raccoon-TimeKeeper/.claude-context/00-overview.md
T

1.2 KiB

Raccoon Timekeeper

Self-hosted, multi-user weekly time tracking app with a raccoon-themed grayscale UI. Originally a Google Apps Script / Sheets tool, rewritten in Flask.

Repository: https://gitea.hideawaygaming.com.au/jessikitty/Raccoon-TimeKeeper

Architecture

  • App: app.py — Flask + Flask-SQLAlchemy + Flask-Login; models, routes, JSON API and CLI commands in one module
  • Storage: SQLite by default (DATABASE_URL), initialised at import time so it works under gunicorn
  • UI: Jinja templates in templates/, JS/CSS in static/
  • Deploy: Docker + docker-compose, gunicorn

Security Model

  • First-run setup page creates the admin; no default credentials
  • Every API query scoped to current_user.id
  • Admins manage users but cannot deactivate/demote/delete themselves
  • Recovery via flask reset-admin (shell access required)

Conventions

  • Dates in front-end JS are always formatted in local time — never toISOString()

Session Log

  • 2025-12-10 — Flask Multi-User Rewrite of Raccoon Timekeeper — Ported from Apps Script to Flask with auth/user isolation; fixed gunicorn DB init and UTC week-shift bugs

Created by: Jess Rogerson (yelling commands at Claude.AI)