4.7 KiB
🚀 Password Manager
A small Tkinter password manager that generates passwords, saves them in a JSON file and searches them by website. It is the day 30 assignment of Udemy's "100 Days of Code: The Complete Python Pro Bootcamp", written for course participants and for anyone who browses the repository for ideas.
📚 Table of Contents
🧭 Overview
The program follows the three lectures of the assignment:
- JSON storage. Each entry is saved as a nested record
(
website → email, password) indata.jsonwithjson.dump, and the existing data is loaded and updated before a new entry is added. - Exception handling. A missing, empty or damaged data file does not stop the program; the file is created or repaired on the next save.
- Search. Type a website and press Search to see the saved e-mail and password, or a message when nothing is saved for it.
The assignment's function names are kept: generate_password, save and
find_password.
| Path | What it holds |
|---|---|
src/password_manager/ |
The program: domain rules, use cases, JSON storage and the Tkinter window |
src/password_manager/constants.py |
Every constant (file name, labels, messages, password length bounds) |
tests/ |
The pytest tests |
docs/ |
Project documents, the Doxygen output folder and the wiki in docs/wiki/ |
Doxyfile |
Doxygen configuration for the source comments |
pyproject.toml |
Project configuration (Python version, entry point, pytest) |
Security note. The data file is plain JSON and the passwords are not encrypted. The program is a learning exercise; do not use it for real passwords.
📋 Requirements
- Python 3.13 or newer, with Tkinter (the standard Windows and macOS installers
include it; on Debian or Ubuntu install
python3-tk). venvandpip, both part of Python.- No runtime dependencies. pytest is needed only to run the tests.
- Optional: Doxygen to build the source documentation.
🛠️ Setup
Create and activate a local virtual environment, upgrade pip, then install
the project with its test dependency.
Windows (PowerShell):
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
Linux and macOS:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[dev]"
▶️ Run
With the virtual environment active:
python -m password_manager
or, after the install above, password-manager. The program creates data.json
in the folder you start it from. Build the source documentation with
doxygen Doxyfile; the HTML opens at docs/doxygen/html/index.html.
🧪 Tests
python -m pytest
📄 License
See LICENSE.
🔗 Links
📎 Appendix: Project documents
The documents a newcomer needs, in reading order.
| Document | What it tells you |
|---|---|
| Business Case | Why the project exists, its scope and success criteria |
| Stakeholder Analysis | Who is involved; the stakeholder IDs used for owners and reviewers |
| Project Plan | The gateways and their schedule |
| Milestones | One document per gateway: Go/No-Go criteria and tasks |
| Artifact registry | Where each artifact type lives, the next version, the PO language and domain |
| Domain dictionary | The PO terms and the IT terms |
| Traceability matrix | How the artifacts link and when each was last reviewed |
| Framework README | The framework this project uses |
| Framework changelog | What changed in each framework release |