Bauteil-Inventar
Selbst gehostetes Web-Inventar für Elektronik-Kleinteile. Erfassung per Foto mit KI-Erkennung (Anthropic claude-sonnet-5) oder manuell, Ablage-Verwaltung über die Stanley Pro Organizer und deren Fächer. Gebaut mit Claude, läuft als einzelner Docker-Container (FastAPI + SQLite + HTMX) auf einer Synology-NAS, rein lokal ohne Internet-Exposition. Der MCP-Server ist verbunden und getestet – Bauteilabfragen laufen direkt im Claude-Chat. Läuft rein intern, keine Internet-Exposition. Stand: v0.4.2.
Zugriff & Betrieb
- Zugriff: intern über Reverse Proxy, nur LAN/VPN — bewusst nicht aus dem Internet erreichbar.
- Login: kein eigenes App-Login — die Authentifizierung übernimmt Synology SSO / der Reverse Proxy und reicht den angemeldeten Nutzer als vertrauenswürdigen Header (
X-Remote-User) an den Container weiter. - Deployment: Git-Push → Webhook → Image-Build (der Code wird ins Image gebacken, reproduzierbar) → Registry → automatisches Deployment des neuen Images. Seit Juli 2026 über Komodo (vorher Drone). Healthcheck kommt aus dem Dockerfile (
/health).
Was die App kann
- Bauteile per Text erfassen oder per Foto hochladen — die KI schlägt Name, Kategorie, Wert, Bauform, MPN usw. vor, man prüft und speichert
- Werte je Einheit: Zahl eingeben, Einheit wählen (Ω/F/H/V/A/Hz), „Übernehmen” → eigenes Feld dafür. Mehrere Einheiten pro Bauteil (z.B. MOSFET: V + A). Eingabe flexibel (
39k,4k7,100n), normalisiert gespeichert → Suche nach39kohm/3v/47Afindet das Teil unabhängig von der Schreibweise - Farbring-Wähler für Widerstände (4/5 Ringe → Wert & Toleranz; beim Bearbeiten Rückrechnung aus dem gespeicherten Wert)
- Infotexte/Tooltips an jedem Feld (was gehört in MPN, Bauform …)
- Organizer → Fächer (mit Beschreibung in der Ablage-Auswahl); Belegungszähler
- Volltext- + Wert- + Kategorie-Suche
- Leere Positionen (Menge 0) auf einen Blick: Kennzahl + Filter + Badge; Default-Menge für neue Teile = 1
- Mehrere Bilder pro Bauteil (Galerie mit Upload/Entfernen); beim Upload werden alle Metadaten entfernt (EXIF/GPS/Kamera/Zeit/ICC) und das Bild verkleinert; Klick auf ein Bild öffnet es groß (Lightbox)
- REST-API + MCP-Server: im Claude-Chat fragen „ich will X bauen — habe ich die Teile?” (Tools
search_parts,check_build,list_categories)
Erfassungs-Workflow
- Neues Teil → Foto-Erkennung (Kamera/Upload) oder Manuell
- KI-Vorschlag prüfen, Kategorie bestätigen (bei „Widerstand” erscheint der Farbring-Wähler)
- Wert + Einheit setzen, Menge eintragen
- Passendes Fach wählen (vorher unter Organizer anlegen) und Teil physisch einlegen
- Später über Name/MPN/Wert suchen → Tool zeigt „Organizer · Fach”
Befüllungs-Strategie der Organizer: docs/organizer-strategie.md im Repo (ein Organizer pro Bauteil-Familie, Fachgröße nach Bauteilgröße, Fach-Labels A1/B3… physisch bekleben = Ablageort im Tool).
MCP-Server (Mac)
Kleiner lokaler stdio-MCP-Server unter mcp-server/, läuft auf dem Mac und spricht die interne REST-API der App an. Konfiguration (interne Adresse + optionaler API-Token) in claude_desktop_config.json. Details: mcp-server/README.md.
Technik
| Backend | FastAPI (Python), SQLModel/SQLite (inventar.db) |
| Frontend | Jinja2 + HTMX, Vanilla JS (Farbring-Wähler) |
| KI | Vision-API umschaltbar (OpenAI/Anthropic), aktuell Anthropic claude-sonnet-5; Key als Komodo-Secret im Deployment-Env (INV_AI_API_KEY) |
| Auth | Trusted-Header (X-Remote-User) via DSM Reverse Proxy / Synology SSO; kein App-Login |
| API | /api/{categories,components,check_build}, optional per INV_API_TOKEN (Header X-API-Token) |
| CI/CD | Komodo Build aus Forgejo (Weg B), Webhook → Procedure (Build → Deploy). Vorher Drone. |
| Backup | Datenverzeichnis (SQLite + Uploads) als Bind-Mount, in Hyper Backup gesichert |
Wert-Parser (app/values.py) versteht SI-Präfixe, EU-Notation (4k7, 1R0, 2u2) und Widerstands-Farbcode. DB-Schema-Updates laufen über eine Mini-Migration (ALTER TABLE ADD COLUMN) beim Start.
Backlog
- Typspezifische Zusatzfelder je Kategorie (Leistung, Dielektrikum …) – bei Bedarf
- Optional lokales Vision-Modell (Ollama/LLaVA) als Provider
Erledigt: MCP eingerichtet & getestet, API-Token gesetzt, Reverse-Proxy-Domain in Nutzung, KI-Erkennung geschärft, Farbring-Rückrechnung, Werte je Einheit, leere Positionen sichtbar, mehrere Bilder pro Bauteil, Nutzer-Chip im LAN ausgeblendet, Altbestand korrigiert. Bewusst nicht umgesetzt (nicht benötigt): CSV/JSON-Export & -Import, Mengen-Warnschwelle.