This project wasn't built to be a production-ready password manager or to impress anyone. Its purpose was simple: to help me become comfortable with Python.
I'm coming from a background in C and Java, and over the summer I wanted to learn Python properly rather than just reading about it. After working through a 12-hour Python course, I decided the best way to learn was by building something from scratch instead of following more tutorials.
The application is intentionally simple and stores its data in a JSON file instead of using a real database. I know that's not how a real password manager would be built, but using JSON allowed me to understand file handling, serialization, and working with structured data while keeping everything as transparent as possible.
During this project I explored and became more comfortable with:
- Python syntax and writing larger programs
- Functions and organizing code across multiple files
- Reading from and writing to JSON files
- File handling
- Password generation
- Basic hashing with
hashlib - Creating backups of application data
- Simple terminal user interfaces
- Error handling
- Working with Python's standard library
Some of the modules I experimented with include:
jsonrandomsecretsstringhashlibpathlibshutiltime
- Add users
- Search for users
- Update passwords
- Retrieve passwords
- Generate random passwords
- Generate and manage master keys
- Password hashing experiments
- JSON backup system
This project is intentionally "raw." I avoided using frameworks or external libraries because the goal wasn't to build the best password manager it was to understand how Python works and to become comfortable writing programs with it.
Looking back, there are many things I'd improve. I'd separate the business logic from the user interface, reduce repeated code, organize the project into classes, and redesign how data is stored. But that's exactly why I'm keeping this repository online: it's a snapshot of where I was while learning Python.
Sometimes it's nice to look back and see how much you've improved.
Thanks for checking it out, and enjoy my slightly chaotic first Python project.