# WOMENinICT Sales – Kalender & Ressourcen

## 1. Projektbeschreibung

Eine Web-App für die Community **WOMENinICT Sales**. Sie zeigt einen gemeinsamen
**Veranstaltungskalender** und eine **Ressourcensammlung** (Bücher, Kurse, Tools usw.).
Alle können beides ohne Login ansehen. Nur freigeschaltete Mitglieder dürfen neue
Einträge anlegen. Dabei hilft eine KI: Sie liest einen Link und füllt das Formular vor.

**Zielgruppe:** Frauen im ICT-Vertrieb (Community-Mitglieder) und interessierte Gäste.
**Erfolg:** Ein Mitglied fügt einen Link ein und hat in unter einer Minute einen
geprüften Eintrag gespeichert.

## North Star Feature

**Priorität #1: Eintrag per Link anlegen.** Das Mitglied fügt einen Link zu einer
Event- oder Ressourcenseite ein, die KI füllt das Formular vor, das Mitglied prüft
und speichert. Wenn sich das unhandlich anfühlt oder ohne klare Fehlermeldung
scheitert, verliert die Plattform ihren Wert. Optimiere auf „Einfügen und Speichern“.

---

## 2. Funktionen & Features

Baue strikt in dieser Reihenfolge. Jede Stufe muss im Preview testbar sein,
bevor die nächste beginnt.

### Stufe 1: Oberfläche mit Beispieldaten (noch kein Backend)
- **Veranstaltungsliste**, nach Monaten gruppiert und einklappbar
- **Event-Details** im Dialog: Agenda, Kontakt, Ort oder Online, Anmeldelink
- **Ressourcenliste** mit Filter nach Kategorie: Buch, Kurs, Tool, Blog, Podcast,
  Video, Newsletter, Sonstiges. Der Filter steht in der URL und bleibt beim Neuladen erhalten.
- Seite **Impressum & Datenschutz** mit Platzhaltertext
- Je 5 realistische Beispiel-Events und Beispiel-Ressourcen

### Stufe 2: Datenbank anbinden (Lovable Cloud)
- Tabellen für Events, Ressourcen und Mitglieder
- Die Listen lesen aus der Datenbank statt aus den Beispieldaten.
- Gäste sehen nur öffentliche Felder (keine E-Mails, keine Mitglieder-IDs)
  und keine internen Events.

### Stufe 3: Login für Mitglieder
- **Login per Magic Link** (kein Passwort) über das Login von Lovable Cloud
- Nur aktive E-Mails aus der Mitgliederliste dürfen sich anmelden. Alle anderen
  bekommen eine neutrale Meldung, ohne zu verraten, ob die Adresse bekannt ist.
- **Interne Events** sind nur für Mitglieder sichtbar und als „intern“ markiert.
- Mitglieder können **eigene Beiträge** bearbeiten und löschen, nur die eigenen.

### Stufe 4: North Star – Eintrag per Link anlegen
- Dialog „Inhalt hinzufügen“: Typ wählen (Event oder Ressource), Link einfügen
- Eine Edge Function lädt die Seite, ruft die KI auf und gibt strukturierte Felder zurück.
- Das Formular ist vorausgefüllt. Das Mitglied prüft, korrigiert und speichert.
- Während der Extraktion ist ein Ladezustand sichtbar.
- Schlägt die Extraktion fehl, erscheint eine verständliche Meldung und das
  Formular lässt sich von Hand ausfüllen.

### Stufe 5: Bonus, nur wenn Zeit bleibt
- PDF (max. 10 MB, max. 10 Seiten) oder Bild als Quelle
- Kalender-Export: einzelnes Event als `.ics` und „Zu Google Kalender hinzufügen“
- Kalenderansicht als Alternative zur Liste
- **Zugang anfragen** (E-Mail, Name, optionale Notiz) und ein **Admin-Bereich**:
  Anfragen annehmen oder ablehnen, Mitglieder deaktivieren und reaktivieren,
  E-Mail an den Admin bei jeder neuen Anfrage

---

## 3. Verwendete APIs & Dienste

