master, v1.4, v1.3, v1.2, v1.1
master, v1.2
master, v2.0.2, v2.0.1, v2.0, v0.8, v0.7, v0.6, v0.5, v0.4, v0.3, v0.2
master, v0.5, v0.4, v0.3, v0.2
master, v2.0


To Do List Application
A simple application to introduce you to the Smalldb framework. This application is explained in the Getting started tutorial.
Smalldb Demo Application
A more complete demo application based on the Symfony Demo Application.
libSmalldb Tests
Tests of the framework itself are also (not very good) examples of how to use individual components. The HTML output produced by BPMN tests shows some interesting business process diagrams and their interpretations.


RESTful State Machines and SQL Database (2019)
Download: Full paper (PDF), BibTeX citation, DOI:

State machines and a relational database may look like completely unrelated tools, yet they form an interesting couple. By supporting them with well-established architectural patterns and principles, we built a model layer of a web application which utilizes the formal aspects of the state machines to aid the development of the application while standing on traditional technologies. The layered approach fits well with existing frameworks and the Command–Query Separation pattern provides a horizontal separation and compatibility with various conceptually distinct storages, while the overall architecture respects RESTful principles and the features of the underlying SQL database. The integration of the explicitly specified state machines as first–class citizens provides a reliable connection between the wellseparated formal model and the implementation; it enables us to use visual comprehensible formal models in a practical and effective way, and it opens new possibilities of using formal methods in application development and business process modeling.

From a BPMN Black Box to a Smalldb State Machine (2019)
Download: Full paper (PDF), BibTeX citation, DOI:

The state of a state machine is a path between two actions; however, it is the rest of the world who walks the path. The development of a web application, especially of an information system, starts with use cases, i.e., model scenarios of how users interact with the application and its entities. The goal of this paper is to turn the use cases into a useful specification and automatically convert them into a model layer of a web application, in our case using finite automata. BPMN (Business Process Model and Notation) provides a graphical syntax to capture the use cases, which is based on the theoretical background of Petri Nets. However, because BPMN does not capture the state of the modeled entities, it is impractical to use it as a specification of a persistent storage and model layers of the web application. To overcome this problem, we propose a new STS algorithm to infer a finite automaton that implements a chosen participant in a BPMN diagram that represents a given entity of the web application.

State Machine Abstraction Layer (2014)
Download: Full paper (PDF, submitted version), BibTeX citation, DOI:

Smalldb uses a non-deterministic parametric finite automaton combined with Kripke structures to describe lifetime of an entity, usually stored in a traditional SQL database. It allows to formally prove some interesting properties of resulting application, like access control of users, and provides primary source of metadata for various parts of the application, for example automatically generated user interface and documentation.