Test Credentials: * Email: admin@example.com
- Password: password
Bwandera is a specialized digital asset marketplace built for architects and designers to monetize house plans. It features a full-vendor onboarding lifecycle, administrative quality control, and a secure "Pay-to-Unlock" delivery mechanism for high-value architectural files.
The application is architected as a decoupled Single Page Application (SPA) with a unified deployment strategy:
- Frontend: A reactive Vue 3 interface communicating with the backend via a RESTful API (Axios).
- Backend: A modern Laravel 12 API engine handling multi-tenant logic and Role-Based Access Control (RBAC).
- Deployment: Optimized for Render using a "Catch-all" routing pattern. The Vue-built assets are served directly from the Laravel public directory to eliminate CORS overhead and simplify SSL management.
- Vendor Gatekeeping & Approval: New shops are initialized in a pending state. Custom Laravel Middleware restricts file uploads and public listings until an Admin manually verifies the vendor’s credentials via the dashboard.
- Secure Digital Fulfillment: Built robust transaction listeners for M-Pesa Daraja API and PayPal. High-value blueprints are stored in protected directories and only exposed via temporary, signed URLs after a verified payment webhook is received.
- Financial Settlement Module: A dedicated ledger system that tracks vendor balances, allowing architects to request withdrawals while maintaining a transparent audit trail of all sales.
- Stateful API Authentication: Leveraged Laravel Sanctum for secure, token-based authentication between the Vue 3 frontend and the Laravel 12 API.
- Backend: Laravel 12 (Modern Slim Skeleton) & PHP 8.3
- Frontend: Vue.js 3 (Composition API)
- Payments: M-Pesa Daraja API & PayPal REST SDK
- Database: MySQL
- Hosting: Render
Note on Storage: Currently using Laravel's local disk driver. Because Render's filesystem is ephemeral, the system is architected to easily toggle to AWS S3 for persistent asset storage in a production environment.
This project is structured as a pre-built monolith. The Vue 3 frontend assets are already compiled and served via the Laravel public directory.
-
Clone the repo:
git clone https://github.com/egbertdev/bwandera.git -
Backend Setup:
composer installcp .env.example .envphp artisan key:generatephp artisan migrate --seed -
Run the App:
php artisan serve(The app is now accessible at http://localhost:8000) -
Frontend Development (Optional): If you wish to modify the UI, the source files are located in the
/frontenddirectory:cd frontendnpm installnpm run build(This updates the Laravel/publicassets)
The primary challenge was ensuring Data Integrity across the vendor lifecycle. I designed a database schema that prevents orphaned products if a shop is suspended or deleted. By performing is_admin and shop_approved checks at the Kernel level via Middleware, I ensured the API is inherently secure against unauthorized write attempts from unverified accounts.