A web-based password manager built with Python, Flask, and MySQL. SecureVault lets users securely store, manage, and organize their credentials — from everyday social media logins to sensitive banking details — with AES-256 encryption and tiered security levels.
- AES-256 Encryption — all passwords and sensitive fields are encrypted at rest
- Credential Tiers — security levels (critical, high, medium, low) with different re-auth and clipboard rules per type
- Bank Credentials — dedicated storage for account numbers, card details, and PINs, encrypted separately from login passwords
- Session Management — token-based sessions with expiry
- Audit Logging — every action on the vault is logged per user
- Failed Login Tracking — logs wrong master password attempts with IP and timestamp
- Password History — old passwords are retained (encrypted) every time a vault entry is updated
- User Preferences — per-user settings for auto-logout, clipboard timeout, and theme
| Layer | Technology |
|---|---|
| Backend | Python, Flask |
| Database | MySQL |
| Encryption | AES-256 (PyCryptodome) |
| Templating | Jinja2 |
The schema includes the following tables:
users— registered accounts with hashed master passwordscredential_types— predefined categories with security tiersvault— core credential storage linked to a user and typebank_credentials— extended encrypted fields for banking entriesfailed_login_attempts— brute force trackingpassword_history— historical encrypted passwords per vault entryuser_preferences— per-user app settingssessions— active session tokens with expiryaudit_log— full action history per user and vault entry
securevault/
├── app.py
├── securevault.sql
├── templates/
│ ├── base.html
│ ├── login.html
│ ├── dashboard.html
│ └── vault.html
├── static/
└── requirements.txt
| Name | GitHub |
|---|---|
| Maaz Arshad Akhund | @maaz2417 |
| Bushra Asad | @11bushraasad |
Database Systems Lab — BS Software Engineering, 4th Semester
Institute of Management Sciences (IMSciences), Peshawar
This project is for academic purposes only.