Architecture Overview
How VBWD is laid out: a layered Python backend, three independent Vue frontends, and an agnostic core extended only by plugins.

What VBWD is
VBWD is a SaaS marketplace platform with subscription billing, user management and an admin dashboard. The Community Edition (CE) is the self-hosted subscription platform; the Marketplace Edition (ME) is the planned cloud SaaS marketplace.
Everything is built around one principle: a small, domain-agnostic core plus a constellation of plugins that add the actual business verticals (shop, booking, subscriptions, chat, …).
Repository structure
The codebase is split into four repositories:
| Repo | Role |
|---|---|
vbwd-backend | Python/Flask API, PostgreSQL, Redis, Alembic migrations. |
vbwd-fe-core | Shared Vue component library (consumed as a git submodule). |
vbwd-fe-user | User-facing Vue app (port 8080). |
vbwd-fe-admin | Admin backoffice Vue app (port 8081). |
Both frontends depend on vbwd-fe-core via a git submodule; the core library must be built first.
Backend layered architecture
The backend follows a strict layering — each layer only talks to the one below it:
Routes → Services → Repositories → Models- Routes (
src/routes/) — HTTP endpoints and input validation. - Services (
src/services/) — business logic, wired with dependency injection. - Repositories (
src/repositories/) — data access. - Models (
src/models/) — SQLAlchemy ORM entities.
Tech stack
Backend: Python 3.11, Flask 3, PostgreSQL 16, Redis 7, SQLAlchemy 2. Frontend: Vue 3, Vite, Pinia, Vue Router, TypeScript. Testing: Pytest (backend), Vitest (unit), Playwright (E2E). Infra: Docker, Gunicorn, Nginx, Alembic.
The key principle
vbwd/) are never modified for plugin functionality. All plugin code lives in plugins/<name>/. This is enforced by an AST oracle that bans from plugins.* imports inside the core.See Core-agnosticism & seams for how plugins extend the core without it knowing they exist.