The application was created as a project created for study classes. The main functionalities are the ability to create passwords to various other applications, domains, and the ability to share these passwords with other users. Passwords are encrypted using Crypto package and AES algorithm. The user can update, delete, view decrypted passwords, clear password shares as well as view shared passwords by other users. The user also has the ability to update the application master password and delete the account. Additional functionality included in the requirements is the ability to list login attempts for a given account, along with information about the IP address, login time and whether the login was successful. Moreover, in order to make any action on passwords, user has to confirm his identity by providing his master password to the account. This happens only once during login session.
The application was developed using the Django framework and a PostgreSQL database. The application and database were created separately in different containers during the development stage. A full CI/CD pipeline was created using GitHub Actions and AWS Elastic Beanstalk in order to deploy the application to production. Moreover, the app includes unittests.
Most important technologies used:
- Python: 3.11.5
- Django: 4.2.11
- gunicorn: 21.2.0
- PostgreSQL: 13.0
- Docker, docker compose
- GitHub Action
- AWS Elastic Beanstalk
Full CI/CD pipeline was created with 3 stages: running tests for app, build docker image for production and sending deploy package (which includes docker-compose.yml file) to an environment on AWS EBS.
The app should be accessible at http://password-wallet.eu-central-1.elasticbeanstalk.com/
Sometimes, due to exceeding the Free Tier for AWS, I have to stop the instance on which the application is running. During this period, the application will not work.