Password Manager development notes
Written on February 9th, 2022 by Terry
Start Simple
While learning Python programming, I started building a command line project serves as a basic password manager. Unlock with a master password, enter an url to create a new entry. The program may read url from clipboard too. With features such as:
- recognize entry by top-level domain instead of unprocessed url
- passwords are encrypted, and
- saved in SQLite database
The user input url is parsed using tldextract, and match if there’s any existing record in the database. User is then asked for the corresponding password, or simply hit return key to generate one automatically. The password is then encrypted by cryptographybefore saved. The database is rather straightforward, contains only one table, that stores all the url(top-level domain only), logins, encrypted passwords and some additional notes. To save a few clicks, when user access a particular entry, e.g. create new entry or change password, the password is copied to clipboard by pyperclip, it works on Windows, MacOS and Linux.
A small project, yet involves several skills in cipher, string manupilation and database.
Github Repository of CLI version
Building a Web Interface
With a web interface the application is more accessible. I started building the web version of the orginal command line Password Manager, using purely Flask at first. Then rewrote the front end using React and Axios afterwards. The application is suppposed to be ran locally though. Eventually, Pytest and Jest were added to run unit tests.
The web version serves same functions as the command line app, using only minimial style sheet. But in the process, I can get my hands on various libraries to enchance my skills in Flask, Javascript, React, Axios, Pytest and Jest. And also need to review the project in a design aspect.