A modern, intuitive, and visually appealing Single Page Application (SPA) for GPG file encryption and decryption, built with Vue.js, TypeScript, and Laravel.
- Modern SPA Interface: Built with Vue.js and TypeScript for a responsive and interactive user experience
- Dual Operations: Clearly distinct sections for file encryption and decryption
- Drag-and-Drop File Handling: Intuitive file upload with drag-and-drop functionality
- Real-time Progress Tracking: Visual feedback for file upload and processing
- Elegant Notifications: User-friendly success and error messages
- Responsive Design: Works well on all screen sizes
-
Frontend:
- Vue.js 3 with Composition API
- TypeScript
- Tailwind CSS for styling
- Axios for API requests
- Vite for build tooling
-
Backend:
- Laravel
- PHP GnuPG extension for encryption/decryption
- PHP 8.2 or higher
- Laravel 12.1.1.0
- PHP GnuPG extension (
ext-gnupg
) - GnuPG installed on the server
- Node.js and npm
-
Clone the repository:
git clone [repository-url] cd gpg-encryption-project
-
Install PHP dependencies:
composer install
-
Install JavaScript dependencies:
npm install
-
Set up environment variables:
cp .env.example .env php artisan key:generate
-
Configure GPG keys in your
.env
file:GPG_RECIPIENT_KEY_ID=your_recipient_key_id GPG_PRIVATE_KEY_ID=your_private_key_id GPG_PASSPHRASE=your_passphrase
-
Build the frontend assets:
npm run build
-
Start the development server:
php artisan serve
-
Visit
http://localhost:8000
in your browser to use the application.
For development with hot-reloading:
npm run dev
-
Encrypting Files:
- Drag and drop a file onto the encryption panel or click to select a file
- Click the "Encrypt File" button
- Wait for the encryption process to complete
- Download the encrypted file from the success notification
-
Decrypting Files:
- Drag and drop a .gpg file onto the decryption panel or click to select a file
- Click the "Decrypt File" button
- Wait for the decryption process to complete
- Download the decrypted file from the success notification
- Store your GPG keys securely and never commit them to version control
- Use environment variables for key IDs and passphrases
- Regularly rotate your GPG keys according to your security policy
- Consider implementing authentication to restrict access to the application
This project is licensed under the MIT License - see the LICENSE file for details.