1.2 KiB
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 instatic/ - 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)