WBert WBert
Login Start free
Blog

Introducing WBert: One Backend for Modern Applications

An introduction to WBert as a shared backend platform for modern applications, including authentication, APIs, PostgreSQL functions, realtime events, queue, cache and developer tooling.

WBert connecting web, desktop, mobile, Unity and backend clients to shared backend capabilities

Modern applications rarely need only a user interface and a database. As a product grows, it usually needs authentication, controlled data access, server-side operations, realtime updates, background processing and caching.

WBert is designed to provide that common backend layer. Web, desktop, mobile, Unity and backend applications can use the same platform instead of rebuilding the same infrastructure for every client.

WBert architecture showing web, desktop, mobile, Unity and backend clients connected to authentication, APIs, realtime, server-side functions, queue, cache and PostgreSQL data
Different applications can use the same WBert backend boundary and shared infrastructure.

What WBert is designed to solve

Infrastructure grows quickly around an application. Users need authentication and verification, clients need controlled access to data, business operations need to run on the server, and applications may need realtime updates, background jobs or caching.

These capabilities are important, but they are usually not the product itself. WBert centralizes them so application code can focus on the workflow and user experience.

  • Authentication and authorization
  • API access to backend operations
  • PostgreSQL data and database functions
  • Realtime database change events
  • Direct or queued application processes
  • Queue infrastructure with WBert Internal Queue or RabbitMQ
  • Cache infrastructure with WBert Internal Cache or Redis
  • Admin and developer tooling for endpoints, schemas and integrations

One backend for different applications

WBert is not tied to a single frontend technology. A React or Angular application, a C# desktop tool, a mobile application, a Unity client or another backend service can communicate with the same backend while keeping its own presentation and client-side logic.

The important boundary is that clients do not need direct PostgreSQL credentials or direct access to infrastructure such as Redis or RabbitMQ. They communicate with WBert, and the backend remains responsible for shared and authoritative operations.

Authentication, APIs and PostgreSQL

Account management is one of the first shared concerns in many applications. WBert provides registration, email verification, login, role and permission capabilities that can be reused across clients.

Database access follows the same principle. Instead of giving each client direct PostgreSQL access, WBert provides a controlled backend surface for CRUD operations and PostgreSQL functions.

PostgreSQL functions through the backend

Some business operations should be executed as one server-side operation rather than as several independent client writes. WBert can execute saved PostgreSQL functions through db.ExecuteFunction, with function permissions checked by the backend for normal user-token calls.

View example request
{
  "endpoint": "db.ExecuteFunction",
  "parameters": {
    "connector": "main",
    "functionName": "main.fn_example",
    "values": {
      "input_text": "hello"
    }
  }
}

Built-in tooling for faster development

WBert is not only a backend runtime boundary. The platform also includes developer-facing tools that help teams discover configured endpoints, understand the database structure and accelerate integration work without adding a large amount of extra documentation to every project.

The blocks below stay collapsed by default so the article remains concise, but they show the kind of platform tooling that can speed up day-to-day backend work.

View: API endpoint explorer

The API Endpoints section helps developers browse configured endpoints, inspect their required authentication mode and review example request parameters. This gives client-side and backend developers a clearer contract for how the application should talk to WBert.

WBert API endpoints explorer showing configured endpoints, authentication mode and example parameters JSON
The endpoint explorer provides a quick view of configured operations and their request shape.
View: AI helper for endpoint integration

WBert can also generate an AI-oriented helper text based on the configured endpoints visible in the application. This gives a developer a structured prompt that can be pasted into an AI chat to generate starter JavaScript or TypeScript integration code more quickly, while keeping the output aligned with the currently configured API surface.

WBert AI helper for API endpoints showing generated guide text that can be copied into an AI chat
The AI helper turns the configured endpoint surface into a reusable guide for code generation.
View: database schema visualizer

For applications with a growing PostgreSQL model, the schema visualizer provides a graphical way to inspect tables and their relationships. This helps developers orient themselves more quickly when working on data models, server-side functions or application flows that depend on multiple entities.

WBert database schema visualizer showing application tables and their relationships on a dark canvas
The schema visualizer offers a faster way to understand table structure and relationships.

Realtime database changes

Polling is useful as a fallback, but it is not always the best primary mechanism when data can change independently of the current user. WBert can publish configured database changes through its realtime layer so subscribed applications can react when relevant rows change.

Realtime flow from an application operation to a PostgreSQL data change, a WBert realtime event and a subscribed client update
A configured database change can produce a realtime event that subscribed applications react to.
View realtime subscription
client.on("db_changes", {
    event: "*",
    connector: "main",
    schema: "main",
    table: "orders"
}, handler);

The client can then decide whether to update a card, refresh a list or fetch the changed record. This keeps presentation logic in the application while WBert provides the notification channel.

Background processing, queueing and caching

Not every operation belongs inside the HTTP request that triggered it. WBert processes can execute application work directly or through background processing. The queue layer can use WBert Internal Queue or RabbitMQ, allowing the deployment to change infrastructure without exposing that choice to client applications.

The same separation applies to caching. WBert can use its Internal Cache or Redis while clients continue to work through the backend.

WBert infrastructure diagram showing queue choices between WBert Internal Queue and RabbitMQ and cache choices between WBert Internal Cache and Redis
Queue and cache implementation choices remain behind the WBert backend boundary.

Why a shared backend boundary matters

The value becomes clearer when a product has several clients. An Angular administration interface, a C# desktop tool, a mobile application and a background service can all need the same identity, data and business rules.

Without a common boundary, those applications can gradually duplicate authentication flows, data-access rules and backend logic. With WBert, each client remains specialized while shared responsibilities stay centralized.

Clients own presentation and interaction. The backend owns shared identity, authorization, data access and authoritative operations.

Where WBert goes from here

This article is intentionally an introduction. The next articles will focus on specific engineering problems and show how the relevant WBert capabilities can be used in practical architectures.

A first example is Saga Pattern in Microservices: A Practical .NET Example, which uses an order workflow to examine distributed failure, compensating actions, queued processing and realtime status updates.