Habari Web Components is a web application framework for small to medium size HTTP services, based on the popular open source TCP/IP library for Delphi and Free Pascal, Internet Direct (Indy). The library requires Internet Direct (Indy) 10.6 (license information)

See it in action: try the on-line demo, or download the off-line demos.

Need more information? Browse the online API documentation, or read the Getting Started document.

Changes in version 2.7

REST support
An improved example implementation of a component for RESTful web services (TdjRestfulWebComponent) is included with documentation and unit tests
REST/CRUD example
A RESTful CRUD example application is included with full source code
Added support for the HTTP PATCH method for RESTful applications
Added support for the HTTP OPTIONS method for RESTful applications
Bootstrap 3.1.1
Demo applications have been updated to Bootstrap 3.1.1
Tested with Indy 10.6 rev 5090

Download Demo Download Demo

Current version:
Release date:
26 February 2014
Tested with:
Indy 10.6, Free Pascal 2.6.2
Release notes:
REST example web component
Demo applications:
Kitchen sink, Flight Plan, RESTful CRUD
Included - also available for download here

Registered version Registered Version »

Request account information

Habari Web Components 2.7

Single Developer License

✓ Full library source code is included.
✓ Non-exclusive life-time license.
✓ Updates included for one year.
✓ 60 days money back guarantee.


Buy a license Buy a license » Two years updates »

Try the online demo »

Habari Web Components demo

(click to enlarge)

Habari Web Components API documentation

(click to enlarge)

Use it with jQuery Mobile to to build apps for mobile devices. A demo application (Flightplan) is included with source code.

Habari Web Components with jQuery mobile

(click to enlarge)

Use it to provide web services which can consumed by mobile devices. A small demo application for Android is available on Google play.

Habari Web Components Android app

(click to enlarge)

Habari Web Components - Features overview

Based on Indy
Internet Direct (Indy) provides advanced features such as resource caching and MIME type detection. Current versions of Indy components do not have to be installed in the IDE, only the Indy library or source paths are required.
The light-weight architecture of the Habari Web Components framework is designed to work without forms, datamodules, or TComponent-based classes. With a few lines of code a HTTP server can be added to a console program, a services, or a GUI application.
Web components are stateless, so one instance handles all requests. State information can be stored in HTTP sessions. The framework uses Indy for HTTP session management. Web applications can enable sessions for all requests, or use on-demand creation of sessions to save server resources.
Web applications can use HTTP Basic Auth and Form based authentification to protect specific resources.
Different web appplications can be run in the same server program, using different 'context' names, which is the first part of a resource path (such as http://example.com/contextname/resourcename).
The HTTP connector uses the Indy SmartFileServe function to automatically reduce bandwith usage by responding with a 'HTTP 304 not modified' code for unmodified static resources.
The HTTP connector uses a IPv6 binding if the host name contains a colon (like "::1" for localhost).
The framework can run HTTP connectors on different ports and bind contexts to a connector, making resources only accessible over their assigned port. This can be used to run admin web interfaces on a second port, which can be protected by a firewall.
Web Components only accept requests for paths which have been configured using absolute path, prefix or suffix mappings. For example, one web component can be configured to handle requests for dynamic creation of *.gif and *.png, while a second web component handles dynamic creation of *.pdf requests.
Habari Web Components are multi-threaded by design. The framework allocates a thread for each new request for a single Web Component without any special programming.