I started with a raw prototype. I built a simple terminal menu, a basic random password generator using Python’s secrets module, and a straightforward way to load and save unencrypted JSON data. It worked, but it was completely replaceable by any other online website…
Next, I integrated that you can add your own passwords, usernames and notes. I also The rich library to make the terminal look beautiful with custom tables. I also implemented the search feature so users could find specific accounts instead of just looking at everything, and I replaced the passwords in the main list (••••••••) and you need to search fot the specific programm. I think its better this way but others might disagree.
I added the getpass module so that when you type a password and spedifically the main password, the characters are completely hidden in the terminal.
Right now, the app is not fully encrypted yet, but I build a structure that will hopefulyl help me.
For the readability Instead of saving accounts directly at the top level of the JSON file, I moved them into a dedicated entries dictionary.
Master Password Integration: The app now requires a master password immediately upon boot. It checks this password against the JSON file before unlocking the menu.
Right now everything is just in the json file in clear text. i want to change that for the next devlog.
Right Now:
def load_vault(master_password: str) -> dict:
“”“Loads the vault and checks the password in plain text (Simulated).”””
if not os.path.exists(DB_FILE):
return {“cipher”: “VERSCHLÜSSELUNG_CIPHER”, “entries”: {}}
with open(DB_FILE, "r") as f:
data = json.load(f)
# Checking the password in plain text for now
if data.get("passwort_schutz") != master_password:
console.print("\n[bold red] Wrong password![/bold red]\n")
return None
return {"cipher": data.get("cipher", "VERSCHLÜSSELUNG_CIPHER"), "entries": data.get("entries", {})}