A secure, ephemeral secret-sharing application built with Appwrite. Share sensitive information with confidence using time-limited, read-restricted encrypted secrets.
- End-to-End Encryption: Secrets are encrypted before storage and decrypted only when accessed
- Time-to-Live (TTL): Secrets automatically expire after a specified duration
- Read Limits: Control how many times a secret can be accessed before being destroyed
- Zero-Knowledge: Secrets are permanently deleted after expiration or read limit
- Shareable URLs: Generate secure links to share secrets safely
- No Registration Required: Use the service without creating an account
-
Encrypt a Secret:
- Visit the application
- Enter your secret message
- Set the time-to-live (hour, day, week, month, or year)
- Set the maximum number of reads (1-1000)
- Click "Encrypt" to generate a secure ID or shareable URL
-
Decrypt a Secret:
- Use the secret ID or visit the shareable URL
- The secret will be displayed once and then permanently deleted
- Node.js 22+
- npm
- Clone the repository:
git clone https://github.com/Meldiron/almost-vault.git
cd almost-vault- Install dependencies:
# Install function dependencies
cd function
npm install
# Install site dependencies
cd site
npm install- Start development servers:
# Start the function (API)
cd function
CI=true node src/http.js
# Start the web application
cd site
npm run devAlmost Vault consists of two main components:
- Framework: Vanilla JavaScript with Vite
- UI Library: Alpine.js with Tailwind CSS
- Features: Responsive design, real-time feedback, clipboard integration
- Runtime: Node.js 22
- Framework: Koa.js with routing
- Database: Appwrite Database with encryption
- API: RESTful endpoints for secret management
Almost Vault is designed to be deployed on Appwrite Cloud:
- Deploy using the Appwrite CLI:
appwrite push site
appwrite push functionThe application will be available at your configured Appwrite endpoint.
- Secrets are encrypted at rest using Appwrite's built-in encryption
- No secrets are logged or stored in plain text
- Automatic cleanup ensures secrets don't persist beyond their intended lifetime
- CORS protection limits API access to authorized domains
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
This project is open source and available under the MIT License.
- Documentation: Check the Appwrite Documentation
- Community: Join the Appwrite Discord
- Issues: Report bugs or feature requests in the project's issue tracker
Built with ❤️ using Appwrite
