A high performance digital wallet built with Laravel 12, Inertia.js v2, and Vue.js 3. It enables secure money transfers between users with real time updates powered by Pusher.
• User authentication using Laravel Breeze
• Secure money transfers between users
• Commission fee of one point five percent on all transfers
• Real time transaction updates through Pusher and Laravel Echo
• Full transaction history with debit and credit tracking
• Race condition prevention with database locks
• Integer based monetary calculations using cents
• Responsive interface using Tailwind CSS v3
• Built in form validation and error handling
Backend Laravel 12.38.1
Frontend Vue.js 3.5.24
Server Side Rendering Inertia.js v2.0.10
UI Framework Tailwind CSS v3.4.18
Real time Pusher Broadcasting with Laravel Echo
Database MySQL 8.0 and above
Authentication Laravel Sanctum v4.2.0
Testing Pest v4.1.3
Code Formatting Laravel Pint v1.25.1
PHP 8.4.14
The app uses pessimistic locking through lockForUpdate to ensure data integrity under heavy load.
All money values are stored as cents to avoid floating point errors.
Balances are stored directly on the users table and updated atomically.
Every transfer action runs inside a database transaction.
Uses Laravel Echo with Pusher for instant updates.
• PHP 8.4 or newer
• Composer
• Node.js 16 or newer
• MySQL 8 or newer
• A Pusher account
- git clone [email protected]:bhaidar/mini-wallet.git
- cd mini-wallet
- composer install
- cp .env.example .env
- ./vendor/bin/sail up -d
- ./vendor/bin/sail npm install
- ./vendor/bin/sail artisan key:generate
- ./vendor/bin/sail artisan migrate
- ./vendor/bin/sail artisan db:seed
- Sign up at https://pusher.com and create a new Channels app.
- Update .env with your Pusher credentials:
BROADCAST_DRIVER=pusher
QUEUE_CONNECTION=database
PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_APP_CLUSTER=your_cluster
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
- ./vendor/bin/sail npm run build
Terminal 1
./vendor/bin/sail up
Terminal 2
./vendor/bin/sail npm run dev
Terminal 3
./vendor/bin/sail artisan queue:work
The app is available at http://localhost
[email protected] password
[email protected] password
[email protected] password
[email protected] password
[email protected] password
- Ensure queue worker is running
- Verify Pusher credentials
- Run Sail logs
Open an issue in the repository.