Secure, Local, and Simple Password Storage
A local password manager built with Python Flask that securely hashes your credentials, backs them up, and gives you full control via a modern web dashboard.
The Password Manager System is a secure, locally-hosted web app that lets users register, log in, and manage their credentials in one place. Passwords are hashed, not stored in plain text, and users can add, edit, delete, and copy them from a beautiful dashboard. All actions are logged, and a JSON backup is automatically created for added reliability.
- π User Registration & Login
- π§ Unique User ID System
- π§Ύ Hashed Password Storage (SHA256)
- πΎ Automatic Backup File (JSON)
- π‘οΈ Secure Deletion with Re-Authentication
- π Password Count, Audit Log, and Dashboard
- βοΈ Copy, Edit, and Delete Stored Passwords
graph TD
A[Visit App] --> B{Is User Registered?}
B -- Yes --> C[Login]
B -- No --> D[Register]
D --> E[Generate Unique User ID]
C --> F[Fetch User ID from MySQL]
F --> G[Display Dashboard]
G --> H[View Passwords]
G --> I[Add New Password]
G --> J[Edit/Copy/Delete]
I --> K[Hash + Store in DB]
K --> L[Update Xlsx Backup & Logs]
J --> M{User Verified?}
M -- Yes --> N[Delete/Edit Action]
N --> L
| Layer | Tech/Tool |
|---|---|
| Backend | |
| Frontend | |
| Database | |
| Logging & Backup | Local logs/, backup/passwords.json |
password-manager-system/
β
βββ static/ # CSS, JS files
βββ templates/ # Flask HTML templates
βββ password_backup.xlsx # Auto-generated xlsx backups
βββ password_manager.log # Logs of user activity
βββ app.py # Main Flask app
βββ requirements.txt # Python dependencies
βββ README.md
- Python 3.8+
- MySQL Server
- pip (
pip install -r requirements.txt)
# Clone the repo
git clone https://github.com/yourusername/password-manager-system.git
cd password-manager-system
# Create virtual environment (optional)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt-
CREATE DATABASE password_manager;
CREATE TABLE users (
id CHAR(36) NOT NULL PRIMARY KEY,
username VARCHAR(255) NOT NULL UNIQUE,
password_hash VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);| Field | Type | Key | Description |
|---|---|---|---|
id |
char(36) |
Primary Key | UUID for each user |
username |
varchar(255) |
Unique | Unique username |
password_hash |
varchar(255) |
SHA256 hashed password | |
created_at |
timestamp |
Account creation time |
CREATE TABLE passwords (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
salt VARCHAR(255) NOT NULL,
username VARCHAR(255) NOT NULL,
password_hash TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
user_id CHAR(36),
FOREIGN KEY (user_id) REFERENCES users(id)
);| Field | Type | Key | Description |
|---|---|---|---|
id |
int |
Primary Key | Auto-incremented ID for each password entry |
salt |
varchar(255) |
Salt used in AES encryption | |
username |
varchar(255) |
Username of the app/site account | |
password_hash |
text |
Encrypted (hashed + AES) password | |
created_at |
timestamp |
Entry creation time | |
user_id |
char(36) |
Foreign Key | Links to the users table via users.id |
users.id (char[36]) βββ passwords.user_id (char[36])
[1 User] β [Many Passwords]
python app.pyVisit: http://localhost:5000
- All passwords are SHA256 hashed
- User authentication required for all operations
- Deletion is double-verified
- Regular logs and JSON backups maintained locally
- π Export encrypted vault
- π² Mobile-friendly UI
- π Add 2FA/MFA login option
- π Insights: weak vs strong password detection
Made with π€ by Shivam Prasad π Connect: LinkedIn
This project is licensed under the MIT License.
β Star the repo if you like it. Pull requests and feedback welcome!
