A web-based password manager built with Django and Python. Passwords are encrypted using a unique key per user, nothing is ever stored in plain text.
- Sign up / Login / Logout - Standard user authentication
- Encrypted Vault - Add, view, edit, and delete password entries (website, username/email, password, note)
- Per-User Encryption - Each account has its own Fernet symmetric encryption key
- CSV Import / Export - Bulk import or export your passwords as a
.csvfile - Account Settings - Change your master password or delete your account
- Strong Password Enforcement - 12+ chars, upper, lower, digit, special character, no spaces
- Backend: Django 5.2 (Python 3)
- Database: SQLite3
- Encryption:
cryptographylibrary (Fernet) - Frontend: HTML / CSS / JavaScript
Requirements: Python 3.10+, pip
# 1. Clone the repo
git clone https://github.com/RyanLam462/Password-Encryption-manager-python.git
cd Password-Encryption-manager-python
# 2. Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
# 3. Install dependencies
pip install django cryptography
# 4. Run migrations and start the server
cd password_manager
python manage.py migrate
python manage.py runserverThen open http://127.0.0.1:8000/ in your browser.
On sign-up, a unique Fernet key is generated and saved to the user's profile. Passwords are encrypted before being written to the database and decrypted in memory when accessed, plain text is never stored.
The imported file must have this exact header:
Website,Username/Email,Password,Note
Rows with missing required fields or duplicate entries are skipped automatically.
This project is for local development only (
DEBUG = True).
Before deploying to production:
- Set
DEBUG = Falseand moveSECRET_KEYto an environment variable - Configure
ALLOWED_HOSTSand use HTTPS - Switch to a production database (e.g. PostgreSQL)