Whirl
The Whirl Platform is application builder software for database developers that simplifying of creating web applications. It provides WYSIWYG tools for building UI that tightly binds to database data and business logic code. Building application didn't require to write application server or client side logic, all logic can be done database side.
Install / Use
/learn @whirlplatform/WhirlREADME
Whirl Platform
The Whirl Platform is an application builder software for database developers that simplifies the creation of web applications. It provides WYSIWYG tools for building user interfaces that are tightly coupled to database data and business logic. Building application doesn't require writing application server or client side logic, all logic can be done database side.
Platform is in production state and used in more than twenty closed source commercial applications.
Demo
You can try Whirl Platform on our demo server.
Application
Server: Admin Application
Username: whirl-admin
Password: password
Editor
Server: Editor
Username: whirl-admin
Password: password
Installation
Docker Compose
Fastest way to run platform is to use docker compose located in docker folder.
Linux:
cd docker
TAG=v0.4.0 docker compose --profile image --project-name whirl up
Windows:
cd docker
set TAG=v0.4.0
docker compose --profile image --project-name whirl up
This will run platform with default configuration and default database.
You can open application in browser by url http://localhost:8090/app and http://localhost:8090/editor for editor.
Contributing
Database Preparation
First, the database to store the platform data should be created.
PostgreSQL should be configured as the local RDBMS on port 5432. SQL scripts for creating the metadata database are
CREATE ROLE whirl WITH LOGIN PASSWORD 'password';
CREATE DATABASE whirl OWNER whirl;
GRANT ALL PRIVILEGES ON DATABASE whirl to whirl;
\c whirl -- connect to the whirl database as superuser and run the following commands
CREATE SCHEMA whirl AUTHORIZATION whirl;
NOTE: If you are using PostgreSQL 12 or lower, you can manually install the 'hstore' extension first.
Building and Running
Project requires Java 8, higher versions are not yet supported. Also, for correct operation, you must install Node.js version 21.2.0 or higher. ### ###
To prepare dependencies for running the platform in development mode, you should build prerequisites:
mvn clean install -Dgwt.skipCompilation=true -DskipTests
Main platform - whirl-app
Command to start the backend on the Tomcat server is:
cd whirl-app
mvn compile war:exploded cargo:run -pl whirl-app-server -am -P jdbc-postgresql,config-postgresql,local-store
We use GWT for frontend development with tbroyer Maven GWT plugin to manage GWT modules.
The command to start the frontend in dev mode is
cd whirl-app
mvn gwt:codeserver -pl whirl-app-client -am
After running the command, the application will be available at http://localhost:8090/app. The frontend part is compiled on demand.
Application editor - whirl-editor
Commands to start the backend:
cd whirl-editor
mvn compile war:exploded cargo:run -pl whirl-editor-server -am -P jdbc-postgresql,config-postgresql,local-store
Commands to start the frontend:
cd whirl-editor
mvn gwt:codeserver -pl whirl-editor-client -am
The editor will be available at http://localhost:8091/editor/.
Database naming conventions
Example: Function that takes two parameters (message and window type) and displays a window depending on those parameters.
CREATE OR REPLACE FUNCTION whirl_admin.show_message(p_message_text text, p_message_type text)
RETURN text
LANGUAGE plpgsql
AS $function$.
declare
v_version varchar(2048);
v_result whirl.function_result;
BEGIN
select version()
in v_version;
v_result.title := 'Message
v_result.message := p_message_text;
v_result.message_type := p_message_type;
return whirl.as_result(v_result);
END;
function
;
Incoming function parameters
p_message_text text
Variables in the function body
v_parameter_type varchar(4000);
References to the other tables (name of the column in the other table)
r_whirl_users
Possible problems
Windows
Problem:
After startup, 2 processes remain, occupying ports 9876 and 9877.
Solution:
Processes called OpenJDK Platform binary need to be terminated. Also you can run stop_listening.bat, which looks for processes with these ports and kills them.
License
Since the client-side code of the Whirl platform is mostly based on the Sencha GXT library, it's licensed under the GPL v3 license.
Related Skills
feishu-drive
347.9k|
things-mac
347.9kManage Things 3 via the `things` CLI on macOS (add/update projects+todos via URL scheme; read/search/list from the local Things database)
clawhub
347.9kUse the ClawHub CLI to search, install, update, and publish agent skills from clawhub.com
postkit
PostgreSQL-native identity, configuration, metering, and job queues. SQL functions that work with any language or driver

