Wisp is a secure and straightforward application for sharing encrypted, one-time secrets through a protected link that automatically expires. Once a secret is viewed or reaches its expiration time, it is permanently deleted. For added security, users can set an optional password.
Figure 1: Homepage - Create a new secret
Figure 2: Generated secure link display
Figure 3: Password-protected secret access
Figure 4: Secret content display
- Screenshots
- Table of Contents
- Features
- Technologies Used
- Requirements
- Installation
- Configuration
- Database Migrations
- Usage
- Testing
- Project Structure
- Security Considerations
- Contributing
- License
- Secure Secret Sharing: Share encrypted, one-time secrets via secure links
- Password Protection: Optional password protection for shared secrets
- Auto-Expiration: Automatic expiration and deletion of secrets after a single view or expiration time
- Flexible Timeouts: Customizable expiration times ranging from minutes to days
- Modern UI: User-friendly interface built with Vue 3 and Tailwind CSS
- Real-time Updates: Seamless single-page application experience with Inertia.js
- Secure Backend: Laravel encryption and hashing for maximum security
- One-Time Access: Secrets are permanently destroyed after viewing or manual obliteration
- Type Safety: Full TypeScript support for enhanced development experience
- Backend: Laravel 12.21, PHP 8.4
- Frontend: Vue 3.5, Inertia.js 2.0, TypeScript
- Database: MySQL
- Styling: Tailwind CSS 3.4, shadcn/ui components
- Routing: Ziggy (Laravel route helpers for JavaScript)
- Code Quality: Laravel Pint (PHP code style fixer)
- Testing: PHPUnit, Laravel Nightwatch (E2E testing)
- Security: Laravel Encryption, Hashing, HTTPS
- Hosting: Heroku
- JavaScript Runtime: NodeJS v22
- PHP 8.4 or higher
- Composer
- Node.js v22 and npm
- MySQL 8.0+ or MariaDB 10.3+
- OpenSSL for encryption
- Nginx or Apache server
-
Clone the repository:
git clone https://github.com/Thavarshan/wisp.git cd wisp -
Install PHP dependencies:
composer install
-
Install Node dependencies:
npm install
-
Compile front-end assets:
npm run build
-
For development, you can run the dev server:
npm run dev
-
Copy
.envfile:cp .env.example .env
-
Configure database in
.env:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=wisp DB_USERNAME=your_username DB_PASSWORD=your_password
-
Generate application key:
php artisan key:generate
-
Configure encryption settings in
.env:APP_KEY=base64:your_generated_key APP_CIPHER=AES-256-CBC
Run the following command to create database tables:
php artisan migrate-
Visit the homepage and fill out the form:
- Secret content
- Optional name
- Expiration time
- Optional password
-
Click "Store Secret" to generate a secure link.
- Use the provided secure link to access the secret.
- Enter the password if the secret is password-protected.
- The secret will be destroyed upon viewing.
php artisan testnpm run testnpm run nightwatchwisp/
βββ app/
β βββ Http/
β β βββ Controllers/
β β βββ Requests/
β βββ Models/
βββ resources/
β βββ js/
β β βββ components/
β β βββ pages/
β β βββ utils/
β βββ views/
βββ routes/
β βββ web.php
βββ tests/
β βββ Feature/
β βββ Unit/
βββ .env.example
βββ package.json
βββ composer.json
βββ README.md
- Encryption: Secrets are encrypted using Laravel's AES-256-CBC encryption.
- Password Protection: Passwords are hashed using Bcrypt.
- HTTPS: Ensure HTTPS is enabled for secure communication.
- Auto-deletion: Secrets are automatically deleted after viewing or expiration.
-
Fork the repository.
-
Create a new branch:
git checkout -b feature/your-feature-name
-
Commit your changes:
git commit -m "Add your message here" -
Push to the branch:
git push origin feature/your-feature-name
-
Create a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
For any issues, please open an issue on GitHub. Thank you for using Wisp!