Skip to content

abhishukla0204/Password_Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Password Manager Android App πŸ”

A secure, modern password manager built with Kotlin and Jetpack Compose for Android.

πŸš€ Features

  • πŸ”’ 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

πŸ“‹ Requirements

  • Android Studio Giraffe (2022.3.1) or newer
  • Minimum SDK 24 (Android 7.0)
  • Target SDK 34 (Android 14)
  • Kotlin 1.9.0+

πŸ› οΈ Tech Stack

Core Technologies

  • Kotlin - Primary programming language
  • Jetpack Compose - Modern Android UI toolkit
  • Room Database - Local data persistence
  • Navigation Component - In-app navigation
  • ViewModel & LiveData - MVVM architecture

Security

  • EncryptedSharedPreferences - Secure key storage
  • AES-256-GCM - Symmetric encryption
  • SecureRandom - Cryptographically secure random generation

Dependencies

// 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.0

πŸ“ Project Structure

app/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

πŸ’‘ How to Use

Adding a Password

  1. Tap the "+" floating action button
  2. Fill in the required fields (Title, Username, Password)
  3. Optionally add website and notes
  4. Tap "Save"

Generating Secure Passwords

  1. In the add/edit screen, tap the refresh icon next to password field
  2. Customize length and character types
  3. Tap "Generate" to create a secure password

Searching Passwords

  1. Use the search bar on the main screen
  2. Search by title, username, or website
  3. Results update in real-time

Editing/Deleting

  1. Tap on any password entry
  2. Edit the information as needed
  3. Tap "Update" to save changes
  4. Use "Delete" button to remove entry

πŸ”’ Security Features

Encryption

  • 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

Best Practices

  • Passwords are encrypted before database storage
  • Encryption keys are generated using Android Keystore
  • Secure random password generation
  • Memory is cleared after use

πŸ§ͺ Testing

Running Tests

# Unit tests
./gradlew test

# Instrumented tests
./gradlew connectedAndroidTest

Test Coverage

The project includes:

  • Unit tests for ViewModels
  • Repository tests with mock data
  • Encryption/decryption tests
  • UI tests for critical user flows

πŸš€ Deployment

Debug Build

./gradlew assembleDebug

Release Build

./gradlew assembleRelease

Signing Configuration

For 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"
    }
}

πŸ”§ Troubleshooting

Common Issues

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

Getting Help

  1. Check Android Studio's error messages
  2. Review logcat for runtime issues
  3. Verify all dependencies are properly imported
  4. Ensure proper package names throughout the project

πŸ“š Learning Resources

🎯 Project Objectives Met

βœ… 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! πŸš€

About

A secure, modern, and offline-first password manager built with Kotlin and Jetpack Compose. This application is designed as a comprehensive showcase of modern Android development practices.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages