Refactor UI/views, rework Docker build, untrack local data

- Views umstrukturiert: einstellungen.ejs -> bewerbung.ejs, neues
  partials/head.ejs, header/footer/index angepasst
- CSS umbenannt: style.css -> styles.css
- server.js und public/js/main.js ueberarbeitet
- Dockerfile auf schlankes Multi-Stage-Setup umgestellt;
  docker-compose.yml und .dockerignore entfernt
- npm-Scripts docker:build/push/deploy ergaenzt
- SQLite-DB und .idea aus Git entfernt und via .gitignore ignoriert

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-19 04:01:37 +02:00
parent 34cfcecc1e
commit c2a629e2c0
25 changed files with 3693 additions and 1886 deletions
+148 -64
View File
@@ -1,110 +1,194 @@
# Bewerbungs-Tracker
Lokale Web-Anwendung zur Verwaltung von Stellenbewerbungen optimiert für die monatliche Nachweispflicht beim Jobcenter (Grundsicherung / Bürgergeld).
Ein professioneller Job Application Tracker für Jobcenter Grundsicherung Monatsberichte.
## Funktionen
## Features
- **Bewerbungen verwalten** Anlegen, Bearbeiten, Löschen
- **Monatsansicht** Filter nach Monat und Jahr
- **Statistiken** Gesamt, Positiv, Absagen, Ausstehend
- **PDF-Export** Professionelles Dokument mit Ihren Daten für das Jobcenter
- **Dunkelmodus** Standard oder per Schalter umschaltbar
- **Datenschutz** Alle Daten bleiben lokal auf Ihrem Rechner (SQLite)
- **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
- **Responsive Design**: Optimiert für Desktop und Mobile Geräte
## 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 ≥ 18 (https://nodejs.org)
- npm (im Lieferumfang von Node.js)
- Build-Tools (für `better-sqlite3`):
- **Linux/Mac:** `build-essential` / Xcode Command Line Tools
- **Windows:** `windows-build-tools` oder Visual Studio Build Tools
- Node.js (Version 14 oder höher)
- npm oder yarn
### Schritte
1. **Projekt klonen**
```bash
# 1. In das Projektverzeichnis wechseln
cd bewerbungs-tracker
```
# 2. Abhängigkeiten installieren
2. **Abhängigkeiten installieren**
```bash
npm install
```
# 3. Server starten
3. **Datenbank-Verzeichnis erstellen**
```bash
mkdir -p data
```
Die SQLite-Datenbank wird automatisch beim ersten Start erstellt.
4. **Server starten**
```bash
npm start
```
Die Anwendung ist dann unter **http://localhost:3000** erreichbar.
### Entwicklungsmodus (Auto-Reload)
Für Entwicklung mit automatischem Neuladen:
```bash
npm run dev
```
5. **Anwendung öffnen**
Öffnen Sie Ihren Browser und navigieren Sie zu:
```
http://localhost:3000
```
## Projektstruktur
```
bewerbungs-tracker/
├── server.js # Express-Server mit allen Routen
├── package.json
├── server.js # Express Server mit API-Routen
├── package.json # Projektabhängigkeiten und Skripte
├── views/
│ ├── index.ejs # Übersichtsseite
│ ├── einstellungen.ejs # Einstellungsseite
│ ├── index.ejs # Hauptseite
│ └── partials/
│ ├── header.ejs # HTML-Head + Navigation
│ └── footer.ejs # Abschlusselemente + Scripts
│ ├── header.ejs # Kopfzeile mit Dark Mode Toggle
│ └── footer.ejs # Fußzeile
├── public/
│ ├── css/style.css # Tailwind-Utility-Klassen
│ └── js/main.js # Dark Mode, Modals, PDF-Generierung
└── data/
└── bewerbungen.db # SQLite-Datenbank (wird automatisch erstellt)
│ ├── css/
│ └── styles.css # Benutzerdefinierte Styles
│ └── js/
└── main.js # Client-seitige Logik
├── data/
│ └── bewerbungen.db # SQLite Datenbank (wird automatisch erstellt)
└── README.md # Dokumentation
```
## Datenbank-Schema
```sql
-- Bewerbungen
CREATE TABLE bewerbungen (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datum DATE NOT NULL,
firma TEXT NOT NULL,
stelle TEXT NOT NULL,
art TEXT,
status TEXT,
notizen TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
### Bewerbungen
-- Benutzerprofil (wird im PDF verwendet)
CREATE TABLE settings (
id INTEGER PRIMARY KEY CHECK (id = 1),
name TEXT,
adresse TEXT,
kundennummer TEXT
);
```
| 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
- E-Mail
- 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
### GET /api/bewerbungen/filter
Bewerbungen mit Filter abrufen
## PDF-Export
1. Öffnen Sie **Einstellungen** und tragen Sie Ihren Namen, Adresse und Kundennummer ein.
2. Filtern Sie auf der Übersicht den gewünschten Monat.
3. Klicken Sie auf **„PDF exportieren"**.
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
Das PDF enthält:
- Briefkopf mit Ihren persönlichen Daten
- Titel „Bewerbungsaktivitäten Monat Jahr"
- Zusammenfassungssatz
- Tabelle aller Bewerbungen des Monats
- Unterschriftszeile mit Datum
## Browser-Unterstützung
## Port ändern
- Chrome (empfohlen)
- Firefox
- Safari
- Edge
```bash
PORT=8080 npm start
```
## 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.