A terminal based password manager and digital vault built in Java. Digital Vault allows users to add, modify, categorize and store sensitive data such as web credentials, credit cards and secure notes.
User management: Secure user registration, login and logout functionalities with active session handling using tokens.
Vault items: Suport for 3 types of secured items:
- Web credentials (username, passwords, URLs)
- Credit Cards (card number, cardholder name, CVV)
- Secure Notes
Categories: Organise vault items using various categories (Social, Banking, Shop, Personal etc)
Validation: Input validation for things like email, urls, card numbers etc.
Terminal Interface An interactive CLI client with commands resembling common Linux commands
Flexible Storage: Support for both In-Memory storage (for testing) and persistent local Database Storage.
The project has the following arhitecture:
model: Contains core entities (User,Vault Item,UserSessionetc)dao: Data Acces Object handling database operationsservice: Core bussines logic (Authentification, Vault Management, Audit)ui: Terminal interface and command handlersvalidation: Dedicated validators for user inputexception: Custom exceptions for services, database and validationsfactory: Factory patterns for creating vault items
Ensure you have the following installed on your machine:
- Java Development Kit
- Apache Maven
- Docker and Docker Compose (for Database)
- Clone the repository and navigate to the project directory
git clone https://github.com/fernandodonea/DigitalVault
cd DigitalVault- Start the database using Docker
docker compose up -d- Build the project using Maven
mvn clean install- Run the application
mvn exec:java -Dexec.mainClass="digital.vault.Main"(You can also run the Main.java from your IDE)
Once the application is running, you will pe prompted with command line interface.
The available commands are the following:
help: show the list of all the commandsregister <username> <email> <password>: creates a new user with said credentialslogin <username> <password>: log in as an existing userlogout: logout and end current sessionls: list all vault itemstouch <vault-item-type>: create a new vault itemrm <item-id>: delete an item with set idcat <item-id>: display an item with set itreveal <item-id>: show sensitive data (requires master password)nano <item-id>: edit an item with set itquit: exit the application