Hello Kittox

HelloKitto is a sample application that you can use to explore the Kittox way of doing things, understand the basic concepts behind the framework, get ideas and copy-paste snippets for your own experimentations.
Also, copying and renaming the application directory and the project within is the fastest way to create a new application.
Live Demos
Click here to launch Live Demo of Kittox Examples
Use UserName: "guest" and Password "password" to enter demos!
Features
The features of Kittox used by HelloKitto are:
- Multiple config files:
- ConfigHelloWorld.yaml defines the smallest possible Kittox application, the classic "Hello World".
- Config.yaml is the HelloKitto application itself.
- ConfigEmbedded.yaml shows how to embed (part of) a Kittox application in an existing web page through an iframe.
- FireDAC-based database connection to SQL Server, PostgreSQL or Firebird (selectable via
DefaultDatabaseNameinConfig.yaml). - JWT authentication (
Auth: JWT / Inner: DB) — stateless authentication envelope: signed token in an HttpOnly cookie, no server-side session-id lookup. TheDBinner authenticator stays in charge of the credential check (MD5-hashed passwords inKITTO_USERS). NoDatabaseChoices/ no environment combo on the login page: the active backend is whateverDefaultDatabaseNameresolves to. See Config_AuthJWT. - DB authentication using a standard database table and hashed passwords.
- With defaults.
- HTMX theming.
- Localization.
- Models and model relationships (references and details).
- Tree-based or Toolbar-based menu.
- Tree menu with three levels
- Tile menu for Smartphone and Tablet
- Custom logo through the use of an HtmlPanel controller.
- Tabbed views (TabPanel controller).
- StatusBar controller.
- Data display and editing with rules.
- List grouping with a custom javascript template.
- List filtering with multiple user filters.
- A custom form layout.
- Master/Detail display and edit forms.
- Input writing in grid
- Record coloring in grid
- Rules to Prevent Adding and Prevent Deleting records
- different kind of form views: new record in a tabpanel from menu new record from popup menu
Deployment modes
HelloKitto includes Delphi projects for all four deployment modes. All projects are in Examples/HelloKitto/Projects/:
| Project | Mode | Output |
|---|---|---|
HelloKitto.dpr | Standalone (GUI / Windows Service) | Home/HelloKitto.exe |
HelloKittoDesktop.dpr | Desktop Embedded (WebView2) | Home/HelloKittoDesktop.exe |
HelloKittoISAPI.dpr | ISAPI (IIS) | Home/HelloKittoISAPI.dll |
mod_hellokitto.dpr | Apache Module | Home/mod_hellokitto.dll |
All projects share the same Source/ directory (UseKitto.pas, Controllers.pas, Rules.pas) and the same Home/Metadata/ configuration. See the Deployment guide for step-by-step instructions for each mode.
Testing
In order to use HelloKitto you need to create the database using the scripts or backup files provided in the Examples/HelloKitto/DB directory, and edit Config.yaml so it points to your database and uses the correct authentication credentials.
Database scripts
The DB folder contains everything you need to recreate the HelloKitto sample database on Microsoft SQL Server, PostgreSQL or Firebird. All three dialects share the same logical schema (tables KITTO_USERS, HAIR, GIRL, DOLL, PARTY, INVITATION) and the same sample data (2 users, 6 hair colors, 8 girls, 8 dolls, 26 parties, 35 invitations). Boolean columns (KITTO_USERS.IS_ACTIVE, MUST_CHANGE_PASSWORD, INVITATION.ACCEPTED) use the native types of each engine: BIT on SQL Server, BOOLEAN on Firebird 3.0+ and PostgreSQL.
| File | Engine | Purpose |
|---|---|---|
HelloKitto_SQLServer_DDL.sql | MS SQL Server | Tables, foreign keys, primary key constraints |
HelloKitto_SQLServer_Data.sql | MS SQL Server | INSERT script with the sample data (girls, dolls, hairs, parties, invitations, Kitto users) |
HelloKitto_PostgreSQL_DDL.sql | PostgreSQL | hellokitto schema, tables, constraints. kitto_users.is_active, kitto_users.must_change_password and invitation.accepted declared as native boolean; doll.picture is bytea |
HelloKitto_PostgreSQL_Data.sql | PostgreSQL | Sample data (boolean values use TRUE/FALSE literals) |
HelloKitto_Firebird_DDL.sql | Firebird 3.0+ | Tables + FKs translated to Firebird dialect; native BOOLEAN for the same columns the PostgreSQL DDL declares as boolean. Verified on Firebird 5.0 64-bit |
HelloKitto_Firebird_Data.sql | Firebird | Same sample data as the SQL Server script (TRUE/FALSE literals for the native BOOLEAN columns) |
Creating the database on SQL Server
- Create an empty database (for example
HelloKitto) on your SQL Server instance. - Run
HelloKitto_SQLServer_DDL.sqlagainst the new database to create the schema. - Run
HelloKitto_SQLServer_Data.sqlto load the sample data. - Update
Home/Metadata/Config.yamlso theDatabasesnode points to your SQL Server instance and adjust authentication credentials (see Config_Databases). HelloKitto ships with aFireDAC_MSSQLblock ready to use.
Creating the database on PostgreSQL
- Create an empty database (for example
hellokitto) on your PostgreSQL server, owned by a role of your choice (the example useskittox_admin). - Run
HelloKitto_PostgreSQL_DDL.sqlagainst the new database to create thehellokittoschema, the tables and the foreign keys. - Run
HelloKitto_PostgreSQL_Data.sqlto load the sample data. - In
Home/Metadata/Config.yamlsetDefaultDatabaseName: FireDAC_PostgreSQLand update theFireDAC_PostgreSQLblock with your server, role and password. Make sure theSchemaparameter matches the schema you created (default:hellokitto) — this controls thesearch_pathset for every connection. See the PostgreSQL Schema andsearch_pathsection.
All three dialects use native boolean types for IS_ACTIVE, MUST_CHANGE_PASSWORD and INVITATION.ACCEPTED: BIT on SQL Server, BOOLEAN on Firebird 3.0+ and PostgreSQL. The standard DB authenticator and the YAML SQL fragments in HelloKitto's models work cross-dialect via the %DB.TRUE% / %DB.FALSE% and %DB.DATEDIFF macros — switching DefaultDatabaseName between SQL Server, PostgreSQL and Firebird requires no other YAML change.
Creating the database on Firebird
- On Firebird 3.0+ (HelloKitto is verified on Firebird 5.0 64-bit), create an empty database file via
isqlor your preferred tool, e.g.:create database 'D:\FirebirdDatabases\HELLOKITTO.FDB' user 'SYSDBA' password 'masterkey' default character set utf8; - (Optional) Add an alias to
databases.confso the connection string isHELLOKITTOinstead of the full path. - Run
HelloKitto_Firebird_DDL.sqlon the new database (isql -i HelloKitto_Firebird_DDL.sql) to create the tables, FKs and constraints. - Run
HelloKitto_Firebird_Data.sqlto load the sample data. - In
Home/Metadata/Config.yamlsetDefaultDatabaseName: FireDAC_Firebirdand update theFireDAC_Firebirdblock with your alias / path and credentials.
The pure-JS Firebird drivers used by some MCP servers and admin tools require WireCrypt = Disabled in firebird.conf (Firebird 3.0+ defaults to Required) and AuthServer = Srp, Srp256, Legacy_Auth + UserManager = Srp, Legacy_UserManager for username/password authentication.
Use the metadata of HelloKitto as both example and study material. You can find more details about the features in this wiki or in the Kittox Reference.
