No description
- Kotlin 100%
Offline-first task management Android app with: - Room database with background sync via WorkManager - Jetpack Compose UI with retro styling (JetBrains Mono, no rounded corners) - OIDC authentication support (Authentik) - MVVM architecture with Hilt DI - Projects, tasks, and focus session management - Dark mode support Tech stack: Kotlin, Jetpack Compose, Material 3, Hilt, Room, Retrofit, WorkManager |
||
|---|---|---|
| .idea | ||
| app | ||
| gradle | ||
| .gitignore | ||
| API_CONFIGURATION.md | ||
| ARCHITECTURE.md | ||
| AUTH_SETUP.md | ||
| AUTHENTIK_SETUP.md | ||
| build.gradle.kts | ||
| BUILD_SUMMARY.md | ||
| FEATURES_COMPLETE.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LOGCAT_GUIDE.md | ||
| NETWORK_SETUP.md | ||
| QUICK_START.md | ||
| README.md | ||
| RETRO_STYLING.md | ||
| settings.gradle.kts | ||
| STYLING_COMPLETE.md | ||
JP Focus Android
Native Android client for JP Focus task management system.
Features
- ✅ Offline-first: All data stored locally in Room database, synced in background
- ✅ Retro UI: Monospace typography (JetBrains Mono), black borders, no rounded corners - matching web UI
- ✅ Real-time sync: Background synchronization via WorkManager
- ✅ Focus sessions: Track your focus time and see team activity
- ✅ Project management: Create and manage projects with tasks
- ✅ Task management: Create, update, and organize tasks by state
- ✅ Dark mode: Full dark mode support with retro color scheme
Tech Stack
- Language: Kotlin 2.0.21
- UI: Jetpack Compose + Material 3
- Architecture: MVVM with offline-first pattern
- DI: Hilt
- Networking: Retrofit + OkHttp + Moshi
- Database: Room + DataStore
- Async: Coroutines + Flow
- Background: WorkManager
Project Structure
app/src/main/java/com/janpeterdhalle/focus/
├── core/ # Infrastructure (network, database, DI, sync)
├── data/ # Data layer (repositories, mappers, models)
└── ui/ # UI layer (screens, components, navigation)
See ARCHITECTURE.md for detailed architecture documentation.
Build & Run
Prerequisites
- Android Studio Ladybug or newer
- JDK 17+
- Android SDK 26+ (minimum), 35 (target)
Building
# Debug build
./gradlew assembleDebug
# Release build
./gradlew assembleRelease
# Run on connected device/emulator
./gradlew installDebug
Configuration
The app connects to:
- Debug:
http://10.0.2.2:8080/api/(localhost via Android emulator) - Release:
https://focus.janpeterdhalle.com/api/
OIDC authentication via Authentik:
- Issuer:
https://sso.janpeterdhalle.com/application/o/jp-focus/ - Client ID:
jp-focus-android
Development Status
✅ BUILD SUCCESSFUL - All core features compile
Completed (Phase 1-3)
- ✅ Core architecture setup
- ✅ Offline-first repositories
- ✅ Room database with sync tracking
- ✅ WorkManager background sync
- ✅ Material 3 UI components
- ✅ Navigation structure
- ✅ Projects and tasks screens
- ✅ Focus mode
In Progress (Phase 4)
- 🔄 OIDC authentication (infrastructure ready)
- 🔄 Search functionality (repository ready, UI pending)
- 🔄 Adaptive layouts for tablets
Planned (Phase 5)
- ⏳ Push notifications
- ⏳ Widgets
- ⏳ App shortcuts
See BUILD_SUMMARY.md for detailed implementation status.
Testing
# Run unit tests
./gradlew test
# Run instrumentation tests
./gradlew connectedAndroidTest
Contributing
This is a personal project, but suggestions and bug reports are welcome via issues.
License
Private project - All rights reserved