A secure password manager with both command-line and web interfaces, built with Python.
- Secure password storage using Fernet symmetric encryption
- SQLite database for persistence
- Command-line interface with Click
- Web-based graphical user interface with Flask
- Password generation
- CRUD operations: Add, Get, Update, Delete, List passwords
-
Clone the repository:
git clone https://github.com/yourusername/pyvault.git cd pyvault -
Install dependencies:
pip install -r requirements.txt
-
(Optional) Install for development:
pip install -e .
Start the web application:
python -m pyvault.webThen open your browser to http://127.0.0.1:5000 to access the user-friendly web interface.
Initialize the database (first time only):
python -m pyvault.cliAdd a password:
pyvault addGet a password:
pyvault getUpdate a password:
pyvault updateDelete a password:
pyvault deleteList all services:
pyvault listGenerate a password:
pyvault generate --length 16- Passwords are encrypted using Fernet (AES 128) before storage.
- The encryption key is stored in
secret.key(keep this secure!). - Uses
secretsmodule for password generation.
Run tests with pytest:
pytestpyvault/
├── src/pyvault/
│ ├── __init__.py
│ ├── cli.py
│ ├── database.py
│ ├── encryption.py
│ ├── models.py
│ └── utils.py
├── tests/
│ ├── __init__.py
│ ├── test_cli.py
│ ├── test_database.py
│ ├── test_encryption.py
│ ├── test_models.py
│ └── test_utils.py
├── .gitignore
├── LICENSE
├── README.md
├── requirements.txt
└── setup.py
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.