Home

Awesome

<p align="center"> <a href="https://github.com/HashLoad/horse/blob/master/img/horse.png"> <img alt="Horse" height="150" src="https://github.com/HashLoad/horse/blob/master/img/horse.png"> </a> </p><br> <p align="center"> <b>Horse</b> is an <a href="https://github.com/expressjs/express">Express</a> inspired <b>web framework</b> for Delphi and Lazarus.<br>Designed to <b>ease</b> things up for <b>fast</b> development in a <b>minimalist</b> way and with high <b>performance</b>. </p><br> <p align="center"> <a href="https://t.me/hashload"> <img src="https://img.shields.io/badge/telegram-join%20channel-7289DA?style=flat-square"> </a> </p>

⚙️ Installation

Installation is done using the boss install command:

boss install horse

⚡️ Quickstart Delphi

uses Horse;

begin
  THorse.Get('/ping',
    procedure(Req: THorseRequest; Res: THorseResponse)
    begin
      Res.Send('pong');
    end);

  THorse.Listen(9000);
end.

⚡️ Quickstart Lazarus

{$MODE DELPHI}{$H+}

uses Horse;

procedure GetPing(Req: THorseRequest; Res: THorseResponse);
begin
  Res.Send('Pong');
end;

begin
  THorse.Get('/ping', GetPing);
  THorse.Listen(9000);
end. 

🧬 Official Middlewares

For a more maintainable middleware ecosystem, we've put official middlewares into separate repositories:

MiddlewareDelphiLazarus
horse/json   ✔️    ✔️
horse/basic-auth   ✔️    ✔️
horse/cors   ✔️    ✔️
horse/stream   ✔️    ✔️
horse/jwt   ✔️    ✔️
horse/exception   ✔️    ✔️
horse/logger   ✔️    ✔️
horse/compression   ✔️    ✔️

🌱 Third Party Middlewares

This is a list of middlewares that are created by the Horse community, please create a PR if you want to see yours!

MiddlewareDelphiLazarus
bittencourtthulio/etag   ✔️    ✔️
bittencourtthulio/paginate   ✔️    ✔️
bittencourtthulio/cachecontrol   ✔️    ❌
gabrielbaltazar/gbswagger   ✔️    ❌
willhubner/socketIO   ✔️    ❌
dliocode/ratelimit   ✔️    ❌
dliocode/slowdown   ✔️    ❌
giorgiobazzo/upload   ✔️    ❌
dliocode/query   ✔️    ❌
CarlosHe/healthcheck   ✔️    ❌
CarlosHe/staticfiles   ✔️    ❌
CachopaWeb/horse-server-static   ✔️    ✔️
arvanus/horse-exception-logger   ✔️    ✔️
claudneysessa/Horse-CSResponsePagination   ✔️    ❌
claudneysessa/Horse-XSuperObjects   ✔️    ❌
andre-djsystem/horse-bearer-auth   ✔️    ✔️
andre-djsystem/horse-manipulate-request   ✔️    ✔️
andre-djsystem/horse-manipulate-response   ✔️    ✔️
antoniojmsjr/Horse-IPGeoLocation   ✔️    ❌
antoniojmsjr/Horse-XMLDoc   ✔️    ❌
isaquepinheiro/horse-jsonbr   ✔️    ❌
IagooCesaar/Horse-JsonInterceptor   ✔️    ❌
dliocode/horse-datalogger   ✔️    ❌
marcobreveglieri/horse-prometheus-metrics   ✔️    ❌

Delphi Versions

Horse works with Delphi 11 Alexandria, Delphi 10.4 Sydney, Delphi 10.3 Rio, Delphi 10.2 Tokyo, Delphi 10.1 Berlin, Delphi 10 Seattle, Delphi XE8 and Delphi XE7.

💻 Code Contributors

<a href="https://github.com/Hashload/horse/graphs/contributors"> <img src="https://contrib.rocks/image?repo=Hashload/horse" /> </a>

⚠️ License

Horse is free and open-source software licensed under the MIT License.

📐 Tests

tests Console Coverage VCL Coverage