- Android PWA/WASM launcher with glassmorphism UI - Loads https://admin.dark.side directly on launch - Complete GitLab CI/CD pipeline configuration - Automated builds for Debug, Release, and AAB - Full WASM support with optimized WebView - Material Design 3 theme - Comprehensive documentation Features: - Auto-load target URL on app launch - Glassmorphism components (frosted glass effects) - Full PWA/WASM support - Room database for future extensions - Jetpack Compose UI - CI/CD with artifact storage Built for SilverLABS
9.7 KiB
SilverDROID - Project Summary
🎯 Project Overview
SilverDROID is an Android launcher application for Progressive Web Apps (PWAs) and WebAssembly (WASM) applications, featuring a beautiful glassmorphism UI inspired by the Electron + Svelte architecture from SilverPOWERSHELL.
Core Concept
- PWA Container: Native Android wrapper for web apps
- WASM Support: Optimized WebView for WebAssembly execution
- Glassmorphism UI: Frosted glass aesthetic with Material Design 3
- Launcher Paradigm: Grid-based app launcher similar to traditional launchers
✅ Implementation Status
Completed Features
1. Project Infrastructure ✅
- Gradle build system configured
- Android Studio project structure
- Dependencies: Jetpack Compose, Room, WebView, Coil
- Build configurations (debug/release)
- ProGuard rules
2. UI Layer ✅
Theme System
- Material Design 3 color scheme (light/dark)
- Custom glassmorphism color palette
- Typography system
- Dynamic theming support
Glass Components (ui/components/GlassComponents.kt)
GlassCard- Frosted glass cards with blurFrostedGlassPanel- Elevated glass panelsGlassBackground- Animated gradient backgroundsShimmerGlass- Shimmer effect surfacesGlassButton- Floating glass buttons
Launcher Screen (ui/launcher/LauncherScreen.kt)
- Grid-based app layout
- Empty state with add prompt
- Glass-styled top bar
- Floating action button
- App cards with icons
3. Data Layer ✅
Room Database
PwaAppentity with full schemaPwaAppDaowith CRUD operationsPwaDatabasesingleton- Migration support
Repository Pattern
PwaRepositoryfor data access- URL-based installation
- Last accessed tracking
- App count queries
4. WebView Container ✅
WebViewActivity (ui/webview/WebViewActivity.kt)
- Full-screen PWA container
- Intent-based navigation
- Edge-to-edge display
WasmWebView (ui/webview/WasmWebView.kt)
- JavaScript enabled
- WASM support configured
- DOM storage for PWAs
- Offline caching
- Service Worker support
- Progress indicators
- Back navigation
- Console logging
- Custom user agent
5. Business Logic ✅
LauncherViewModel
- StateFlow for reactive updates
- App list management
- Add/delete operations
- Last accessed tracking
- Sample app generation
MainActivity
- Compose integration
- Navigation to WebView
- Add app dialog
- Settings placeholder
📁 Project Structure
SilverDROID/
├── app/
│ ├── build.gradle.kts # App-level Gradle config
│ ├── proguard-rules.pro # ProGuard rules
│ └── src/main/
│ ├── AndroidManifest.xml # App manifest
│ ├── kotlin/uk/silverlabs/silverdroid/
│ │ ├── MainActivity.kt # Entry point
│ │ ├── ui/
│ │ │ ├── launcher/
│ │ │ │ ├── LauncherScreen.kt # Main screen UI
│ │ │ │ └── LauncherViewModel.kt # Screen logic
│ │ │ ├── webview/
│ │ │ │ ├── WebViewActivity.kt # PWA container
│ │ │ │ └── WasmWebView.kt # WebView component
│ │ │ ├── components/
│ │ │ │ └── GlassComponents.kt # Reusable glass UI
│ │ │ └── theme/
│ │ │ ├── Color.kt # Color palette
│ │ │ ├── Theme.kt # Theme config
│ │ │ └── Type.kt # Typography
│ │ ├── data/
│ │ │ ├── model/
│ │ │ │ └── PwaApp.kt # App entity
│ │ │ ├── repository/
│ │ │ │ └── PwaRepository.kt # Data access
│ │ │ ├── PwaDatabase.kt # Room database
│ │ │ └── PwaAppDao.kt # Database queries
│ │ └── webview/ # (Reserved)
│ └── res/
│ ├── values/
│ │ ├── strings.xml # String resources
│ │ ├── colors.xml # XML colors
│ │ └── themes.xml # XML themes
│ └── xml/
│ ├── backup_rules.xml # Backup config
│ └── data_extraction_rules.xml # Data rules
├── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties # Gradle wrapper config
├── build.gradle.kts # Root Gradle config
├── settings.gradle.kts # Project settings
├── gradle.properties # Gradle properties
├── .gitignore # Git ignore rules
├── README.md # User documentation
├── BUILD.md # Build instructions
└── PROJECT_SUMMARY.md # This file
🎨 Design Philosophy
Glassmorphism
Inspired by modern UI trends and SilverPOWERSHELL:
- Semi-transparent surfaces
- Soft background blurs
- Layered depth (frosted glass effect)
- Subtle borders and gradients
- Light/dark theme support
Material Design 3
- Dynamic color system
- Adaptive theming
- Modern component library
- Accessibility compliant
🚀 Technology Choices
Why Jetpack Compose?
- Modern declarative UI (like Svelte in SilverPOWERSHELL)
- Type-safe builders
- Built-in animation support
- Material Design 3 native support
- Better performance than XML layouts
Why Room?
- Type-safe database queries
- Compile-time verification
- Flow-based reactive updates
- Clean API
Why WebView?
- Native PWA support
- Full WASM compatibility
- Service Worker support
- Offline capabilities
- Chrome engine (Chromium-based)
📊 Performance Considerations
Optimizations Implemented
- WebView: Hardware acceleration enabled
- Database: Flow-based reactive queries (no polling)
- UI: Compose lazy grid (virtualization)
- Images: Coil library for async loading
- Build: ProGuard for release builds
Memory Management
- Singleton database pattern
- ViewModel lifecycle awareness
- Proper coroutine scoping
- WebView cleanup on destroy
🔒 Security
Permissions Required
INTERNET- For loading PWAsACCESS_NETWORK_STATE- Network detectionPOST_NOTIFICATIONS- PWA push notifications- Storage (SDK < 33) - Offline caching
ProGuard Rules
- Keep WebView JavaScript interfaces
- Keep Room entities
- Keep serialization classes
- Protect Compose internals
🎯 Feature Parity with SilverPOWERSHELL
| Feature | SilverPOWERSHELL | SilverDROID |
|---|---|---|
| Modern UI Framework | Svelte 5 | Jetpack Compose |
| Glass Effects | CSS blur/transparency | Compose graphics |
| Native Container | Electron | Android Native |
| Web Engine | Chromium (Electron) | Chromium (WebView) |
| Offline Support | ✅ | ✅ |
| App Management | File system | Room Database |
| Launcher Grid | ❌ | ✅ |
| WASM Support | ✅ | ✅ |
🔮 Future Enhancements
Planned Features (Not Yet Implemented)
-
Manifest Parsing
- Auto-fetch PWA manifest.json
- Extract icons, colors, display mode
- Parse capabilities
-
Icon Management
- Download and cache app icons
- Generate fallback icons
- Icon pack support
-
Settings Screen
- Theme selection
- Default display mode
- Cache management
- Debug options
-
Categories/Tags
- Custom app categorization
- Filter by tags
- Sort options
-
Widgets
- Quick launch widgets
- App shortcuts
- Recent apps widget
-
Notifications
- PWA push notification forwarding
- Notification channels
- Notification settings
-
Search
- Search installed apps
- Quick launch by name
- Recent searches
-
Backup/Restore
- Export app list
- Cloud backup
- Import from JSON
🔧 Build System
Gradle Configuration
- Kotlin DSL: Modern type-safe build scripts
- Version Catalog: Centralized dependency management
- KSP: Kotlin Symbol Processing for Room
- Build Cache: Faster subsequent builds
- Configuration Cache: Gradle optimization
Build Variants
- Debug: Fast iteration, WebView debugging
- Release: Optimized, obfuscated, signed
📱 Minimum Requirements
- Min SDK: 26 (Android 8.0 Oreo)
- Target SDK: 35 (Android 15)
- Compile SDK: 35
- JDK: 17
- Gradle: 8.9
- Kotlin: 2.1.0
🎓 Learning from SilverPOWERSHELL
Adapted Concepts
- Glass UI Components → Compose equivalents
- Sidebar/Panel Layout → Top bar + FAB
- Terminal Integration → WebView container
- Plugin System → PWA apps as "plugins"
- Project Context → App metadata in database
Key Differences
- Platform: Desktop (Electron) vs Mobile (Android)
- Architecture: Node.js + Svelte vs Kotlin + Compose
- Distribution: Standalone exe vs APK/AAB
- Use Case: Developer tool vs App launcher
✅ Ready for Development
The project is now fully scaffolded and ready for:
- Opening in Android Studio
- Building (debug/release)
- Running on device/emulator
- Adding new features
- GitLab integration
Next Steps for Developer
- Open project in Android Studio
- Sync Gradle dependencies
- Create AVD or connect device
- Run the app (▶️ button)
- Test adding a PWA (e.g., twitter.com)
- Explore glassmorphism effects
Built with ❤️ by SilverLABS Inspired by SilverPOWERSHELL's Electron + Svelte architecture