Files
my2dos/AGENTS.md
2026-09-04 11:44:49 +02:00

106 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <id>
```
- 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.