docs: add .claude-context project overview
This commit is contained in:
1 parent
8206e975d0
commit
62589f3cc6
1 file changed
+26
@@ -0,0 +1,26 @@
|
|||||||
|
# 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)*
|
||||||
Reference in new issue
Block a user