SkillAgentSearch skills...

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/Whirl
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Build Status

<p style="text-align:center;"> <img src="logo.png" /><br> </p>

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.

GPL v3 license text

Related Skills

View on GitHub
GitHub Stars8
CategoryData
Updated1y ago
Forks3

Languages

Java

Security Score

70/100

Audited on Feb 5, 2025

No findings