A secure, modern password manager built with Kotlin and Jetpack Compose for Android.
- π AES-256-GCM Encryption - Military-grade security for all passwords
- π± Modern UI - Clean Material 3 design with Jetpack Compose
- π Search Functionality - Quickly find passwords with real-time search
- π² Password Generator - Create strong, customizable passwords
- π Complete CRUD - Add, view, edit, and delete password entries
- ποΈ Clean Architecture - MVVM pattern with Repository design
- πΎ Local Storage - Secure offline storage with Room database
- π¨ Dark/Light Theme - Automatic system theme support
- Android Studio Giraffe (2022.3.1) or newer
- Minimum SDK 24 (Android 7.0)
- Target SDK 34 (Android 14)
- Kotlin 1.9.0+
- Kotlin - Primary programming language
- Jetpack Compose - Modern Android UI toolkit
- Room Database - Local data persistence
- Navigation Component - In-app navigation
- ViewModel & LiveData - MVVM architecture
- EncryptedSharedPreferences - Secure key storage
- AES-256-GCM - Symmetric encryption
- SecureRandom - Cryptographically secure random generation
// Core Android
androidx.core:core-ktx:1.12.0
androidx.lifecycle:lifecycle-runtime-ktx:2.7.0
androidx.activity:activity-compose:1.8.2
// Jetpack Compose
androidx.compose.ui:ui:1.5.8
androidx.compose.material3:material3:1.1.2
androidx.navigation:navigation-compose:2.7.6
// Room Database
androidx.room:room-runtime:2.6.1
androidx.room:room-ktx:2.6.1
// Security
androidx.security:security-crypto:1.1.0-alpha06
androidx.biometric:biometric:1.1.0app/src/main/java/com/yourname/passwordmanager/
βββ data/
β βββ dao/
β β βββ PasswordDao.kt # Database access object
β βββ database/
β β βββ PasswordDatabase.kt # Room database setup
β βββ model/
β βββ PasswordEntry.kt # Data model
βββ navigation/
β βββ Navigation.kt # App navigation
βββ repository/
β βββ PasswordRepository.kt # Data repository
βββ security/
β βββ CryptoManager.kt # Encryption/decryption
βββ ui/
β βββ component/
β β βββ PasswordItem.kt # Reusable UI components
β βββ screen/
β β βββ AddEditPasswordScreen.kt # Add/edit password screen
β β βββ MainScreen.kt # Main password list screen
β βββ theme/
β β βββ Color.kt # App colors
β β βββ Theme.kt # Material theme
β β βββ Type.kt # Typography
β βββ viewmodel/
β βββ PasswordViewModel.kt # UI state management
βββ MainActivity.kt # Entry point
- Tap the "+" floating action button
- Fill in the required fields (Title, Username, Password)
- Optionally add website and notes
- Tap "Save"
- In the add/edit screen, tap the refresh icon next to password field
- Customize length and character types
- Tap "Generate" to create a secure password
- Use the search bar on the main screen
- Search by title, username, or website
- Results update in real-time
- Tap on any password entry
- Edit the information as needed
- Tap "Update" to save changes
- Use "Delete" button to remove entry
- AES-256-GCM encryption for all passwords
- Unique encryption keys per app installation
- Encrypted SharedPreferences for key storage
- No plaintext storage anywhere in the app
- Passwords are encrypted before database storage
- Encryption keys are generated using Android Keystore
- Secure random password generation
- Memory is cleared after use
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTestThe project includes:
- Unit tests for ViewModels
- Repository tests with mock data
- Encryption/decryption tests
- UI tests for critical user flows
./gradlew assembleDebug./gradlew assembleReleaseFor release builds, add signing configuration to build.gradle.kts:
signingConfigs {
create("release") {
keyAlias = "your-key-alias"
keyPassword = "your-key-password"
storeFile = file("path/to/your/keystore.jks")
storePassword = "your-store-password"
}
}Gradle Sync Failed
- Check internet connection
- Try "File" β "Sync Project with Gradle Files"
- Clear cache: "File" β "Invalidate Caches and Restart"
Encryption Errors
- Ensure target device supports the required encryption
- Check Android version compatibility (minimum API 24)
Room Database Issues
- Clear app data if schema changes
- Check entity annotations are correct
- Check Android Studio's error messages
- Review logcat for runtime issues
- Verify all dependencies are properly imported
- Ensure proper package names throughout the project
β
Modular Design - Clean separation of concerns
β
Modern Architecture - MVVM with Repository pattern
β
Security Implementation - Industry-standard encryption
β
User Experience - Intuitive Material 3 design
β
Data Persistence - Robust local database storage
β
Error Handling - Comprehensive exception management
β
Code Quality - Well-documented, maintainable code
Happy Coding! π