# 📄 Lebenslauf-App Professioneller Lebenslauf-Builder mit Astro + SQLite. Keine externen Tools notwendig. ## Features - **4 Templates** – Navy Klassik, Modern Timeline, Minimal Elegant, Bold Creative - **OTP-Login** – E-Mail-basierter Einmal-Code, kein Passwort - **Editor** – Live-Vorschau, Auto-Save alle 2 Sekunden - **Skills** – Eingabe mit Niveauanzeige (1–5 Punkte) - **Farben & Schriften** – Vollständig anpassbar pro Lebenslauf - **PDF-Export** – Client-seitig via html2pdf.js (kein Browser-Backend nötig) - **Online-Teilen** – Öffentlicher Link via Hash-URL `/cv/[hash]` - **Formate**: PDF, HTML, JSON, CSV, Excel (XLSX) - **DE/EN** – Vollständige Übersetzung beider Sprachen --- ## Schnellstart ```bash # 1. Abhängigkeiten installieren npm install # 2. Umgebungsvariablen konfigurieren cp .env.example .env # → .env bearbeiten (SMTP-Daten eintragen) # 3. Starten npm run dev ``` App läuft auf: **http://localhost:4321** --- ## Umgebungsvariablen (`.env`) | Variable | Beschreibung | Standard | |----------|-------------|---------| | `DB_PATH` | Pfad zur SQLite-Datei | `./data/lebenslauf.db` | | `SESSION_SECRET` | Zufälliger langer String | – | | `SMTP_HOST` | SMTP-Server | `localhost` | | `SMTP_PORT` | SMTP-Port | `587` | | `SMTP_SECURE` | SSL/TLS | `false` | | `SMTP_USER` | SMTP-Benutzername | – | | `SMTP_PASS` | SMTP-Passwort | – | | `SMTP_FROM` | Absender-Adresse | `noreply@localhost` | | `APP_URL` | Öffentliche App-URL | `http://localhost:4321` | | `OTP_EXPIRES_MINUTES` | OTP-Gültigkeit | `10` | > **Dev-Modus**: Wenn kein SMTP konfiguriert ist, wird der OTP-Code in der Konsole ausgegeben. --- ## Produktion ```bash npm run build npm start ``` Die App läuft als eigenständiger Node.js-Server. --- ## Exports | Format | Methode | Inhalt | |--------|---------|--------| | **PDF** | html2pdf.js (CDN) | Druckfertiger DIN A4 Lebenslauf | | **HTML** | Client-seitig | Standalone-Datei mit eingebettetem CSS | | **JSON** | Client-seitig | Vollständige strukturierte Daten | | **CSV** | Client-seitig | Tabellarische Daten (UTF-8 BOM) | | **Excel** | SheetJS (CDN) | 5 Blätter: Persönlich, Erfahrung, Ausbildung, Kenntnisse, Sprachen | --- ## URLs | Route | Beschreibung | |-------|-------------| | `/` | Login-Seite | | `/verify` | OTP-Eingabe | | `/dashboard` | Übersicht der Lebensläufe | | `/editor/[id]` | Lebenslauf bearbeiten | | `/cv/[hash]` | Öffentliche Ansicht (wenn aktiviert) | --- ## Technologie - **Astro 4** mit SSR (Node-Adapter) - **SQLite** via `better-sqlite3` - **E-Mail** via `nodemailer` - **PDF** via `html2pdf.js` (CDN, kein Install) - **Excel** via `SheetJS` (CDN, kein Install) - **CSS** – reines CSS, kein Framework --- ## Eigene SMTP-Provider | Provider | Host | Port | Secure | |----------|------|------|--------| | Gmail | smtp.gmail.com | 587 | false | | Netcup (1blu) | smtp.example.com | 587 | false | | Outlook | smtp.office365.com | 587 | false | | Mailgun | smtp.mailgun.org | 587 | false | > Für Gmail: App-Passwort verwenden (nicht das Konto-Passwort).