- Kotlin 99.7%
- Ruby 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github | ||
| app | ||
| docs | ||
| fastlane | ||
| gradle | ||
| .gitignore | ||
| build.gradle.kts | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| PRIVACY_POLICY.md | ||
| README.md | ||
| SECURITY.md | ||
| settings.gradle.kts | ||
| signing.properties.example | ||
NexPass
Secure, Open-Source Android Password Manager with Nextcloud Sync
NexPass is a privacy-focused Android password manager with zero-knowledge encryption, designed for users who self-host Nextcloud. It combines robust security with seamless OS-level autofill integration and offline-first architecture.
Features
Security & Privacy
- Zero-Knowledge Encryption: Master password never leaves your device
- AES-256-GCM Encryption: Military-grade encryption for all stored passwords
- Hardware-Backed Security: Android Keystore integration
- Biometric Authentication: Fingerprint/Face unlock support
- Auto-Lock: Configurable timeout (1/5/15/30 minutes)
- Encrypted Database: SQLCipher-encrypted local storage
- PBKDF2 Key Derivation: 100,000 iterations for master password
Core Functionality
- Full CRUD Operations: Create, read, update, delete passwords
- Intelligent Password Generator: Character-based and passphrase modes
- Folder Organization: Categorize passwords into folders
- Tag System: 16-color tags for flexible organization
- Favorites: Quick access to frequently used passwords
- Search: Fast password search across all fields
- Export/Import: Encrypted backup and restore
Nextcloud Integration
- Two-Way Sync: Seamless synchronization with Nextcloud Passwords
- Offline-First: Works without internet, syncs when available
- Conflict Resolution: Smart last-write-wins algorithm
- Pending Queue: Offline changes synced automatically
- Zero-Knowledge Upload: Passwords encrypted before transmission
Android Integration
- Autofill Service: System-wide password autofill
- Intelligent Matching: Domain, package, and fuzzy matching
- Auto-Save: Capture new credentials automatically
- Material 3 UI: Modern, clean interface with dark/light themes
- Deep Linking: Direct navigation to specific passwords
Quick Start
Prerequisites
- Android Studio: Hedgehog (2023.1.1) or newer
- JDK: 17 or higher
- Android SDK: API 29+ (Android 10+)
- Gradle: 8.2+ (included via wrapper)
Clone & Build
# Clone the repository
git clone https://github.com/codegax/nexpass.git
cd nexpass
# Build debug APK
./gradlew assembleDebug
# Run on connected device/emulator
./gradlew installDebug
# Run tests
./gradlew test
Build Variants
-
Debug: Development build with debugging enabled
- Package:
com.nexpass.passwordmanager.debug - Suffix:
-debug
- Package:
-
Release: Production build with ProGuard optimization
- Package:
com.nexpass.passwordmanager - Requires signing configuration
- Package:
Architecture
Tech Stack
- Language: 100% Kotlin
- UI Framework: Jetpack Compose + Material 3
- Architecture: Clean Architecture + MVVM
- Database: Room + SQLCipher (encrypted)
- Network: Ktor Client (HTTPS only)
- Security: Android Keystore + BiometricPrompt
- Dependency Injection: Koin
- Testing: JUnit, Coroutines Test
Project Structure
app/src/main/java/com/nexpass/passwordmanager/
âââ autofill/ # Android AutofillService implementation
â âââ matcher/ # Domain/package matching logic
â âââ service/ # AutofillService & response builder
â âââ ui/ # Autofill unlock prompt
âââ data/ # Data layer (repositories, DAOs, network)
â âââ local/ # Room database, DAOs, entities
â âââ network/ # Nextcloud API client
â âââ repository/ # Repository implementations
âââ di/ # Koin dependency injection modules
âââ domain/ # Business logic layer
â âââ model/ # Domain models
â âââ repository/ # Repository interfaces
â âââ usecase/ # Use cases (export/import)
âââ security/ # Core security layer
â âââ biometric/ # Biometric authentication
â âââ encryption/ # AES-256-GCM crypto operations
â âââ keystore/ # Android Keystore management
â âââ vault/ # In-memory vault key management
âââ ui/ # Presentation layer
â âââ components/ # Reusable Compose components
â âââ navigation/ # Navigation graph
â âââ screens/ # Screen composables
â âââ theme/ # Material 3 theme
â âââ viewmodel/ # ViewModels
â âââ lifecycle/ # Auto-lock manager
âââ util/ # Utilities (retry policy, network monitor)
Security Architecture
Master Password
â
PBKDF2 (100k iterations)
â
Vault Key (AES-256)
â
Encrypted by Keystore Master Key
â
Stored in Encrypted SharedPreferences
â
Used to encrypt/decrypt passwords
â
SQLCipher Database
Development
Running Tests
# Unit tests
./gradlew test
# Unit tests with coverage
./gradlew testDebugUnitTest
# Lint checks
./gradlew lint
# All checks
./gradlew check
Code Style
This project follows Kotlin Coding Conventions:
- 4 spaces for indentation
- Max line length: 120 characters
- Explicit types for public APIs
- Meaningful variable names
Git Workflow
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
Documentation
User Documentation
- docs/USER_GUIDE.md: End-user installation and usage
- docs/NEXTCLOUD_SETUP.md: Nextcloud integration guide
- docs/TROUBLESHOOTING.md: Common issues and fixes
Developer Documentation
For detailed technical documentation, see the ../NexPassClaude/ directory:
- Architecture specifications
- API contracts
- Build instructions
- Setup guides
Security
Reporting Vulnerabilities
Please report security vulnerabilities to [email protected] or via GitHub Security Advisories.
See SECURITY.md for our security policy.
Security Features
- Master password hashed with PBKDF2 (100,000 iterations)
- All passwords encrypted with AES-256-GCM
- Encryption keys protected by Android Keystore
- Database encrypted with SQLCipher
- HTTPS-only network communication
- Zero-knowledge architecture (server never sees plaintext)
- Biometric authentication with hardware backing
- Secure memory wiping for sensitive data
- ProGuard obfuscation in release builds
Contributing
We welcome contributions! Please see CONTRIBUTING.md for:
- Code of conduct
- Development setup
- Testing requirements
- Pull request process
- Code review guidelines
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Key Points
- â Free to use, modify, and distribute
- â Source code must remain open
- â Changes must be documented
- â Same license for derivatives
Acknowledgments
- Nextcloud Passwords: Backend API integration
- Android Open Source Project: Platform foundation
- Jetpack Compose: Modern UI framework
- SQLCipher: Database encryption
- Community Contributors: Bug reports and feature requests
Roadmap
v1.0.0 (Current - Release Candidate)
- Core password management
- Nextcloud sync
- Autofill service
- Folder & tag organization
v1.1.0 (Planned)
- Folder sync with Nextcloud
- Background sync worker
- Password history
- Biometric re-auth for sensitive actions
v1.2.0 (Future)
- TOTP/2FA code generation
- Custom fields support
- Password sharing
- Breach monitoring
v2.0.0 (Vision)
- Multi-account support
- Passkey/WebAuthn support
- Browser extension
- Desktop clients (Linux, Windows, macOS)
Support
- Documentation: See
docs/directory - Issues: GitHub Issues
- Discussions: GitHub Discussions
- Contact: [email protected]
Built with â¤ï¸ for privacy and security