Skip to content

egbertdev/bwandera

Repository files navigation

🏠 Bwandera: Multi-Vendor Marketplace for Architectural Blueprints

🚀 View Live Demo

Test Credentials: * Email: admin@example.com

  • Password: password

📖 Overview

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.

🏗️ System Architecture

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.

🚀 Key Technical Features

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

🛠️ Tech Stack

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

⚙️ Installation & Setup

This project is structured as a pre-built monolith. The Vue 3 frontend assets are already compiled and served via the Laravel public directory.

  1. Clone the repo: git clone https://github.com/egbertdev/bwandera.git

  2. Backend Setup: composer install cp .env.example .env php artisan key:generate php artisan migrate --seed

  3. Run the App: php artisan serve (The app is now accessible at http://localhost:8000)

  4. Frontend Development (Optional): If you wish to modify the UI, the source files are located in the /frontend directory: cd frontend npm install npm run build (This updates the Laravel /public assets)

💡 The Engineering Challenge

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.

About

Multi-vendor digital marketplace for architectural blueprints built with Laravel 12, Vue 3, and M-Pesa/PayPal integration.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors