# my2dos – Projektkontext für Pi ## Zweck my2dos ist eine kleine persönliche Produktivitäts- und Wissens-App für Aufgaben, Notizen, Links, Journal-Einträge, Tags, Teams, Collections und Kanban. ## Tech Stack - Python / Django - Django Templates - HTMX für partielle Updates - Alpine.js für UI-Interaktionen im Browser - SQLite lokal (`db.sqlite3`) - Virtuelle Umgebung: `.venv/` ## Wichtige Pfade - `core/models.py` – Datenmodelle, Tag-/Link-Metadaten-Sync - `core/views.py` – Hauptlogik, Item-Erstellung/Bearbeitung, Teams, Collections, API - `core/forms.py` – Django Forms - `core/templates/core/` – UI Templates - `core/tests.py` – Tests - `my2dos/settings.py` – Django Settings - `README.md` – Setup und Basis-Dokumentation ## Zentrale Konzepte - `Item.kind`: `todo`, `note`, `link`, `journal` - `Item.visibility`: `private`, `team`, `public` - Tags werden aus `#tag` im Content extrahiert und mit `Item.sync_metadata()` synchronisiert. - Team-Tags entsprechen `Team.slug`. - Ein Team-Tag wie `#myteam` macht ein Item automatisch zum Team-Item. - Team-Items behalten die Verknüpfung über `Item.team` und `Item.visibility = team`. - Interne Links haben die Form `[[note:1]]`, `[[todo:2]]` oder `[[3]]`. - Collections können manuell oder tag-basiert sein. - Tag-basierte Collections verwenden Content-Tags, Team-Tags sollen dabei nicht als Content-Filter genutzt werden. ## Häufige Befehle Setup: ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt .venv/bin/python manage.py migrate .venv/bin/python manage.py createsuperuser ``` Server starten: ```bash .venv/bin/python manage.py runserver ``` Tests ausführen: ```bash .venv/bin/python manage.py test core ``` Einzelne Testklasse ausführen: ```bash .venv/bin/python manage.py test core.tests.TestKlasse ``` ## Zugriff auf produktive Aufgaben - Produktive Aufgaben liegen unter `https://my2dos.rucki.ch` und können über die JSON-API abgerufen werden. - Lokale Zugangsdaten stehen in `.env` und dürfen nicht committed oder ausgegeben werden: - `MY2DOS_API_URL` - `MY2DOS_API_KEY` - API-Authentifizierung: Header `X-Api-Key: $MY2DOS_API_KEY` oder `Authorization: Bearer $MY2DOS_API_KEY`. - Offene Remote-Aufgaben anzeigen: ```bash ./scripts/my2dos_remote_tasks.py list ``` - Aufgabe als erledigt markieren: ```bash ./scripts/my2dos_remote_tasks.py done ``` - Direkt per curl abrufen: ```bash source .env curl -H "X-Api-Key: $MY2DOS_API_KEY" "$MY2DOS_API_URL/api/items/?limit=500" ``` ## Arbeitsregeln für Coding-Agenten - Vor Änderungen relevante Dateien lesen. - Änderungen möglichst klein und gezielt halten. - Bestehende UI-/Template-Struktur respektieren. - Nach funktionalen Änderungen Tests ergänzen oder anpassen. - Wenn möglich mindestens `.venv/bin/python manage.py test core` ausführen. - Keine grossen Refactorings ohne explizite Nachfrage. - Keine Änderungen an Datenbank/Migrationen ohne Notwendigkeit. - Bei Änderungen an Team-/Tag-Logik besonders auf Seiteneffekte bei Collections, API und Bearbeiten-Formularen achten. ## Bekannte/Für die Zukunft relevante Themen - Team-Tags und Content-Tags klar getrennt halten. - Bearbeiten von Team-Items darf die Team-Verknüpfung nicht verlieren. - Collections müssen Sichtbarkeit/Team-Kompatibilität von enthaltenen Items beachten. - Mobile UI nutzt eigene Tag-Picker und Quick-Composer-Interaktionen. ## Notizen für neue Sessions Wenn eine neue Pi-Session in diesem Verzeichnis gestartet wird, zuerst diese Datei, `README.md` und bei Bedarf `core/models.py`, `core/views.py`, `core/forms.py` sowie `core/tests.py` berücksichtigen.