feat(PROJ-13,PROJ-42): REST API v1 + Gespeicherte Suchanfragen
PROJ-13: Externe REST API für CRM/ERP-Anbindung
- API-Key Middleware mit SHA-256-Hash-Lookup + Token-Bucket Rate-Limiter
- GET /api/v1/mails — Suche mit Paginierung (max 100/Seite)
- GET /api/v1/mails/{id} — Mail-Metadaten als JSON
- GET /api/v1/mails/{id}/raw — Original-EML Download
- Admin-Endpoints: POST/GET/DELETE /api/admin/apikeys
- Tenant-Isolation, Audit-Log, 405 für non-GET Methoden
PROJ-42: Gespeicherte Suchanfragen
- Tabelle saved_searches (user_id, tenant_id, name, query_json)
- GET/POST/DELETE /api/searches/saved mit Ownership-Check
- Frontend: "Suche speichern"-Button + Popover mit gespeicherten Suchen
- shadcn/ui Komponenten, Loading/Empty States
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ Selbst gehostetes Mail-Archiv-System. Go-Backend + Next.js-Frontend + PostgreSQL
|
||||
- **Frontend:** Next.js 16 (App Router), TypeScript, Tailwind CSS, shadcn/ui
|
||||
- **Datenbank:** PostgreSQL (pgx/v5)
|
||||
- **Volltext-Index:** Manticore Search (MySQL-Protokoll, Port 9306)
|
||||
- **Deployment:** On-Premise (192.168.1.131), Systemd
|
||||
- **Deployment:** On-Premise, Systemd — Produktiv: 192.168.1.131 | Test: 192.168.1.132
|
||||
- **Auth:** JWT (httpOnly Cookie), bcrypt Cost 12
|
||||
|
||||
## Projektstruktur
|
||||
@@ -49,7 +49,7 @@ bash update.sh # oder: curl ... | bash
|
||||
## Konventionen
|
||||
|
||||
- **Commits:** `feat(PROJ-X): ...`, `fix(PROJ-X): ...`, `chore: ...`
|
||||
- **Feature-IDs:** PROJ-1, PROJ-2, … (nächste freie: PROJ-20)
|
||||
- **Feature-IDs:** PROJ-1, PROJ-2, … (nächste freie: PROJ-44)
|
||||
- **shadcn/ui:** Keine Custom-Versionen installierter Komponenten
|
||||
- **Kein Supabase, kein Vercel** – reines On-Premise-Deployment
|
||||
|
||||
|
||||
Reference in New Issue
Block a user