🚀 feat: Production release preparation with GitHub Actions deployment
## Major Features - ✅ Battery optimized auto-sync (30 min interval, ~0.4%/day) - ✅ BuildConfig.DEBUG conditional logging (Logger.kt) - ✅ Settings UI cleanup (SSID field removed) - ✅ Interactive notifications (click opens app) - ✅ Post-reboot auto-sync (BootReceiver) - ✅ GitHub Actions deployment workflow ## Implementation Details ### Auto-Sync Architecture - WorkManager PeriodicWorkRequest (30 min intervals) - Gateway IP detection via network interface enumeration - Smart sync only when on home network - BootReceiver restarts monitoring after device reboot ### Logging System - Logger.kt object with BuildConfig.DEBUG checks - Debug logs only in DEBUG builds - Error/warning logs always visible - All components updated (NetworkMonitor, SyncWorker, WebDavSyncService, etc.) ### UI Improvements - Removed confusing SSID field from Settings - Gateway detection fully automatic - Material Design 3 info boxes - Cleaner, simpler user interface ### Notifications - PendingIntent opens MainActivity on click - setAutoCancel(true) for auto-dismiss - Broadcast receiver for UI refresh on sync ### GitHub Actions - Automated APK builds on push to main - Signed releases with proper keystore - 3 APK variants (universal, arm64-v8a, armeabi-v7a) - Semantic versioning: YYYY.MM.DD + build number - Comprehensive release notes with installation guide ## Documentation - README.md: User-friendly German guide - DOCS.md: Technical architecture documentation - GITHUB_ACTIONS_SETUP.md: Deployment setup guide ## Build Configuration - Signing support via key.properties - APK splits for smaller downloads - ProGuard enabled with resource shrinking - BuildConfig generation for DEBUG flag
This commit is contained in:
335
README.old.md
Normal file
335
README.old.md
Normal file
@@ -0,0 +1,335 @@
|
||||
# Simple Notes Sync 📝
|
||||
|
||||
> Minimalistische Android-App für Offline-Notizen mit automatischer WLAN-Synchronisierung
|
||||
|
||||
Eine schlanke Notiz-App ohne Schnickschnack - perfekt für schnelle Gedanken, die automatisch zu Hause synchronisiert werden.
|
||||
|
||||
---
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- 📝 **Offline-first** - Notizen werden lokal gespeichert und sind immer verfügbar
|
||||
- 🔄 **Auto-Sync** - Automatische Synchronisierung wenn du im Heimnetzwerk bist
|
||||
- 🏠 **WebDAV Server** - Deine Daten bleiben bei dir (Docker-Container)
|
||||
- 🔋 **Akkuschonend** - Nur ~0.4% Akkuverbrauch pro Tag
|
||||
- 🚫 **Keine Cloud** - Keine Google, keine Microsoft, keine Drittanbieter
|
||||
- 🔐 **Privacy** - Keine Tracking, keine Analytics, keine Standort-Berechtigungen
|
||||
|
||||
---
|
||||
|
||||
## 📥 Installation
|
||||
|
||||
### Android App
|
||||
|
||||
**Option 1: APK herunterladen**
|
||||
|
||||
1. Neueste [Release](../../releases/latest) öffnen
|
||||
2. `app-debug.apk` herunterladen
|
||||
3. APK auf dem Handy installieren
|
||||
|
||||
**Option 2: Selbst bauen**
|
||||
|
||||
```bash
|
||||
cd android
|
||||
./gradlew assembleDebug
|
||||
# APK: android/app/build/outputs/apk/debug/app-debug.apk
|
||||
```
|
||||
|
||||
### WebDAV Server
|
||||
|
||||
Der Server läuft als Docker-Container und speichert deine Notizen.
|
||||
|
||||
```bash
|
||||
cd server
|
||||
cp .env.example .env
|
||||
nano .env # Passwort anpassen!
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
**Server testen:**
|
||||
```bash
|
||||
curl -u noteuser:dein_passwort http://192.168.0.XXX:8080/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Schnellstart
|
||||
|
||||
1. **Server starten** (siehe oben)
|
||||
2. **App installieren** und öffnen
|
||||
3. **Einstellungen öffnen** (⚙️ Symbol oben rechts)
|
||||
4. **Server konfigurieren:**
|
||||
- Server-URL: `http://192.168.0.XXX:8080/notes`
|
||||
- Benutzername: `noteuser`
|
||||
- Passwort: (aus `.env` Datei)
|
||||
- Auto-Sync: **AN**
|
||||
5. **Fertig!** Notizen werden jetzt automatisch synchronisiert
|
||||
|
||||
---
|
||||
|
||||
## 💡 Wie funktioniert Auto-Sync?
|
||||
|
||||
Die App prüft **alle 30 Minuten**, ob:
|
||||
- ✅ WLAN verbunden ist
|
||||
- ✅ Server im gleichen Netzwerk erreichbar ist
|
||||
- ✅ Neue Notizen vorhanden sind
|
||||
|
||||
Wenn alle Bedingungen erfüllt → **Automatische Synchronisierung**
|
||||
|
||||
**Wichtig:** Funktioniert nur im selben Netzwerk wie der Server (kein Internet-Zugriff nötig!)
|
||||
|
||||
---
|
||||
|
||||
## 🔋 Akkuverbrauch
|
||||
|
||||
| Komponente | Verbrauch/Tag |
|
||||
|------------|---------------|
|
||||
| WorkManager (alle 30 Min) | ~0.3% |
|
||||
| Netzwerk-Checks | ~0.1% |
|
||||
| **Total** | **~0.4%** |
|
||||
|
||||
Bei einem 3000 mAh Akku entspricht das ~12 mAh pro Tag.
|
||||
|
||||
---
|
||||
|
||||
## 📱 Screenshots
|
||||
|
||||
_TODO: Screenshots hinzufügen_
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Technische Details
|
||||
|
||||
Mehr Infos zur Architektur und Implementierung findest du in der [technischen Dokumentation](DOCS.md).
|
||||
|
||||
**Stack:**
|
||||
- **Android:** Kotlin, Material Design 3, WorkManager
|
||||
- **Server:** Docker, WebDAV (bytemark/webdav)
|
||||
- **Sync:** Sardine Android (WebDAV Client)
|
||||
|
||||
---
|
||||
|
||||
## 📄 Lizenz
|
||||
|
||||
[Lizenz hier einfügen]
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Beitragen
|
||||
|
||||
Contributions sind willkommen! Bitte öffne ein Issue oder Pull Request.
|
||||
|
||||
---
|
||||
|
||||
## 📄 Lizenz
|
||||
|
||||
MIT License - siehe [LICENSE](LICENSE)
|
||||
|
||||
---
|
||||
|
||||
**Projekt Start:** 19. Dezember 2025
|
||||
**Status:** ✅ Funktional & Produktiv
|
||||
|
||||
## 📖 Dokumentation
|
||||
|
||||
### In diesem Repository:
|
||||
|
||||
- **[QUICKSTART.md](QUICKSTART.md)** - Schnellstart-Anleitung
|
||||
- **[server/README.md](server/README.md)** - Server-Verwaltung
|
||||
|
||||
### Vollständige Dokumentation (project-docs):
|
||||
|
||||
- [README.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/README.md) - Projekt-Übersicht & Architektur
|
||||
- [IMPLEMENTATION_PLAN.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/IMPLEMENTATION_PLAN.md) - Detaillierter Sprint-Plan
|
||||
- [SERVER_SETUP.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/SERVER_SETUP.md) - Server-Setup Details
|
||||
- [ANDROID_GUIDE.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/ANDROID_GUIDE.md) - 📱 Kompletter Android-Code
|
||||
- [NOTIFICATIONS.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/NOTIFICATIONS.md) - Notification-System Details
|
||||
- [WINDOWS_SETUP.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/WINDOWS_SETUP.md) - 🪟 Windows + Android Studio Setup
|
||||
- [CODE_REFERENCE.md](https://github.com/inventory69/project-docs/blob/main/simple-notes-sync/CODE_REFERENCE.md) - Schnelle Code-Referenz
|
||||
|
||||
## ⚙️ Server Konfiguration
|
||||
|
||||
**Standard-Credentials:**
|
||||
- Username: `noteuser`
|
||||
- Password: Siehe `.env` im `server/` Verzeichnis
|
||||
|
||||
**Server-URL:**
|
||||
- Lokal: `http://localhost:8080/`
|
||||
- Im Netzwerk: `http://YOUR_IP:8080/`
|
||||
|
||||
IP-Adresse finden:
|
||||
```bash
|
||||
ip addr show | grep "inet " | grep -v 127.0.0.1
|
||||
```
|
||||
|
||||
## 📱 Android App Setup
|
||||
|
||||
### Vorraussetzungen
|
||||
|
||||
- Android Studio Hedgehog (2023.1.1) oder neuer
|
||||
- JDK 17
|
||||
- Min SDK 24 (Android 7.0)
|
||||
- Target SDK 34 (Android 14)
|
||||
|
||||
### In App konfigurieren
|
||||
|
||||
1. App starten
|
||||
2. Einstellungen öffnen
|
||||
3. Server-URL eintragen (z.B. `http://192.168.1.100:8080/`)
|
||||
4. Username & Passwort eingeben
|
||||
5. Heim-WLAN SSID eingeben
|
||||
6. "Verbindung testen"
|
||||
|
||||
## 🔧 Entwicklung
|
||||
|
||||
### Server-Management
|
||||
|
||||
```bash
|
||||
# Status prüfen
|
||||
docker-compose ps
|
||||
|
||||
# Logs anschauen
|
||||
docker-compose logs -f
|
||||
|
||||
# Neustarten
|
||||
docker-compose restart
|
||||
|
||||
# Stoppen
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### Android-Build
|
||||
|
||||
```bash
|
||||
cd android
|
||||
./gradlew assembleDebug
|
||||
|
||||
# APK Location:
|
||||
# app/build/outputs/apk/debug/app-debug.apk
|
||||
```
|
||||
|
||||
## 🧪 Testing
|
||||
|
||||
### Server-Test
|
||||
|
||||
```bash
|
||||
# Testdatei hochladen
|
||||
echo '{"id":"test","title":"Test","content":"Hello"}' > test.json
|
||||
curl -u noteuser:password -T test.json http://localhost:8080/test.json
|
||||
|
||||
# Datei abrufen
|
||||
curl -u noteuser:password http://localhost:8080/test.json
|
||||
|
||||
# Datei löschen
|
||||
curl -u noteuser:password -X DELETE http://localhost:8080/test.json
|
||||
```
|
||||
|
||||
### Android-App
|
||||
|
||||
1. Notiz erstellen → speichern → in Liste sichtbar ✓
|
||||
2. WLAN verbinden → Auto-Sync ✓
|
||||
3. Server offline → Fehlermeldung ✓
|
||||
4. Konflikt-Szenario → Auflösung ✓
|
||||
|
||||
## 📦 Deployment
|
||||
|
||||
### Server (Production)
|
||||
|
||||
**Option 1: Lokaler Server (Raspberry Pi, etc.)**
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
**Option 2: VPS (DigitalOcean, Hetzner, etc.)**
|
||||
```bash
|
||||
# Mit HTTPS (empfohlen)
|
||||
# Zusätzlich: Reverse Proxy (nginx/Caddy) + Let's Encrypt
|
||||
```
|
||||
|
||||
### Android App
|
||||
|
||||
```bash
|
||||
# Release Build
|
||||
./gradlew assembleRelease
|
||||
|
||||
# APK signieren
|
||||
# Play Store Upload oder Direct Install
|
||||
```
|
||||
|
||||
## 🔐 Security
|
||||
|
||||
**Entwicklung:**
|
||||
- ✅ HTTP Basic Auth
|
||||
- ✅ Nur im lokalen Netzwerk
|
||||
|
||||
**Produktion:**
|
||||
- ⚠️ HTTPS mit SSL/TLS (empfohlen)
|
||||
- ⚠️ Starkes Passwort
|
||||
- ⚠️ Firewall-Regeln
|
||||
- ⚠️ VPN für externen Zugriff
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Server startet nicht
|
||||
|
||||
```bash
|
||||
# Port bereits belegt?
|
||||
sudo netstat -tlnp | grep 8080
|
||||
|
||||
# Logs checken
|
||||
docker-compose logs webdav
|
||||
```
|
||||
|
||||
### Android kann nicht verbinden
|
||||
|
||||
- Ist Android im gleichen WLAN?
|
||||
- Ist die Server-IP korrekt?
|
||||
- Firewall blockiert Port 8080?
|
||||
- Credentials korrekt?
|
||||
|
||||
```bash
|
||||
# Ping zum Server
|
||||
ping YOUR_SERVER_IP
|
||||
|
||||
# Port erreichbar?
|
||||
telnet YOUR_SERVER_IP 8080
|
||||
```
|
||||
|
||||
## 📝 TODO / Roadmap
|
||||
|
||||
### Version 1.0 (MVP)
|
||||
- [x] Docker WebDAV Server
|
||||
- [ ] Android Basic CRUD
|
||||
- [ ] Auto-Sync bei WLAN
|
||||
- [ ] Error Handling
|
||||
- [ ] Notifications
|
||||
|
||||
### Version 1.1
|
||||
- [ ] Suche
|
||||
- [ ] Dark Mode
|
||||
- [ ] Markdown-Support
|
||||
|
||||
### Version 2.0
|
||||
- [ ] Desktop-Client (Flutter Desktop)
|
||||
- [ ] Tags/Kategorien
|
||||
- [ ] Verschlüsselung
|
||||
- [ ] Shared Notes
|
||||
|
||||
## 📄 License
|
||||
|
||||
MIT License - siehe [LICENSE](LICENSE)
|
||||
|
||||
## 👤 Author
|
||||
|
||||
Created for personal use - 2025
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
- [bytemark/webdav](https://hub.docker.com/r/bytemark/webdav) - Docker WebDAV Server
|
||||
- [Sardine Android](https://github.com/thegrizzlylabs/sardine-android) - WebDAV Client
|
||||
- [Android WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager) - Background Tasks
|
||||
|
||||
---
|
||||
|
||||
**Project Start:** 19. Dezember 2025
|
||||
**Status:** 🚧 In Development
|
||||
Reference in New Issue
Block a user