Compare commits
212 Commits
nuscore
...
ee2b12f6d0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ee2b12f6d0 | ||
|
|
436973e47e | ||
|
|
05ab872f77 | ||
|
|
e4e7f521e2 | ||
|
|
dd93755e6b | ||
|
|
27665a45df | ||
|
|
637bacf70f | ||
|
|
d5fe531664 | ||
|
|
3df8f6fd81 | ||
|
|
e26bc22e19 | ||
|
|
985c9074bd | ||
|
|
d33e9a94cf | ||
|
|
6ab6319256 | ||
|
|
e1e8b5f4a4 | ||
|
|
cf8cf17dc7 | ||
|
|
12bba26ff1 | ||
|
|
4e81a1c4a7 | ||
|
|
b2017b7365 | ||
|
|
b3bbca3887 | ||
|
|
0ee9e486b5 | ||
|
|
00e058a665 | ||
|
|
e5a0dfdddc | ||
|
|
83f4e1c45e | ||
|
|
f0477b1023 | ||
|
|
07370bfcef | ||
|
|
f031485bd4 | ||
|
|
e22e3257ef | ||
|
|
76f1b1a12f | ||
|
|
6007e70b9d | ||
|
|
d7935cc1e2 | ||
|
|
b470e728ed | ||
|
|
d09de49018 | ||
|
|
8892392bf2 | ||
|
|
26acb588e1 | ||
|
|
566361e46a | ||
|
|
1191636d92 | ||
|
|
526eca8b97 | ||
|
|
af6048b289 | ||
|
|
5605cd6189 | ||
|
|
84bbcb0f87 | ||
|
|
f9a63a13ce | ||
|
|
2a7694617b | ||
|
|
6ff672c5f1 | ||
|
|
a2e9e5e510 | ||
|
|
5b0a3baa21 | ||
|
|
9cb9ff511c | ||
|
|
e079fe4827 | ||
|
|
2c8cad52a7 | ||
|
|
12184c2f72 | ||
|
|
1f94c273ae | ||
|
|
e333a54025 | ||
|
|
a86c05eb66 | ||
|
|
c2dbf0a12d | ||
|
|
a8470145a0 | ||
|
|
2871b79b04 | ||
|
|
503ff90dfa | ||
|
|
673a3afbb5 | ||
|
|
10e6d74d93 | ||
|
|
3fc1760b2c | ||
|
|
d12b9daf87 | ||
|
|
75cc2df06b | ||
|
|
7454a274a1 | ||
|
|
380709c29c | ||
|
|
c6f8b4dd74 | ||
|
|
02c947b0e3 | ||
|
|
c3366313d6 | ||
|
|
b1e184c4c2 | ||
|
|
3e05bdab51 | ||
|
|
fde6ba55d2 | ||
|
|
19410a0ee2 | ||
|
|
28db204aba | ||
|
|
47a815dd71 | ||
|
|
14dc654145 | ||
|
|
025ad68cf3 | ||
|
|
89f30f76f5 | ||
|
|
85c26bc80d | ||
|
|
6cdcbfe0db | ||
|
|
7e1b09fa97 | ||
|
|
18a191f686 | ||
|
|
e21b50fc38 | ||
|
|
23caeddf9e | ||
|
|
663125670e | ||
|
|
515e04d1e3 | ||
|
|
bf082ea995 | ||
|
|
67fc5d45e1 | ||
|
|
30e3f4f321 | ||
|
|
c4e237cfca | ||
|
|
fea84e210a | ||
|
|
e94a12cd20 | ||
| 438029a3a4 | |||
| c58491c97a | |||
| 1d9b9dbc45 | |||
| dc791dc33d | |||
| 57fbbff353 | |||
| b00a35af30 | |||
|
|
dd0f29124c | ||
|
|
dc084806ab | ||
|
|
4b4c48a50f | ||
|
|
65acc9e0d5 | ||
|
|
13cd55c051 | ||
|
|
9bf37399d5 | ||
|
|
047b1801b3 | ||
|
|
945ec0d48c | ||
|
|
e83bc250a8 | ||
|
|
0c28b12978 | ||
|
|
5aa11151cf | ||
|
|
a651113dee | ||
|
|
bf0d5b0935 | ||
|
|
6acdcfa5c3 | ||
|
|
dc2c60cefe | ||
|
|
bdbbb88be9 | ||
|
|
e6146b8f5a | ||
|
|
f7a799ea7f | ||
|
|
b74cb30cf6 | ||
|
|
0d2dfd9a07 | ||
|
|
61e5efadb8 | ||
|
|
88d050392f | ||
|
|
08b0be78ad | ||
|
|
b0e610f3ab | ||
|
|
0285c05fa6 | ||
|
|
5d4f2ebd4b | ||
|
|
bfa908ac9a | ||
|
|
9592459348 | ||
|
|
47f53ee3fd | ||
|
|
c22f4016cc | ||
|
|
2458ba2d37 | ||
|
|
6eb42812fd | ||
|
|
938ce4d991 | ||
|
|
cb6e84945b | ||
|
|
8c6be234c6 | ||
|
|
fe160420c1 | ||
|
|
167e3ba3ec | ||
|
|
9455b5d65a | ||
|
|
e6627a897e | ||
|
|
71fc85427b | ||
|
|
76597a4360 | ||
|
|
4f9761efb0 | ||
|
|
51e47cf9f9 | ||
|
|
0525f7908d | ||
|
|
a4d89374b7 | ||
|
|
de907df092 | ||
|
|
b906ac64b3 | ||
|
|
b7bbb92f86 | ||
|
|
6896484e9e | ||
|
|
9cc9db3a5a | ||
|
|
1c99fb30a1 | ||
|
|
2782661206 | ||
|
|
d10b663dc1 | ||
|
|
9baa6bae01 | ||
|
|
945fd85e39 | ||
|
|
5b04ed7904 | ||
|
|
de36a8ce2b | ||
|
|
903b036a63 | ||
|
|
5f3b6200ec | ||
|
|
eff211856f | ||
|
|
a81c3453b5 | ||
|
|
56c708d3a0 | ||
|
|
062bddcf52 | ||
|
|
4f98c782f3 | ||
|
|
3ea2907d08 | ||
|
|
ba5d6b14a8 | ||
|
|
004a94404a | ||
|
|
5ddf998672 | ||
|
|
baf5bda6f2 | ||
|
|
572de5f7d4 | ||
|
|
37893474b1 | ||
|
|
f437747664 | ||
|
|
22e9750e5d | ||
|
|
bd95f77131 | ||
|
|
bbdc923950 | ||
|
|
3e5ddd8a05 | ||
|
|
f4e5cf2edb | ||
|
|
44dba70aac | ||
|
|
7698d87ba0 | ||
|
|
201d5e9214 | ||
|
|
c21544d9b6 | ||
|
|
6167116630 | ||
|
|
1bb5f61b57 | ||
|
|
1535c8795b | ||
|
|
cb2d7d3936 | ||
|
|
5b4a5ba501 | ||
|
|
90b5f8d63d | ||
|
|
1ff3d9d1a6 | ||
|
|
df6fb23132 | ||
|
|
1e86b821e8 | ||
|
|
5923ef8bba | ||
|
|
cd8f40aa9d | ||
|
|
d392ccddd5 | ||
|
|
4a83e5c159 | ||
|
|
911c07e522 | ||
|
|
cd89c68a69 | ||
|
|
f1321b18bb | ||
|
|
54ce09e9a9 | ||
|
|
7a9e856961 | ||
|
|
fd4b47327f | ||
|
|
3a26f10110 | ||
|
|
ce2bda37ac | ||
|
|
5dda346fd7 | ||
|
|
28c92b66af | ||
|
|
d08835e206 | ||
|
|
3334d76688 | ||
|
|
d48cc4385f | ||
|
|
9b8dcd8561 | ||
|
|
2b06a8dd10 | ||
|
|
58e773e51e | ||
|
|
8d17cad299 | ||
|
|
156f4d6921 | ||
|
|
e27a4d960d | ||
|
|
c589c11607 | ||
|
|
0caa31e3eb | ||
|
|
fff5d404f5 | ||
|
|
7aff827711 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,4 +7,5 @@ backend/.env
|
||||
|
||||
backend/images/*
|
||||
backend/backend-debug.log
|
||||
backend/*.log
|
||||
backend/*.log
|
||||
backend/.env.local
|
||||
|
||||
86
CHECK_SERVER.md
Normal file
86
CHECK_SERVER.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Server-Prüfung: i18n-Fixes
|
||||
|
||||
## Lokale Prüfung (bereits durchgeführt)
|
||||
|
||||
✅ Alle Dateien sind lokal korrekt:
|
||||
- `TeamManagementView.vue` - Alle `$t()` durch `t()` ersetzt, `t` im return Statement
|
||||
- `PermissionsView.vue` - Alle `$t()` durch `t()` ersetzt, `t` im return Statement
|
||||
- `LogsView.vue` - Alle `$t()` durch `t()` ersetzt, `t` im return Statement
|
||||
- `SeasonSelector.vue` - Bereits korrekt
|
||||
|
||||
## Server-Prüfung
|
||||
|
||||
### 1. Prüfskript auf den Server kopieren
|
||||
|
||||
```bash
|
||||
# Vom lokalen Rechner aus:
|
||||
scp check-i18n-fixes.sh rv2756:/var/www/tt-tagebuch.de/
|
||||
```
|
||||
|
||||
### 2. Auf dem Server ausführen
|
||||
|
||||
```bash
|
||||
# Auf dem Server:
|
||||
cd /var/www/tt-tagebuch.de
|
||||
chmod +x check-i18n-fixes.sh
|
||||
./check-i18n-fixes.sh
|
||||
```
|
||||
|
||||
### 3. Falls Dateien nicht aktualisiert sind
|
||||
|
||||
```bash
|
||||
# Auf dem Server:
|
||||
cd /var/www/tt-tagebuch.de
|
||||
git pull origin main
|
||||
cd backend
|
||||
npm install # Erstellt automatisch den Frontend-Build (via postinstall script)
|
||||
```
|
||||
|
||||
### 4. Backend neu starten (falls nötig)
|
||||
|
||||
```bash
|
||||
# Falls als systemd-Service:
|
||||
sudo systemctl restart tt-tagebuch
|
||||
|
||||
# Oder falls als PM2-Prozess:
|
||||
pm2 restart tt-tagebuch-backend
|
||||
```
|
||||
|
||||
## Erwartete Ergebnisse
|
||||
|
||||
Das Prüfskript sollte folgende Ausgabe zeigen:
|
||||
|
||||
```
|
||||
1. TeamManagementView.vue:
|
||||
✓ Enthält 'const t = (key, params) => i18n.global.t'
|
||||
✓ Enthält keine $t() Aufrufe mehr
|
||||
✓ 't' ist im return Statement enthalten
|
||||
|
||||
2. PermissionsView.vue:
|
||||
✓ Enthält 'const t = (key, params) => i18n.global.t'
|
||||
✓ Enthält keine $t() Aufrufe mehr
|
||||
✓ 't' ist im return Statement enthalten
|
||||
|
||||
3. LogsView.vue:
|
||||
✓ Enthält 'const t = (key, params) => i18n.global.t'
|
||||
✓ Enthält keine $t() Aufrufe mehr
|
||||
✓ 't' ist im return Statement enthalten
|
||||
|
||||
4. SeasonSelector.vue:
|
||||
✓ Enthält 'const t = (key, params) => i18n.global.t'
|
||||
✓ Enthält keine $t() Aufrufe mehr
|
||||
```
|
||||
|
||||
## Commits, die auf den Server müssen
|
||||
|
||||
Die folgenden Commits müssen auf dem Server sein:
|
||||
|
||||
- `b0e610f` - Fix: Replace all $t() calls with t() in PermissionsView and LogsView templates
|
||||
- `0285c05` - Fix: Replace all $t() calls with t() in TeamManagementView template
|
||||
- `5d4f2eb` - Update localization handling in TeamManagementView
|
||||
|
||||
Prüfe mit:
|
||||
```bash
|
||||
git log --oneline -5
|
||||
```
|
||||
|
||||
191
DEPLOYMENT_SOCKET_IO.md
Normal file
191
DEPLOYMENT_SOCKET_IO.md
Normal file
@@ -0,0 +1,191 @@
|
||||
# Deployment-Anleitung: Socket.IO mit SSL
|
||||
|
||||
Socket.IO läuft jetzt direkt auf HTTPS-Port 3051 (nicht über Apache-Proxy).
|
||||
|
||||
## Schritte nach dem Deployment
|
||||
|
||||
### 1. Firewall-Port öffnen
|
||||
|
||||
```bash
|
||||
# UFW (Ubuntu Firewall)
|
||||
sudo ufw allow 3051/tcp
|
||||
```
|
||||
|
||||
### 2. Apache-Konfiguration aktualisieren
|
||||
|
||||
```bash
|
||||
sudo cp /var/www/tt-tagebuch.de/apache.conf.example /etc/apache2/sites-available/tt-tagebuch.de-le-ssl.conf
|
||||
sudo systemctl restart apache2
|
||||
```
|
||||
|
||||
### 3. systemd-Service konfigurieren (als www-data)
|
||||
|
||||
**WICHTIG:** Der Service sollte als `www-data` laufen, nicht als `nobody`!
|
||||
|
||||
```bash
|
||||
# Service-Datei installieren
|
||||
sudo cp /var/www/tt-tagebuch.de/tt-tagebuch.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
```
|
||||
|
||||
Die Service-Datei konfiguriert:
|
||||
- User: `www-data` (Standard-Webserver-Benutzer)
|
||||
- Group: `www-data`
|
||||
- Port: 3050 (HTTP) und 3051 (HTTPS)
|
||||
|
||||
### 4. SSL-Zertifikat-Berechtigungen setzen
|
||||
|
||||
**WICHTIG:** Der Node.js-Prozess muss Zugriff auf die SSL-Zertifikate haben!
|
||||
|
||||
```bash
|
||||
cd /var/www/tt-tagebuch.de/backend
|
||||
chmod +x scripts/fixCertPermissions.sh
|
||||
sudo ./scripts/fixCertPermissions.sh
|
||||
```
|
||||
|
||||
Dieses Skript:
|
||||
- Erstellt die Gruppe `ssl-cert` (falls nicht vorhanden)
|
||||
- Fügt den Service-Benutzer (`www-data`) zur Gruppe hinzu
|
||||
- Setzt die Berechtigungen für die Zertifikate
|
||||
|
||||
### 5. Backend neu starten
|
||||
|
||||
**WICHTIG:** Der Backend-Server muss neu gestartet werden, damit der HTTPS-Server auf Port 3051 läuft!
|
||||
|
||||
```bash
|
||||
# Falls als systemd-Service:
|
||||
sudo systemctl restart tt-tagebuch
|
||||
|
||||
# Oder falls als PM2-Prozess:
|
||||
pm2 restart tt-tagebuch-backend
|
||||
```
|
||||
|
||||
### 6. Prüfen, ob HTTPS-Server läuft
|
||||
|
||||
```bash
|
||||
# Prüfe, ob Port 3051 geöffnet ist
|
||||
sudo netstat -tlnp | grep 3051
|
||||
# Oder:
|
||||
sudo ss -tlnp | grep 3051
|
||||
|
||||
# Prüfe Backend-Logs
|
||||
sudo journalctl -u tt-tagebuch -f
|
||||
# Oder bei PM2:
|
||||
pm2 logs tt-tagebuch-backend
|
||||
```
|
||||
|
||||
Du solltest folgende Meldung sehen:
|
||||
```
|
||||
🚀 HTTPS-Server für Socket.IO läuft auf Port 3051
|
||||
```
|
||||
|
||||
### 7. Diagnose-Skript ausführen
|
||||
|
||||
```bash
|
||||
cd /var/www/tt-tagebuch.de/backend
|
||||
node scripts/checkSocketIOServer.js
|
||||
```
|
||||
|
||||
Dieses Skript prüft:
|
||||
- Ob SSL-Zertifikate existieren
|
||||
- Ob Port 3051 geöffnet ist
|
||||
- Ob der Server erreichbar ist
|
||||
|
||||
### 8. Testen
|
||||
|
||||
Im Browser sollte Socket.IO jetzt direkt zu `wss://tt-tagebuch.de:3051` verbinden.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Port 3051 ist nicht erreichbar
|
||||
|
||||
1. **Prüfe Firewall:**
|
||||
```bash
|
||||
sudo ufw status
|
||||
sudo ufw allow 3051/tcp
|
||||
```
|
||||
|
||||
2. **Prüfe, ob der Server läuft:**
|
||||
```bash
|
||||
sudo netstat -tlnp | grep 3051
|
||||
sudo ss -tlnp | grep 3051
|
||||
```
|
||||
|
||||
3. **Prüfe Backend-Logs auf Fehler:**
|
||||
```bash
|
||||
sudo journalctl -u tt-tagebuch -n 50
|
||||
# Oder:
|
||||
pm2 logs tt-tagebuch-backend --lines 50
|
||||
```
|
||||
|
||||
4. **Prüfe, ob HTTPS-Server gestartet wurde:**
|
||||
- Suche in den Logs nach: `🚀 HTTPS-Server für Socket.IO läuft auf Port 3051`
|
||||
- Falls nicht vorhanden, prüfe auf Fehler: `⚠️ HTTPS-Server konnte nicht gestartet werden`
|
||||
|
||||
### SSL-Zertifikat-Fehler / Berechtigungsfehler
|
||||
|
||||
**Fehler:** `EACCES: permission denied, open '/etc/letsencrypt/live/tt-tagebuch.de/privkey.pem'`
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
cd /var/www/tt-tagebuch.de/backend
|
||||
chmod +x scripts/fixCertPermissions.sh
|
||||
sudo ./scripts/fixCertPermissions.sh
|
||||
sudo systemctl restart tt-tagebuch
|
||||
```
|
||||
|
||||
Stelle sicher, dass die Zertifikate existieren:
|
||||
```bash
|
||||
ls -la /etc/letsencrypt/live/tt-tagebuch.de/
|
||||
```
|
||||
|
||||
Falls die Zertifikate nicht existieren:
|
||||
```bash
|
||||
sudo certbot certonly --standalone -d tt-tagebuch.de
|
||||
```
|
||||
|
||||
### Service läuft als "nobody"
|
||||
|
||||
**Problem:** Der Service läuft als `nobody`, was zu eingeschränkt ist.
|
||||
|
||||
**Lösung:**
|
||||
1. Installiere die Service-Datei (siehe Schritt 3)
|
||||
2. Führe das Berechtigungs-Skript aus (siehe Schritt 4)
|
||||
3. Starte den Service neu
|
||||
|
||||
```bash
|
||||
# Prüfe aktuellen Service-User
|
||||
sudo systemctl show -p User tt-tagebuch.service
|
||||
|
||||
# Installiere Service-Datei
|
||||
sudo cp /var/www/tt-tagebuch.de/tt-tagebuch.service /etc/systemd/system/
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart tt-tagebuch
|
||||
|
||||
# Prüfe, ob jetzt als www-data läuft
|
||||
sudo systemctl show -p User tt-tagebuch.service
|
||||
```
|
||||
|
||||
### Frontend verbindet nicht
|
||||
|
||||
1. **Prüfe Browser-Konsole auf Fehler**
|
||||
2. **Prüfe, ob `import.meta.env.PROD` korrekt gesetzt ist:**
|
||||
- In Produktion sollte die Socket.IO-URL `https://tt-tagebuch.de:3051` sein
|
||||
- In Entwicklung sollte sie `http://localhost:3005` sein
|
||||
|
||||
3. **Prüfe, ob die Socket.IO-URL korrekt ist:**
|
||||
- Öffne Browser-Entwicklertools → Network
|
||||
- Suche nach WebSocket-Verbindungen
|
||||
- Die URL sollte `wss://tt-tagebuch.de:3051/socket.io/...` sein
|
||||
|
||||
### Server lauscht nur auf localhost
|
||||
|
||||
Der Server sollte auf `0.0.0.0` lauschen (nicht nur auf `localhost`).
|
||||
Dies ist bereits in der Konfiguration eingestellt:
|
||||
```javascript
|
||||
httpsServer.listen(httpsPort, '0.0.0.0', () => {
|
||||
console.log(`🚀 HTTPS-Server für Socket.IO läuft auf Port ${httpsPort}`);
|
||||
});
|
||||
```
|
||||
|
||||
Falls der Server trotzdem nicht erreichbar ist, prüfe die Backend-Logs.
|
||||
342
DSGVO_CHECKLIST.md
Normal file
342
DSGVO_CHECKLIST.md
Normal file
@@ -0,0 +1,342 @@
|
||||
# DSGVO-Konformitäts-Checkliste für Trainingstagebuch
|
||||
|
||||
## Status: ⚠️ PRÜFUNG ERFORDERLICH
|
||||
|
||||
Diese Checkliste dokumentiert den aktuellen Stand der DSGVO-Konformität der Anwendung.
|
||||
|
||||
---
|
||||
|
||||
## 1. Datenschutzerklärung ✅ / ⚠️
|
||||
|
||||
### Status: ⚠️ Teilweise vorhanden, muss aktualisiert werden
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Datenschutzerklärung vorhanden (`/datenschutz`)
|
||||
- ✅ Impressum vorhanden (`/impressum`)
|
||||
- ✅ Verlinkung im Footer
|
||||
|
||||
**Fehlend/Verbesserungsbedarf:**
|
||||
- ⚠️ MyTischtennis-Integration nicht erwähnt (Drittlandübermittlung?)
|
||||
- ⚠️ Logging von API-Requests nicht erwähnt
|
||||
- ⚠️ Verschlüsselung von Mitgliederdaten nicht erwähnt
|
||||
- ⚠️ Speicherdauer für Logs nicht konkretisiert
|
||||
- ⚠️ Keine Informationen zu automatischer Löschung
|
||||
|
||||
---
|
||||
|
||||
## 2. Einwilligungen ⚠️
|
||||
|
||||
### Status: ⚠️ Teilweise vorhanden
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ `picsInInternetAllowed` bei Mitgliedern (Einwilligung für Fotos im Internet)
|
||||
- ✅ MyTischtennis: `savePassword` und `autoUpdateRatings` (Einwilligungen)
|
||||
|
||||
**Fehlend/Verbesserungsbedarf:**
|
||||
- ⚠️ Keine explizite Einwilligung bei Registrierung zur Datenschutzerklärung
|
||||
- ⚠️ Keine Einwilligung für Logging von API-Requests
|
||||
- ⚠️ Keine Einwilligung für Datenübertragung an MyTischtennis.de
|
||||
- ⚠️ Keine Möglichkeit, Einwilligungen zu widerrufen (außer manuell)
|
||||
|
||||
---
|
||||
|
||||
## 3. Löschrechte (Art. 17 DSGVO) ⚠️
|
||||
|
||||
### Status: ⚠️ Teilweise implementiert
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ DELETE-Endpunkte für viele Ressourcen (Member, Tournament, etc.)
|
||||
- ✅ MyTischtennis-Account kann gelöscht werden
|
||||
|
||||
**Fehlend/Verbesserungsbedarf:**
|
||||
- ❌ **KRITISCH:** Kein Endpunkt zum vollständigen Löschen eines User-Accounts
|
||||
- ❌ **KRITISCH:** Keine automatische Löschung aller zugehörigen Daten (Cascade-Delete)
|
||||
- ❌ Keine Löschung von Logs nach Ablauf der Speicherdauer
|
||||
- ⚠️ Keine Anonymisierung statt Löschung (falls gesetzliche Aufbewahrungspflichten bestehen)
|
||||
- ⚠️ Keine Bestätigung vor Löschung kritischer Daten
|
||||
|
||||
**Empfehlung:**
|
||||
- Implementiere `/api/user/delete` Endpunkt
|
||||
- Implementiere automatische Löschung aller zugehörigen Daten:
|
||||
- UserClub-Einträge
|
||||
- MyTischtennis-Account
|
||||
- Alle Logs (nach Anonymisierung)
|
||||
- Alle Mitglieder, die nur diesem User zugeordnet sind
|
||||
- Implementiere automatische Löschung von Logs nach 90 Tagen
|
||||
|
||||
---
|
||||
|
||||
## 4. Auskunftsrechte (Art. 15 DSGVO) ❌
|
||||
|
||||
### Status: ❌ Nicht implementiert
|
||||
|
||||
**Fehlend:**
|
||||
- ❌ **KRITISCH:** Kein Endpunkt zur Auskunft über gespeicherte Daten
|
||||
- ❌ Keine Übersicht über alle personenbezogenen Daten eines Users
|
||||
- ❌ Keine Übersicht über alle Mitgliederdaten
|
||||
- ❌ Keine Übersicht über Logs, die einen User betreffen
|
||||
|
||||
**Empfehlung:**
|
||||
- Implementiere `/api/user/data-export` Endpunkt
|
||||
- Exportiere alle Daten in strukturiertem Format (JSON)
|
||||
- Inkludiere:
|
||||
- User-Daten
|
||||
- Vereinszugehörigkeiten
|
||||
- Mitgliederdaten (falls User Zugriff hat)
|
||||
- Logs
|
||||
- MyTischtennis-Daten
|
||||
|
||||
---
|
||||
|
||||
## 5. Datenportabilität (Art. 20 DSGVO) ❌
|
||||
|
||||
### Status: ❌ Nicht implementiert
|
||||
|
||||
**Fehlend:**
|
||||
- ❌ **KRITISCH:** Kein Export in maschinenlesbarem Format
|
||||
- ❌ Keine JSON/XML-Export-Funktion
|
||||
- ⚠️ PDF-Export für Trainingstage vorhanden, aber nicht für alle Daten
|
||||
|
||||
**Empfehlung:**
|
||||
- Implementiere `/api/user/data-export` mit JSON-Format
|
||||
- Implementiere Export für:
|
||||
- Alle eigenen Daten
|
||||
- Alle Mitgliederdaten (falls berechtigt)
|
||||
- Alle Trainingsdaten
|
||||
- Alle Turnierdaten
|
||||
|
||||
---
|
||||
|
||||
## 6. Verschlüsselung ✅ / ⚠️
|
||||
|
||||
### Status: ✅ Gut implementiert
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ AES-256-CBC Verschlüsselung für Mitgliederdaten:
|
||||
- firstName, lastName
|
||||
- birthDate
|
||||
- phone, street, city, postalCode
|
||||
- email
|
||||
- notes (Participant)
|
||||
- ✅ Passwörter werden mit bcrypt gehasht
|
||||
- ✅ HTTPS für alle Verbindungen
|
||||
|
||||
**Verbesserungsbedarf:**
|
||||
- ⚠️ Verschlüsselungsschlüssel sollte in separater, sicherer Konfiguration sein
|
||||
- ✅ **BEHOBEN:** MyTischtennis-Daten werden jetzt vollständig verschlüsselt (E-Mail, Zugriffstoken, Refresh-Token, Cookie, Benutzerdaten, Vereinsinformationen)
|
||||
- ⚠️ Keine Verschlüsselung für Logs (können personenbezogene Daten enthalten)
|
||||
|
||||
---
|
||||
|
||||
## 7. Logging ⚠️
|
||||
|
||||
### Status: ⚠️ Verbesserungsbedarf
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Aktivitäts-Logging (`log` Tabelle) - protokolliert wichtige Aktionen
|
||||
- ✅ Server-Logs - Standard-Server-Logs für Fehlerbehebung
|
||||
- ✅ **ENTFERNT:** API-Logging für MyTischtennis-Requests wurde deaktiviert
|
||||
|
||||
**Probleme:**
|
||||
- ✅ **BEHOBEN:** API-Logging für MyTischtennis-Requests wurde komplett entfernt (keine personenbezogenen Daten mehr in API-Logs)
|
||||
- ⚠️ Keine automatische Löschung von Aktivitätslogs (noch zu implementieren)
|
||||
- ✅ **BEHOBEN:** In Datenschutzerklärung dokumentiert, was geloggt wird
|
||||
|
||||
**Empfehlung:**
|
||||
- ⚠️ Implementiere automatische Löschung von Aktivitätslogs nach angemessener Frist (noch ausstehend)
|
||||
|
||||
---
|
||||
|
||||
## 8. MyTischtennis-Integration ⚠️
|
||||
|
||||
### Status: ⚠️ Verbesserungsbedarf
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Verschlüsselung von Passwörtern
|
||||
- ✅ Einwilligungen (`savePassword`, `autoUpdateRatings`)
|
||||
- ✅ DELETE-Endpunkt für Account
|
||||
|
||||
**Probleme:**
|
||||
- ✅ **BEHOBEN:** Drittlandübermittlung in Datenschutzerklärung erwähnt
|
||||
- ⚠️ Keine explizite Einwilligung für Datenübertragung an MyTischtennis.de
|
||||
- ✅ **BEHOBEN:** Informationen über Datenschutz bei MyTischtennis.de in Datenschutzerklärung
|
||||
- ✅ **BEHOBEN:** Alle MyTischtennis-Daten werden jetzt verschlüsselt gespeichert
|
||||
|
||||
**Empfehlung:**
|
||||
- Aktualisiere Datenschutzerklärung:
|
||||
- Erwähne MyTischtennis-Integration
|
||||
- Erkläre, welche Daten übertragen werden
|
||||
- Verweise auf Datenschutzerklärung von MyTischtennis.de
|
||||
- Erkläre Rechtsgrundlage (Einwilligung)
|
||||
- Implementiere explizite Einwilligung bei Einrichtung der Integration
|
||||
- Verschlüssele auch Zugriffstoken
|
||||
|
||||
---
|
||||
|
||||
## 9. Cookies & Local Storage ✅
|
||||
|
||||
### Status: ✅ Konform
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Nur technisch notwendige Cookies/Storage:
|
||||
- Session-Token (Session Storage)
|
||||
- Username, Clubs, Permissions (Local Storage)
|
||||
- ✅ Keine Tracking-Cookies
|
||||
- ✅ Keine Werbe-Cookies
|
||||
- ✅ Dokumentiert in Datenschutzerklärung
|
||||
|
||||
**Hinweis:**
|
||||
- Local Storage wird für persistente Daten verwendet (Clubs, Permissions)
|
||||
- Dies ist technisch notwendig und DSGVO-konform
|
||||
|
||||
---
|
||||
|
||||
## 10. Berechtigungssystem ✅
|
||||
|
||||
### Status: ✅ Gut implementiert
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Rollenbasierte Zugriffe (Admin, Trainer, Mannschaftsführer, Mitglied)
|
||||
- ✅ Individuelle Berechtigungen pro Ressource
|
||||
- ✅ Transparente Zugriffskontrolle
|
||||
- ✅ Logging von Aktivitäten
|
||||
|
||||
**Hinweis:**
|
||||
- Berechtigungssystem ist DSGVO-konform
|
||||
- Ermöglicht Datenminimierung (Zugriff nur auf notwendige Daten)
|
||||
|
||||
---
|
||||
|
||||
## 11. Datenminimierung ⚠️
|
||||
|
||||
### Status: ⚠️ Teilweise konform
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Nur notwendige Daten werden gespeichert
|
||||
- ✅ Berechtigungssystem ermöglicht minimale Datenzugriffe
|
||||
|
||||
**Verbesserungsbedarf:**
|
||||
- ⚠️ Logs enthalten möglicherweise zu viele Daten (Request/Response-Bodies)
|
||||
- ⚠️ Keine automatische Löschung alter Daten
|
||||
- ⚠️ Keine Option, Daten zu anonymisieren statt zu löschen
|
||||
|
||||
---
|
||||
|
||||
## 12. Technische und organisatorische Maßnahmen (TOM) ✅ / ⚠️
|
||||
|
||||
### Status: ✅ Gut, aber verbesserungsbedürftig
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ Verschlüsselung sensibler Daten
|
||||
- ✅ HTTPS für alle Verbindungen
|
||||
- ✅ Passwort-Hashing (bcrypt)
|
||||
- ✅ Authentifizierung und Autorisierung
|
||||
- ✅ Berechtigungssystem
|
||||
|
||||
**Verbesserungsbedarf:**
|
||||
- ⚠️ Keine Dokumentation der TOM
|
||||
- ⚠️ Keine regelmäßigen Sicherheitsupdates dokumentiert
|
||||
- ⚠️ Keine Backup-Strategie dokumentiert
|
||||
- ⚠️ Keine Notfallpläne dokumentiert
|
||||
|
||||
---
|
||||
|
||||
## 13. Auftragsverarbeitung ⚠️
|
||||
|
||||
### Status: ⚠️ Nicht dokumentiert
|
||||
|
||||
**Fehlend:**
|
||||
- ⚠️ Keine Informationen über Hosting-Provider
|
||||
- ⚠️ Keine Informationen über Auftragsverarbeitungsverträge (AVV)
|
||||
- ⚠️ Keine Informationen über Subunternehmer
|
||||
|
||||
**Empfehlung:**
|
||||
- Dokumentiere alle Auftragsverarbeiter (Hosting, etc.)
|
||||
- Erwähne in Datenschutzerklärung, dass AVV abgeschlossen wurden
|
||||
|
||||
---
|
||||
|
||||
## 14. Betroffenenrechte - Umsetzung ❌
|
||||
|
||||
### Status: ❌ Nicht vollständig implementiert
|
||||
|
||||
**Fehlend:**
|
||||
- ❌ **KRITISCH:** Kein Endpunkt für Auskunft (Art. 15)
|
||||
- ❌ **KRITISCH:** Kein Endpunkt für Löschung (Art. 17)
|
||||
- ❌ **KRITISCH:** Kein Endpunkt für Datenexport (Art. 20)
|
||||
- ❌ Kein Endpunkt für Berichtigung (Art. 16) - teilweise vorhanden über normale Edit-Endpunkte
|
||||
- ❌ Kein Endpunkt für Einschränkung (Art. 18)
|
||||
- ❌ Kein Endpunkt für Widerspruch (Art. 21)
|
||||
|
||||
**Empfehlung:**
|
||||
- Implementiere zentrale Endpunkte für alle Betroffenenrechte:
|
||||
- `GET /api/user/rights/information` - Auskunft
|
||||
- `DELETE /api/user/rights/deletion` - Löschung
|
||||
- `GET /api/user/rights/export` - Datenexport
|
||||
- `PUT /api/user/rights/restriction` - Einschränkung
|
||||
- `POST /api/user/rights/objection` - Widerspruch
|
||||
|
||||
---
|
||||
|
||||
## 15. Kontakt für Datenschutz ✅
|
||||
|
||||
### Status: ✅ Vorhanden
|
||||
|
||||
**Vorhanden:**
|
||||
- ✅ E-Mail-Adresse in Datenschutzerklärung: tsschulz@tsschulz.de
|
||||
- ✅ Vollständige Anschrift im Impressum
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
### ✅ Gut implementiert:
|
||||
1. Verschlüsselung sensibler Daten
|
||||
2. HTTPS
|
||||
3. Berechtigungssystem
|
||||
4. Cookies/Local Storage (nur technisch notwendig)
|
||||
5. Datenschutzerklärung vorhanden
|
||||
|
||||
### ⚠️ Verbesserungsbedarf:
|
||||
1. Datenschutzerklärung aktualisieren (MyTischtennis, Logging)
|
||||
2. Logging von personenbezogenen Daten reduzieren/anonymisieren
|
||||
3. Automatische Löschung von Logs implementieren
|
||||
4. MyTischtennis-Integration in Datenschutzerklärung erwähnen
|
||||
|
||||
### ❌ Kritisch - Muss implementiert werden:
|
||||
1. **Löschrechte-API** (Art. 17 DSGVO)
|
||||
2. **Auskunftsrechte-API** (Art. 15 DSGVO)
|
||||
3. **Datenexport-API** (Art. 20 DSGVO)
|
||||
4. **Automatische Löschung von Logs** nach Retention-Periode
|
||||
|
||||
---
|
||||
|
||||
## Prioritäten
|
||||
|
||||
### Sofort (vor Live-Betrieb):
|
||||
1. Datenschutzerklärung aktualisieren
|
||||
2. Löschrechte-API implementieren
|
||||
3. Auskunftsrechte-API implementieren
|
||||
4. Datenexport-API implementieren
|
||||
|
||||
### Kurzfristig (innerhalb 1 Monat):
|
||||
1. Automatische Löschung von Logs implementieren
|
||||
2. Logging von personenbezogenen Daten reduzieren/anonymisieren
|
||||
3. MyTischtennis-Integration in Datenschutzerklärung dokumentieren
|
||||
|
||||
### Mittelfristig (innerhalb 3 Monate):
|
||||
1. Einwilligungsmanagement implementieren
|
||||
2. TOM dokumentieren
|
||||
3. Auftragsverarbeitung dokumentieren
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. ✅ Diese Checkliste erstellen
|
||||
2. ⏳ Datenschutzerklärung aktualisieren
|
||||
3. ⏳ Löschrechte-API implementieren
|
||||
4. ⏳ Auskunftsrechte-API implementieren
|
||||
5. ⏳ Datenexport-API implementieren
|
||||
6. ⏳ Logging verbessern
|
||||
|
||||
69
SERVER_NODE_UPGRADE.md
Normal file
69
SERVER_NODE_UPGRADE.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Server Node.js Upgrade-Anleitung
|
||||
|
||||
## Problem
|
||||
|
||||
Der Server verwendet Node.js 20.17.0, aber Vite 7.2.4 benötigt Node.js 20.19+ oder 22.12+.
|
||||
|
||||
## Lösung 1: Node.js auf dem Server upgraden (Empfohlen)
|
||||
|
||||
### Option A: Node.js 20.19+ installieren
|
||||
|
||||
```bash
|
||||
# Auf dem Server:
|
||||
# Mit nvm (falls installiert):
|
||||
nvm install 20.19.0
|
||||
nvm use 20.19.0
|
||||
nvm alias default 20.19.0
|
||||
|
||||
# Oder mit NodeSource Repository:
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs=20.19.0-1nodesource1
|
||||
|
||||
# Prüfe Version:
|
||||
node --version # Sollte 20.19.0 oder höher sein
|
||||
```
|
||||
|
||||
### Option B: Node.js 22.12+ installieren (LTS)
|
||||
|
||||
```bash
|
||||
# Auf dem Server:
|
||||
# Mit nvm:
|
||||
nvm install 22.12.0
|
||||
nvm use 22.12.0
|
||||
nvm alias default 22.12.0
|
||||
|
||||
# Oder mit NodeSource Repository:
|
||||
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
||||
sudo apt-get install -y nodejs
|
||||
|
||||
# Prüfe Version:
|
||||
node --version # Sollte 22.12.0 oder höher sein
|
||||
```
|
||||
|
||||
### Nach dem Upgrade
|
||||
|
||||
```bash
|
||||
cd /var/www/tt-tagebuch.de/backend
|
||||
npm install # Erstellt automatisch den Frontend-Build
|
||||
sudo systemctl restart tt-tagebuch
|
||||
```
|
||||
|
||||
## Lösung 2: Vite auf Version 6 downgraden (Temporär)
|
||||
|
||||
Falls Node.js nicht upgradet werden kann, wurde Vite bereits auf Version 6.0.0 downgraded.
|
||||
|
||||
```bash
|
||||
cd /var/www/tt-tagebuch.de/backend
|
||||
npm install # Erstellt automatisch den Frontend-Build
|
||||
sudo systemctl restart tt-tagebuch
|
||||
```
|
||||
|
||||
**Hinweis:** Vite 6 funktioniert mit Node.js 20.17.0, aber Vite 7 bietet bessere Performance und Features.
|
||||
|
||||
## Empfehlung
|
||||
|
||||
**Node.js upgraden** ist die bessere Lösung, da:
|
||||
- Vite 7 bessere Performance bietet
|
||||
- Zukünftige Updates einfacher sind
|
||||
- Node.js 20.19+ oder 22.12+ LTS-Versionen sind
|
||||
|
||||
109
SITEMAP_ANLEITUNG.md
Normal file
109
SITEMAP_ANLEITUNG.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Sitemap für Google Search Console einreichen
|
||||
|
||||
## Aktuelle Sitemap
|
||||
|
||||
Die Sitemap ist verfügbar unter: `https://tt-tagebuch.de/sitemap.xml`
|
||||
|
||||
Sie enthält folgende öffentliche Seiten:
|
||||
- `/` (Home) - Priorität: 1.0
|
||||
- `/register` (Registrierung) - Priorität: 0.8
|
||||
- `/login` (Anmeldung) - Priorität: 0.7
|
||||
- `/impressum` (Impressum) - Priorität: 0.3
|
||||
- `/datenschutz` (Datenschutz) - Priorität: 0.3
|
||||
|
||||
## Sitemap aktualisieren
|
||||
|
||||
### Automatisch (empfohlen)
|
||||
```bash
|
||||
./update-sitemap.sh
|
||||
```
|
||||
|
||||
Das Skript aktualisiert automatisch das `lastmod`-Datum auf das heutige Datum.
|
||||
|
||||
### Manuell
|
||||
Die Sitemap-Datei befindet sich in: `frontend/public/sitemap.xml`
|
||||
|
||||
Nach Änderungen:
|
||||
1. Frontend neu bauen: `cd frontend && npm run build`
|
||||
2. Backend neu starten (falls nötig)
|
||||
|
||||
## Sitemap in Google Search Console einreichen
|
||||
|
||||
### Schritt 1: Google Search Console öffnen
|
||||
1. Gehe zu: https://search.google.com/search-console
|
||||
2. Wähle die Property für `tt-tagebuch.de` aus
|
||||
|
||||
### Schritt 2: Sitemap hinzufügen
|
||||
1. Klicke im linken Menü auf **"Sitemaps"**
|
||||
2. Im Feld **"Neue Sitemap hinzufügen"** eingeben:
|
||||
```
|
||||
sitemap.xml
|
||||
```
|
||||
Oder die vollständige URL:
|
||||
```
|
||||
https://tt-tagebuch.de/sitemap.xml
|
||||
```
|
||||
3. Klicke auf **"Senden"**
|
||||
|
||||
### Schritt 3: Status prüfen
|
||||
- Google wird die Sitemap innerhalb weniger Minuten verarbeiten
|
||||
- Der Status wird angezeigt:
|
||||
- ✅ **Erfolgreich**: Sitemap wurde erfolgreich verarbeitet
|
||||
- ⚠️ **Warnung**: Sitemap wurde verarbeitet, aber es gibt Warnungen
|
||||
- ❌ **Fehler**: Sitemap konnte nicht verarbeitet werden
|
||||
|
||||
### Schritt 4: Indexierung anfordern
|
||||
Nach dem Einreichen der Sitemap kannst du auch einzelne URLs zur Indexierung anfordern:
|
||||
1. Gehe zu **"URL-Prüfung"**
|
||||
2. Gib die URL ein: `https://tt-tagebuch.de/`
|
||||
3. Klicke auf **"Indexierung anfordern"**
|
||||
|
||||
## Sitemap testen
|
||||
|
||||
### Online-Tools
|
||||
- Google Sitemap Tester: https://www.xml-sitemaps.com/validate-xml-sitemap.html
|
||||
- Sitemap Validator: https://validator.w3.org/
|
||||
|
||||
### Per Kommandozeile
|
||||
```bash
|
||||
# Sitemap abrufen
|
||||
curl https://tt-tagebuch.de/sitemap.xml
|
||||
|
||||
# XML-Validierung (falls xmllint installiert ist)
|
||||
curl -s https://tt-tagebuch.de/sitemap.xml | xmllint --noout -
|
||||
```
|
||||
|
||||
## Wichtige Hinweise
|
||||
|
||||
1. **robots.txt**: Die Sitemap ist bereits in der `robots.txt` referenziert:
|
||||
```
|
||||
Sitemap: https://tt-tagebuch.de/sitemap.xml
|
||||
```
|
||||
|
||||
2. **lastmod-Datum**: Wird automatisch beim Ausführen von `update-sitemap.sh` aktualisiert
|
||||
|
||||
3. **Nur öffentliche Seiten**: Die Sitemap enthält nur öffentlich zugängliche Seiten. Geschützte Seiten (die eine Anmeldung erfordern) sind nicht enthalten.
|
||||
|
||||
4. **Prioritäten**:
|
||||
- Homepage: 1.0 (höchste Priorität)
|
||||
- Registrierung/Login: 0.7-0.8 (wichtig für neue Nutzer)
|
||||
- Rechtliche Seiten: 0.3 (niedrige Priorität, ändern sich selten)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Sitemap wird nicht gefunden
|
||||
- Prüfe, ob die Sitemap unter `https://tt-tagebuch.de/sitemap.xml` erreichbar ist
|
||||
- Stelle sicher, dass das Frontend gebaut wurde: `cd frontend && npm run build`
|
||||
- Prüfe die Apache-Konfiguration (sollte statische Dateien aus `/var/www/tt-tagebuch.de` servieren)
|
||||
|
||||
### Sitemap wird nicht indexiert
|
||||
- Warte einige Stunden/Tage - Google braucht Zeit zum Crawlen
|
||||
- Prüfe in der Search Console, ob es Fehler gibt
|
||||
- Stelle sicher, dass die URLs in der Sitemap erreichbar sind
|
||||
- Prüfe, ob die `robots.txt` die Seiten nicht blockiert
|
||||
|
||||
### Sitemap enthält Fehler
|
||||
- Validiere die XML-Struktur mit einem XML-Validator
|
||||
- Prüfe, ob alle URLs korrekt sind (keine 404-Fehler)
|
||||
- Stelle sicher, dass alle URLs HTTPS verwenden (nicht HTTP)
|
||||
|
||||
BIN
android-app/.gradle/8.7/checksums/checksums.lock
Normal file
BIN
android-app/.gradle/8.7/checksums/checksums.lock
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/checksums/md5-checksums.bin
Normal file
BIN
android-app/.gradle/8.7/checksums/md5-checksums.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/checksums/sha1-checksums.bin
Normal file
BIN
android-app/.gradle/8.7/checksums/sha1-checksums.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/executionHistory/executionHistory.bin
Normal file
BIN
android-app/.gradle/8.7/executionHistory/executionHistory.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/executionHistory/executionHistory.lock
Normal file
BIN
android-app/.gradle/8.7/executionHistory/executionHistory.lock
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/fileChanges/last-build.bin
Normal file
BIN
android-app/.gradle/8.7/fileChanges/last-build.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/fileHashes/fileHashes.bin
Normal file
BIN
android-app/.gradle/8.7/fileHashes/fileHashes.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/fileHashes/fileHashes.lock
Normal file
BIN
android-app/.gradle/8.7/fileHashes/fileHashes.lock
Normal file
Binary file not shown.
BIN
android-app/.gradle/8.7/fileHashes/resourceHashesCache.bin
Normal file
BIN
android-app/.gradle/8.7/fileHashes/resourceHashesCache.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
BIN
android-app/.gradle/buildOutputCleanup/buildOutputCleanup.lock
Normal file
Binary file not shown.
2
android-app/.gradle/buildOutputCleanup/cache.properties
Normal file
2
android-app/.gradle/buildOutputCleanup/cache.properties
Normal file
@@ -0,0 +1,2 @@
|
||||
#Thu Mar 05 14:01:17 CET 2026
|
||||
gradle.version=8.7
|
||||
BIN
android-app/.gradle/buildOutputCleanup/outputFiles.bin
Normal file
BIN
android-app/.gradle/buildOutputCleanup/outputFiles.bin
Normal file
Binary file not shown.
BIN
android-app/.gradle/file-system.probe
Normal file
BIN
android-app/.gradle/file-system.probe
Normal file
Binary file not shown.
0
android-app/.gradle/vcs-1/gc.properties
Normal file
0
android-app/.gradle/vcs-1/gc.properties
Normal file
92
android-app/app/build.gradle.kts
Normal file
92
android-app/app/build.gradle.kts
Normal file
@@ -0,0 +1,92 @@
|
||||
plugins {
|
||||
id("com.android.application")
|
||||
id("org.jetbrains.kotlin.android")
|
||||
id("org.jetbrains.kotlin.plugin.serialization")
|
||||
id("org.jetbrains.kotlin.plugin.compose")
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "de.trainingstagebuch.app"
|
||||
compileSdk = 34
|
||||
|
||||
defaultConfig {
|
||||
applicationId = "de.trainingstagebuch.app"
|
||||
minSdk = 26
|
||||
targetSdk = 34
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
|
||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||
vectorDrawables {
|
||||
useSupportLibrary = true
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
isMinifyEnabled = false
|
||||
proguardFiles(
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
kotlinOptions {
|
||||
jvmTarget = "17"
|
||||
}
|
||||
|
||||
buildFeatures {
|
||||
compose = true
|
||||
}
|
||||
|
||||
packaging {
|
||||
resources {
|
||||
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.register<Exec>("checkI18nHardcodedUiStrings") {
|
||||
workingDir = rootProject.projectDir
|
||||
commandLine("bash", "scripts/check_no_hardcoded_ui_strings.sh")
|
||||
}
|
||||
|
||||
tasks.named("preBuild").configure {
|
||||
dependsOn("checkI18nHardcodedUiStrings")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
val composeBom = platform("androidx.compose:compose-bom:2024.10.01")
|
||||
|
||||
implementation("androidx.core:core-ktx:1.13.1")
|
||||
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.7")
|
||||
implementation("androidx.activity:activity-compose:1.9.3")
|
||||
implementation(composeBom)
|
||||
implementation("androidx.compose.ui:ui")
|
||||
implementation("androidx.compose.ui:ui-graphics")
|
||||
implementation("androidx.compose.ui:ui-tooling-preview")
|
||||
implementation("androidx.compose.material3:material3")
|
||||
|
||||
implementation("androidx.navigation:navigation-compose:2.8.3")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7")
|
||||
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.8.7")
|
||||
|
||||
implementation("androidx.datastore:datastore-preferences:1.1.1")
|
||||
|
||||
implementation("com.squareup.retrofit2:retrofit:2.11.0")
|
||||
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
|
||||
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
||||
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
|
||||
|
||||
testImplementation("junit:junit:4.13.2")
|
||||
|
||||
debugImplementation(composeBom)
|
||||
debugImplementation("androidx.compose.ui:ui-tooling")
|
||||
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,2 @@
|
||||
#- File Locator -
|
||||
listingFile=../../../../outputs/apk/debug/output-metadata.json
|
||||
@@ -0,0 +1,2 @@
|
||||
appMetadataVersion=1.1
|
||||
androidGradlePluginVersion=8.5.2
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "COMPATIBLE_SCREEN_MANIFEST",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "de.trainingstagebuch.app",
|
||||
"variantName": "debug",
|
||||
"elements": []
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
8
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user