Developer Docs · 01

Architecture Overview

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

The admin dashboard — one backend, two Vue front-ends.
The admin dashboard — one backend, two Vue front-ends.

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:

RepoRole
vbwd-backendPython/Flask API, PostgreSQL, Redis, Alembic migrations.
vbwd-fe-coreShared Vue component library (consumed as a git submodule).
vbwd-fe-userUser-facing Vue app (port 8080).
vbwd-fe-adminAdmin 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 core is agnostic — only plugins are gnostic. Core files (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.