Secure Vault is a privacy-focused application designed to safeguard your passwords, documents, and other confidential information. It's built with end-to-end encryption, ensuring that only you have access to your data. We never have access to your passwords or sensitive information.
- End-to-End Encryption: Your data is encrypted on your device and remains encrypted on our servers, ensuring only you can access it.
- Master Password Security: Your master password is the only key to unlocking your vault.
- Secure Storage: Keep all your valuable data safe and organized in one place.
- Secure Sharing: Share your information securely with trusted individuals.
- Ultimate Privacy: Your data is your business. We don't have access to it.
- Peace of Mind: Securely store and manage your most important information.
- Easy to Use: A user-friendly interface makes it simple to manage your vault.
- Open Source: We welcome community contributions to make Secure Vault even better.
- Java Development Kit (JDK): Ensure you have a compatible JDK installed (version 11 or higher).
- Maven: Make sure you have Apache Maven installed.
- Docker and Docker Compose: Required for running the application in containers.
- IDE: You'll need an IDE of your choice (e.g., IntelliJ IDEA, Eclipse, VS Code) to work with the project.
-
Clone the repository:
git clone https://github.com/puneetkakkar/secure-vault-server
-
Navigate to the project directory:
cd secure-vault-server
-
Install dependencies:
mvn clean install
-
Build the application:
mvn package
-
Run the application:
mvn spring-boot:run
The Secure Vault application will be accessible at http://localhost:8080 by default.
-
Setup development environment:
make setup-dev
-
Start the development containers:
make up
-
Verify the services:
make ps
The development stack includes:
- Spring Boot Backend (port 8080)
- MongoDB (port 27017)
- Redis (port 6379)
-
Setup production environment:
make setup-prod
-
Start the production containers:
make up ENV=prod
-
Verify the services:
make ps ENV=prod
The production stack includes:
- Spring Boot Backend (port 8080)
- MongoDB (port 27018)
- Redis Master (port 6382)
- Redis Slaves (ports 6383, 6384)
- Redis Sentinels (ports 26382, 26383, 26384)
The project includes a Makefile with various helpful commands. To see all available commands:
make help
Common commands:
make up
- Start containersmake down
- Stop containersmake logs
- View container logsmake ps
- List running containersmake shell
- Open shell in backend containermake mongo-shell
- Open MongoDB shellmake redis-cli
- Open Redis CLImake test
- Run testsmake lint
- Run code lintingmake clean
- Stop containers and remove volumes
For production environment, add ENV=prod
to any command:
make up ENV=prod
make logs ENV=prod
The application uses a microservices architecture with:
- Spring Boot Backend: Main application server
- MongoDB: Primary database for data storage
- Redis: Single instance for caching and session management
- Spring Boot Backend: Main application server
- MongoDB: Primary database for data storage
- Redis Cluster:
- Master-Slave replication (1 master, 2 slaves)
- Sentinel-based high availability (3 sentinels)
- Automatic failover support
Both development and production environments require proper configuration through environment variables. The main differences are:
-
Development (
compose.dev.yml
):- Single Redis instance
- Standard MongoDB port
- Development-specific Spring profiles
- Hot-reload enabled for development
-
Production (
compose.prod.yml
):- Redis cluster with master-slave replication
- Redis sentinel for high availability
- Custom MongoDB port
- Production-specific Spring profiles
- Optimized for performance and security
We encourage you to contribute to Secure Vault's development!
- Report issues: Find a bug or have a suggestion? Please submit an issue on GitHub.
- Submit pull requests: Want to add a feature or fix a bug? Submit a pull request to our repository.
- Join the community: Connect with other developers.
Before contributing:
- Please read our Contributing Guidelines for a detailed guide.
- Ensure you have signed our Contributor License Agreement (CLA).
This project is licensed under the [License Name] License - see the LICENSE file for details.
Together, let's make Secure Vault the ultimate solution for protecting your digital secrets!