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.
You can try Whirl Platform on our demo server.
Server: Admin Application
Username: whirl-admin
Password: password
Server: Editor
Username: whirl-admin
Password: password
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 upWindows:
cd docker
set TAG=v0.4.0
docker compose --profile image --project-name whirl upThis 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.
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.
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 -DskipTestsCommand 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-storeWe 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 -amAfter running the command, the application will be available at http://localhost:8090/app. The frontend part is compiled on demand.
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-storeCommands to start the frontend:
cd whirl-editor
mvn gwt:codeserver -pl whirl-editor-client -amThe editor will be available at http://localhost:8091/editor/.
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 textVariables in the function body
v_parameter_type varchar(4000);References to the other tables (name of the column in the other table)
r_whirl_usersWindows
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.
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.