| Dienst | Zweck | Doku |
|---|---|---|
| **Lovable Cloud** | Datenbank, Login, Edge Functions, Secrets | https://docs.lovable.dev |
| **Mistral AI** (`mistral-small-latest`) | Extrahiert Event- und Ressourcendaten aus einer Webseite | https://docs.mistral.ai |
| **Resend** (erst Stufe 5) | E-Mail an den Admin bei Zugangsanfragen | https://resend.com/docs |

Verwende den Standard-Stack von Lovable. Statt Mistral kann auch die in Lovable
eingebaute KI genutzt werden, dann ist kein eigener API-Key nötig.

---

## 4. Inputs & Outputs

| Stufe | Wer | Input | Output |
|---|---|---|---|
| 1 | Gast | Kategorie-Filter wählen | Gefilterte Ressourcenliste |
| 1 | Gast | Klick auf ein Event | Dialog mit allen Details |
| 3 | Mitglied | E-Mail-Adresse beim Login | Magic Link per E-Mail (nur bei bekannten Adressen) |
| 4 | Mitglied | **Link** zu einer Event- oder Ressourcenseite | Vorausgefülltes Formular (Titel, Datum, Uhrzeit, Zeitzone, Ort, Beschreibung, Kategorie …) |
| 4 | Mitglied | Geprüftes Formular → „Speichern“ | Neuer Eintrag in der Liste |
| 5 | Gast | Zugangsanfrage (E-Mail, Name, Notiz) | Bestätigung und E-Mail an den Admin |

**Wichtig bei Events:** Datum, Uhrzeit und Zeitzone werden getrennt gespeichert.
Gibt die Quelle keine Uhrzeit an, bleibt das Feld leer. Die KI darf keine Zeiten erfinden.

---

## 5. Authentifizierung & Secrets

- Es gibt keine offene Registrierung. Nur E-Mails auf der **Mitgliederliste** erhalten einen Magic Link.
- Rollen: Gast, Mitglied, Admin. Die Rolle steht in einer eigenen Tabelle und kann
  von Nutzerinnen nicht selbst geändert werden.
- Berechtigungen werden in der Datenbank geprüft (Row Level Security), nicht nur in der Oberfläche.

| Secret | Wofür | Ab Stufe |
|---|---|---|
| `MISTRAL_API_KEY` | KI-Extraktion | 4 |
| `RESEND_API_KEY` | E-Mail an den Admin | 5 |

Secrets werden in Lovable hinterlegt und nur in Edge Functions verwendet, nie im Browser.

---

## 6. Technische Rahmenbedingungen

**Sprache**
- Die gesamte Oberfläche und alle Fehlermeldungen sind auf **Deutsch**.
- Die KI antwortet auf Deutsch. Die Kurzbeschreibung einer Ressource hat höchstens 300 Zeichen.

**Sicherheit**
- KI-Aufrufe laufen **nur in Edge Functions**. API-Keys gelangen nie in den Browser.
- Als Quelle sind nur öffentliche `http(s)`-Links erlaubt: keine IP-Adressen, kein
  `localhost`, keine internen Domains. Jede Weiterleitung wird erneut geprüft.
- Die Autor-ID eines Beitrags setzt der Server, nicht der Browser.
- Einfache Obergrenze: höchstens 20 KI-Extraktionen pro Mitglied und Stunde.
- Ab Stufe 5: Die PDF-Seitenzahl wird **vor** dem KI-Aufruf geprüft.

**Fehlerbehandlung & Bedienung**
- Einheitliches Feedback über Toasts und einen gemeinsamen Leer-Zustand für leere Listen.
- Validierungsregeln stehen an einer zentralen Stelle, nicht verteilt über einzelne Felder.
- Die Oberfläche funktioniert auf dem Telefon genauso gut wie am Rechner.

**Datenschutz**
- Die Datenschutzerklärung nennt alle Auftragsverarbeiter (Hosting, Mistral, ab Stufe 5 Resend).
- Eingefügte Quellen werden nur für die Extraktion verwendet und nicht dauerhaft gespeichert.
