/lightning-pass

Password manager and generator based on the PuTTY Key Generator

Primary LanguagePythonMIT LicenseMIT

Lightning Pass


Lightning Pass is using Python, PyQt and MySQL


Installation

Install instructions

  1. Install Python https://www.python.org/
  2. Install Poetry https://python-poetry.org/docs/
  3. Install MySQL https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/
  4. Clone this repository
git clone git@github.com:kucera-lukas/lightning-pass.git
  1. Install dependencies
poetry install

Create the .env file

Create a .env file and copy the contents of .env.example file into the .env file

cp .env.example .env

Initialize database

mysql -u user -e "CREATE DATABASE lightning_pass";

Development

GUI window

python ligtning_pass

Tests

pytest

Qt Creator

qtcreator lightning_pass/gui/static/qt_designer/*.ui
# generate python code from `main.ui`
pyuic5 lightning_pass/gui/static/qt_designer/main.ui -o lightning_pass/gui/static/qt_designer/output/main.py

Qt Style Sheets

Both light and dark mode stylesheets are located in the static folder

Features

  • Random password generation based on mouse movement
  • Account manager
  • Password manager
  • Secure password storage in database

What I've learned

  • Python - Advanced decorator, descriptor and context manager usage. Gained more familiarity with standard library modules like functools or contextlib
  • PyQT - QSS files and stylesheets, QtDesigner, QtSlots - mouse tracking, QStackedWidget, QInputDialog and many more...
  • Cryptography - hashing and symmetric encryption by deriving a key from "master password"
  • SQL/MySQL - table relationships, unique keys, proper way to handle SQL injection
  • VCS and GitLab - pre-commit hooks, continuous integration, git rollbacks,...

Preview

OS Support

Tested on Linux and Windows 10

Contributing

pre-commit install

License

Developed under the MIT license