The worker exited early when the DB was empty (fresh installs via browser). Now upserts a self-record for slug='silverdroid' before the isEmpty guard so update notifications fire even when no other apps have been installed via the AppStore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
SilverDROID
Android WASM/PWA Launcher with Glassmorphism UI
A modern Android launcher application for Progressive Web Apps (PWAs) and WebAssembly (WASM) applications, featuring a beautiful glassmorphism design inspired by SilverPOWERSHELL.
✨ Features
Core Functionality
- 🚀 PWA Launcher - Install and manage Progressive Web Apps
- 🌐 WASM Support - Full WebAssembly support via optimized WebView
- 📱 Native Container - PWAs run in a native Android wrapper
- 💾 Offline Support - Apps work offline with cached resources
- 🔔 Notifications - PWA push notification forwarding
Beautiful UI
- ✨ Glassmorphism Design - Frosted glass effects throughout
- 🎨 Material Design 3 - Modern Android design language
- 🌓 Dynamic Theming - Adapts to system theme (light/dark)
- 🖼️ App Grid - Beautiful card-based launcher grid
- 💫 Smooth Animations - Fluid transitions and effects
Technical
- ⚡ Jetpack Compose - Modern declarative UI
- 🏗️ Clean Architecture - MVVM + Repository pattern
- 💿 Room Database - Efficient local app storage
- 🔧 WebView Optimization - Enhanced for WASM/PWA performance
🎯 Technology Stack
- Language: Kotlin
- UI Framework: Jetpack Compose + Material Design 3
- WebView: Android System WebView (Chromium)
- Database: Room Persistence Library
- Architecture: MVVM with Clean Architecture
- Min SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
🏗️ Architecture
SilverDROID/
├── ui/
│ ├── launcher/ # Main launcher screen
│ │ ├── LauncherScreen.kt
│ │ └── LauncherViewModel.kt
│ ├── webview/ # PWA container
│ │ ├── WebViewActivity.kt
│ │ └── WasmWebView.kt
│ ├── components/ # Reusable glass components
│ │ └── GlassComponents.kt
│ └── theme/ # Material Design 3 theme
│ ├── Color.kt
│ ├── Theme.kt
│ └── Type.kt
├── data/
│ ├── model/ # Data models
│ │ └── PwaApp.kt
│ ├── repository/ # Data repositories
│ │ └── PwaRepository.kt
│ ├── PwaDatabase.kt # Room database
│ └── PwaAppDao.kt # DAO interface
└── MainActivity.kt # App entry point
🚀 Getting Started
Prerequisites
- Android Studio Ladybug (2024.2.1) or later
- JDK 17 or later
- Android SDK 26+
Building the Project
-
Clone the repository
git clone https://gitlab.silverlabs.uk/SilverLABS/silverdroid.git cd silverdroid -
Open in Android Studio
- Open Android Studio
- File → Open → Select the
SilverDROIDfolder
-
Sync Gradle
- Android Studio will automatically sync Gradle dependencies
- Wait for the sync to complete
-
Run the app
- Connect an Android device or start an emulator
- Click the "Run" button (▶️) in Android Studio
Quick Start Commands
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Install on connected device
./gradlew installDebug
# Run tests
./gradlew test
📦 Building for Production
-
Generate a signing key (first time only)
keytool -genkey -v -keystore silverdroid.keystore \ -alias silverdroid -keyalg RSA -keysize 2048 -validity 10000 -
Configure signing in
app/build.gradle.ktsandroid { signingConfigs { create("release") { storeFile = file("../silverdroid.keystore") storePassword = "your_password" keyAlias = "silverdroid" keyPassword = "your_password" } } } -
Build release APK
./gradlew assembleRelease -
Output location
app/build/outputs/apk/release/app-release.apk
🎨 Glassmorphism Components
SilverDROID includes custom glassmorphism components:
GlassCard
GlassCard(
modifier = Modifier.fillMaxWidth(),
cornerRadius = 16.dp
) {
Text("Frosted glass card")
}
FrostedGlassPanel
FrostedGlassPanel(
cornerRadius = 20.dp
) {
// Your content
}
GlassBackground
GlassBackground() // Gradient background
📱 Adding Apps
Manually
- Tap the + button
- Enter the PWA URL (e.g.,
https://twitter.com) - Optionally enter a custom name
- Tap Add
Sample Apps
The app includes sample PWAs you can add:
- Twitter (mobile.twitter.com)
- Spotify (open.spotify.com)
- YouTube (m.youtube.com)
- WebAssembly Demo (webassembly.org/demo)
🔧 WebView Configuration
SilverDROID's WebView is optimized for PWA/WASM:
- ✅ JavaScript enabled
- ✅ DOM Storage enabled
- ✅ Database storage enabled
- ✅ App cache enabled
- ✅ Mixed content allowed (dev)
- ✅ File access enabled
- ✅ Wide viewport support
- ✅ WebAssembly support
🤝 Contributing
Contributions are welcome! This is a SilverLABS project.
📄 License
Copyright © 2025 SilverLABS. All rights reserved.
🆘 Support
For issues or questions:
- GitLab Issues: https://gitlab.silverlabs.uk/SilverLABS/silverdroid/issues
- SilverLABS Infrastructure: See
~/.claude/Knowledge/
🎉 Credits
Built with ❤️ by SilverLABS
Inspired by:
- SilverPOWERSHELL - Electron + Svelte architecture
- Material Design 3 - Google's design system
- Glassmorphism - Modern UI trend
Note: This launcher is designed for PWAs and WASM apps. Regular Android apps from Google Play Store are not supported.