Files
Lebenslauf-App/README.md
2026-04-24 18:43:42 +02:00

112 lines
3.0 KiB
Markdown
Raw 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.
# 📄 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 (15 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).