Thanks to visit codestin.com
Credit goes to github.com

Skip to content

πŸ” Wisp is a simple and secure platform for sharing encrypted, one-time secrets via protected links that automatically expire.

License

Notifications You must be signed in to change notification settings

Thavarshan/wisp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Wisp - One-Time Secret Sharing Application

Laravel Forge Site Deployment Status

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.

Screenshots

Wisp Screenshot 1 Figure 1: Homepage - Create a new secret

Wisp Screenshot 2 Figure 2: Generated secure link display

Wisp Screenshot 3 Figure 3: Password-protected secret access

Wisp Screenshot 4 Figure 4: Secret content display

Table of Contents

Features

  • 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

Technologies Used

  • 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

Requirements

  • 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

Installation

  1. Clone the repository:

    git clone https://github.com/Thavarshan/wisp.git
    cd wisp
  2. Install PHP dependencies:

    composer install
  3. Install Node dependencies:

    npm install
  4. Compile front-end assets:

    npm run build
  5. For development, you can run the dev server:

    npm run dev

Configuration

  1. Copy .env file:

    cp .env.example .env
  2. 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
  3. Generate application key:

    php artisan key:generate
  4. Configure encryption settings in .env:

    APP_KEY=base64:your_generated_key
    APP_CIPHER=AES-256-CBC

Database Migrations

Run the following command to create database tables:

php artisan migrate

Usage

Creating a Secret

  1. Visit the homepage and fill out the form:

    • Secret content
    • Optional name
    • Expiration time
    • Optional password
  2. Click "Store Secret" to generate a secure link.

Accessing a Secret

  1. Use the provided secure link to access the secret.
  2. Enter the password if the secret is password-protected.
  3. The secret will be destroyed upon viewing.

Testing

Run Feature Tests

php artisan test

Run Frontend Tests

npm run test

Run End-to-End Tests (Nightwatch)

npm run nightwatch

Project Structure

wisp/
β”œβ”€β”€ 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

Security Considerations

  • 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.

Contributing

  1. Fork the repository.

  2. Create a new branch:

    git checkout -b feature/your-feature-name
  3. Commit your changes:

    git commit -m "Add your message here"
  4. Push to the branch:

    git push origin feature/your-feature-name
  5. Create a Pull Request.

License

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!

About

πŸ” Wisp is a simple and secure platform for sharing encrypted, one-time secrets via protected links that automatically expire.

Topics

Resources

License

Stars

Watchers

Forks