A secure, self-destructing password sharing application built with Vue.js and Laravel. Share passwords securely with end-to-end encryption - passwords are encrypted in the browser before being sent to the server and can only be viewed once before being permanently deleted.
- 🔒 End-to-end encryption using AES-256-GCM
- 💥 Self-destructing passwords - viewed only once then deleted
- ⏰ Configurable expiry times (5 minutes to 30 days)
- 🔑 Client-side encryption/decryption using Web Crypto API
- 📋 Easy copy-to-clipboard functionality
- 🎨 Clean, responsive user interface
- ♿ Accessibility features included
- Passwords are encrypted in the browser before transmission
- Encryption keys never leave the client
- Passwords are stored encrypted and deleted after first view
- Uses secure AES-256-GCM encryption
- Implements URL-safe Base64 encoding for keys and tokens
- Automatic expiry of unused passwords
- Frontend: Vue 3 with Composition API
- Backend: Laravel
- Database: MySQL/PostgreSQL
- Encryption: Web Crypto API (AES-256-GCM)
- HTTP Client: Axios
- Routing: Vue Router
- Clone the repository:
git clone https://github.com/patthewebrat/otp.git
cd otp
- Install PHP dependencies:
composer install
- Install JavaScript dependencies:
npm install
- Copy the environment file and configure your database:
cp .env.example .env
- Generate application key:
php artisan key:generate
- Run database migrations:
php artisan migrate
- Build frontend assets:
npm run build
For local development:
- Start the Laravel development server:
php artisan serve
- Start the Vite development server:
npm run dev
- Set your production environment variables in
.env
- Optimize Laravel:
php artisan config:cache
php artisan route:cache
php artisan view:cache
- Build frontend assets:
npm run build
- Always use HTTPS in production
- Regularly update dependencies
- Configure appropriate session timeouts
- Set up proper rate limiting
- Monitor server logs for suspicious activity
- Ensure proper server hardening
- Implement CSP headers
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
You can view a production version of this app here - https://otp.indulge.digital/
This project is licensed under the MIT License - see the LICENSE.md file for details.
- Web Crypto API for secure client-side encryption
- Vue.js team for the excellent framework
- Laravel team for the robust backend framework
For support, please open an issue in the GitHub repository or contact the maintainers.