The unlinked-e-mail cards clipped the body to a preview height. Add a toggle to show the complete body inline and collapse it back. Co-Authored-By: Claude <noreply@anthropic.com>
Bewerbungs-Tracker
Ein professioneller Job Application Tracker für Jobcenter Grundsicherung Monatsberichte.
Features
- Benutzerprofile: Speichern Sie Name, Adresse und Jobcenter Kundennummer
- Dunkler Modus: Vollständige Dark Mode Unterstützung mit lokaler Speicherung
- CRUD-Operationen: Komplette Verwaltung von Bewerbungen (Hinzufügen, Bearbeiten, Löschen)
- Filterfunktion: Filterung nach Monat und Jahr
- Statistiken: Übersicht über Gesamtbewerbungen, nach Art und Status
- PDF-Export: Professionelle PDF-Generierung für Jobcenter-Berichte
- KI-Bewerbungsassistent: Indeed-Stellen per Browser-Erweiterung importieren, Status „Entwurf", und automatisch zugeschnittene Bewerbungsunterlagen (Anschreiben & Lebenslauf als PDF) auf Basis eigener Vorlagen erstellen lassen
- Responsive Design: Optimiert für Desktop und Mobile Geräte
KI-Bewerbungsassistent (Indeed → Entwurf mit Unterlagen)
Ablauf:
- Vorlagen hinterlegen – Unter Vorlagen (Kopfzeile) das eigene Standard-Anschreiben und den Lebenslauf als Text einfügen. Diese Basis-Unterlagen sind die Faktengrundlage; die KI erfindet nichts hinzu.
- Stelle importieren – Mit der Browser-Erweiterung (
extension/) auf Indeed den Button „An Bewerbungs-Tracker senden" klicken. - Automatische Verarbeitung – Der Tracker legt die Bewerbung mit Status Entwurf an und generiert im Hintergrund über die Ollama Cloud API zugeschnittene Bewerbungsunterlagen, die als PDF-Anhänge an der Bewerbung hängen.
Konfiguration
Für die KI-Generierung wird ein Ollama-Cloud-API-Schlüssel benötigt
(ollama.com/settings/keys). Am einfachsten über
eine (nicht eingecheckte) .env-Datei – kopiere .env.example nach .env:
cp .env.example .env
# in .env eintragen:
# OLLAMA_API_KEY=...
# OLLAMA_MODEL=gpt-oss:120b # optional, Standard
# OLLAMA_HOST=https://ollama.com # optional; z. B. http://localhost:11434 für lokale Ollama
npm start
Alternativ als Umgebungsvariable: export OLLAMA_API_KEY=....
Ohne Schlüssel wird die Bewerbung trotzdem als Entwurf angelegt; die Generierung schlägt dann kontrolliert mit einem Hinweis fehl und kann später per „Neu generieren" wiederholt werden.
Details zur Erweiterung: siehe extension/README.md.
Technologien
- Backend: Node.js + Express.js
- Datenbank: SQLite
- Frontend: EJS Template Engine, Tailwind CSS (CDN)
- PDF-Generierung: jsPDF + jspdf-autotable (CDN)
Installation
Voraussetzungen
- Node.js (Version 14 oder höher)
- npm oder yarn
Schritte
- Projekt klonen
cd bewerbungs-tracker
- Abhängigkeiten installieren
npm install
- Datenbank-Verzeichnis erstellen
mkdir -p data
Die SQLite-Datenbank wird automatisch beim ersten Start erstellt.
- Server starten
npm start
Für Entwicklung mit automatischem Neuladen:
npm run dev
- Anwendung öffnen
Öffnen Sie Ihren Browser und navigieren Sie zu:
http://localhost:3000
Projektstruktur
bewerbungs-tracker/
├── server.js # Express Server mit API-Routen
├── package.json # Projektabhängigkeiten und Skripte
├── views/
│ ├── index.ejs # Hauptseite
│ └── partials/
│ ├── header.ejs # Kopfzeile mit Dark Mode Toggle
│ └── footer.ejs # Fußzeile
├── public/
│ ├── css/
│ │ └── styles.css # Benutzerdefinierte Styles
│ └── js/
│ └── main.js # Client-seitige Logik
├── data/
│ └── bewerbungen.db # SQLite Datenbank (wird automatisch erstellt)
└── README.md # Dokumentation
Datenbank-Schema
Bewerbungen
| Feld | Typ | Beschreibung |
|---|---|---|
| id | INTEGER PRIMARY KEY | Eindeutige ID |
| datum | DATE | Bewerbungsdatum |
| firma | TEXT | Firmenname |
| stelle | TEXT | Stellenbezeichnung |
| art | TEXT | Art der Bewerbung |
| status | TEXT | Status der Bewerbung |
| notizen | TEXT | Zusätzliche Notizen |
| created_at | DATETIME | Erstellungsdatum |
| updated_at | DATETIME | Letztes Update |
Einstellungen
| Feld | Typ | Beschreibung |
|---|---|---|
| id | INTEGER | Immer 1 (Single Row) |
| name | TEXT | Benutzername |
| adresse | TEXT | Benutzeradresse |
| kundennummer | TEXT | Jobcenter Kundennummer |
Verwendbare Optionen
Art der Bewerbung
- Online-Portal
- Indeed
- StepStone
- Firmenwebsite
- Post
- Initiativbewerbung
- Arbeitsagentur
- Sonstiges
Status
- Gesendet
- Eingangsbestätigung
- Vorstellungsgespräch
- Absage
- Einstellung
- Keine Rückmeldung
API-Endpunkte
GET /
Hauptseite mit allen Bewerbungen
GET /api/settings
Benutzereinstellungen abrufen
POST /api/settings
Benutzereinstellungen speichern
GET /api/bewerbungen
Alle Bewerbungen abrufen (mit Filter: ?month=MM&year=YYYY)
POST /api/bewerbungen
Neue Bewerbung erstellen
PUT /api/bewerbungen/:id
Bewerbung aktualisieren
DELETE /api/bewerbungen/:id
Bewerbung löschen
POST /api/indeed-import
Stelle importieren (von der Browser-Erweiterung genutzt): legt einen Entwurf an und startet die KI-Generierung der Unterlagen. CORS ist für diesen Endpunkt aktiviert.
GET /api/bewerbungen/:id/generierung
Generierungsstatus und aktuelle Anhänge einer Bewerbung abfragen (Polling).
GET /api/basis-dokumente
Hinterlegte Basis-Unterlagen (Vorlagen) abrufen
GET /anhaenge/:id/download
Generierten Anhang (PDF) herunterladen
GET /api/bewerbungen/filter
Bewerbungen mit Filter abrufen
PDF-Export
Der PDF-Export generiert ein professionelles Dokument mit:
- Benutzerdaten (Name, Adresse, Kundennummer)
- Überschrift mit Monat und Jahr
- Zusammenfassung der Bewerbungsaktivitäten
- Tabelle mit allen Bewerbungen
- Bestätigungstext und Datum
Browser-Unterstützung
- Chrome (empfohlen)
- Firefox
- Safari
- Edge
Dark Mode
Der Dark Mode kann manuell über den Toggle-Button in der Kopfzeile aktiviert werden. Die Einstellung wird in localStorage gespeichert und bleibt beim nächsten Besuch erhalten.
Sicherheit
- Eingabefelder werden gegen XSS geschützt
- SQL-Injection wird durch parametrisierte Abfragen verhindert
- Formulare validieren Pflichtfelder
Lizenz
MIT
Autor
Bewerbungs-Tracker für Jobcenter Grundsicherung
Hinweis: Diese Anwendung ist speziell für die Anforderungen des deutschen Jobcenters (Grundsicherung) entwickelt worden. Sie hilft bei der Dokumentation von Bewerbungsaktivitäten für die monatlichen Berichte.