Build the application, not the same plumbing again
Business systems repeatedly need the same foundations: forms, records, relationships, validation, permissions and APIs. I built Baobab to connect those concerns through a document definition, while keeping business-specific engineering in ordinary Java services and custom frontends.
The result is a working framework for document-driven business applications. It combines a Spring Boot runtime, a metadata-driven Angular Desk, independently developed portals and Python tooling for the development and deployment lifecycle.
From definition to working system
A document definition supplies the shared contract for fields, naming, relationships and storage. Vant Flow provides visual form authoring and rendering. Baobab connects the definition to backend metadata, generated Java bases, schema migrations and generic document APIs.
The generated base classes handle recurring structure. Developer-owned document classes and services remain extension points and are preserved during regeneration. The persistence layer maps typed documents to physical columns, JSON-backed fields and child records.
Normal document writes run validation and lifecycle hooks around persistence. Apps can add domain behaviour through services, document methods and hooks, rather than patching the framework for each new requirement.
A custom portal is a full frontend application
Teams are not confined to the generated Desk or saved HTML Web Pages. Baobab’s CLI can create a normal Angular workspace with routing, its own components and dependencies, and a shared browser SDK for backend communication.
The portal owns its user experience. The CLI builds its browser bundle into the owning app, and the main Spring server hosts it at a registered URL prefix, including frontend deep links. A deployed portal does not need a separate Angular development server.
This allows a shared business backend to support both an administrative Desk and purpose-built experiences for the people doing the work.
Proof: the Task Operations application
The included Task app demonstrates an overview, searchable and filtered work queue, project context, task creation, editing and related checklist records. Its custom Angular portal and the Desk work with the same underlying records.

Task Operations portal from an isolated browser verification run, using synthetic example records.
The example separates read and write responsibilities deliberately. Dashboard totals and queue searches use app-owned, tenant-scoped SQL projections. Creation and editing use the document lifecycle rather than writing directly to the database.
Recorded browser verification covers login, search, task creation, updates preserving child records, logout and mobile use. It demonstrates the connected application path, rather than just a collection of screens.
Build here, deploy compiled applications there
Apps keep their Java code, metadata, migrations and portals together. The Python CLI supports local setup, app and portal builds, packaging, installation and runtime management.
Compiled releases deliver the server, built Desk, app binaries, runtime resources and portal assets. Maven, Node and Angular build tools stay on the development machine. I have exercised packaged installation on Ubuntu WSL with persistent H2 storage.
Current stage
The document runtime, Desk, custom portal path and compiled deployment workflow are working and under active development. Production capacity, recovery and upgrade guarantees still require representative validation. Installed apps share the Java runtime; customer-specific authorization and domain rules remain application responsibilities.
What it demonstrates
Framework architecture, fullstack platform engineering and developer tooling. Baobab shows how I connect data modelling, extensibility, user experience and deployment into a foundation that other applications can build on.