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