Skip to content

Commit

Permalink
Updates the README and THANKS files. (Fix #1)
Browse files Browse the repository at this point in the history
  • Loading branch information
silvioprog committed Apr 21, 2020
1 parent 46790e9 commit b44afa8
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 40 deletions.
130 changes: 103 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,121 @@
# Brook framework

Microframework which helps to develop web Pascal applications.

- Version number: `5.0`
- Codename: `Tardigrade`
- Core: [Sagui library](https://github.com/risoflora/libsagui/releases)

**NOTE: This page will be updated with examples, how-to, links etc. as soon as the version 5.0 is tagged!**

## Supported platforms
[![License: LGPL v2.1](https://img.shields.io/badge/License-LGPL%20v2.1-green.svg)](https://github.com/risoflora/brookframework/blob/master/LICENSE)
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/risoflora/brookframework?color=green)

# Overview

Brook is a cross-platform microframework which helps to develop web Pascal applications built by [Delphi](<https://en.wikipedia.org/wiki/Delphi_(software)>) or [Lazarus IDE and Free Pascal](<https://en.wikipedia.org/wiki/Lazarus_(IDE)>). Its core has been developed using the [Sagui library](https://risoflora.github.io/libsagui), that's why it is so fast, compact and useful to run on embedded systems.

# Features

- **Three threading modes:**
- Event-driven - single thread.
- Threaded - one thread per request.
- Polling - thread pool.
- **Fast path routing that supports:**
- Regular expression with [JIT](https://www.pcre.org/current/doc/html/pcre2jit.html) optimization.
- [Binary search](https://en.wikipedia.org/wiki/Binary_search_algorithm) for path entry-points.
- **HTTP compression:**
- [Deflate](https://en.wikipedia.org/wiki/DEFLATE) - for static strings and streaming.
- [Gzip](https://en.wikipedia.org/wiki/Gzip) - for file compression.
- **HTTP cookies:**
- Providing classes which handles server side cookies.
- **HTTPS support:**
- Data encryption through [GnuTLS](https://www.gnutls.org) library.
- **Dual stack:**
- IPv4 and IPv6 on top of a single socket.
- **Basic authentication:**
- For standard login using user name and password.
- **Download/upload:**
- Static body and payload.
- Content streaming for real-time applications.
- Small and large files transferring.
- **Media types:**
- Resolving media types ([MIME](https://en.wikipedia.org/wiki/MIME)) in any supported platform.
- **String buffer:**
- For fast operations involving strings.
- **String map:**
- Hashed lists for key-value mapping.
- **And more:**
- Discover more features by playing with our examples.

# Examples

The example below shows a minimal `hello world` HTTP server:

```delphi
type
THTTPServer = class(TBrookHTTPServer)
protected
procedure DoRequest(ASender: TObject; ARequest: TBrookHTTPRequest;
AResponse: TBrookHTTPResponse); override;
end;
procedure THTTPServer.DoRequest(ASender: TObject; ARequest: TBrookHTTPRequest;
AResponse: TBrookHTTPResponse);
begin
AResponse.Send('Hello world', 'text/plain', 200);
end;
begin
with THTTPServer.Create(nil) do
try
Port := 8080;
if not Active then
Exit;
WriteLn('Server running at http://localhost:', Port);
Open;
ReadLn;
finally
Free;
end;
end.
```

There are other examples available in the [`Examples/`](https://github.com/risoflora/brookframework/tree/master/Examples) directory.

# OSes/compilers

Successfully tested on:

- Windows
- Linux
- Raspbian/Android

## Supported compilers

Successfully compiled for Windows 32/64 bit and Linux 64 bit using:
compiled using:

- Delphi XE family (Rio)
- Lazarus / Free Pascal (Lazarus 2.0+ / FPC 3.0+)

## Distribution / installation
# Versioning

Starting from the version 1.0.0, Brook follows the [SemVer](https://semver.org) rules regarding API changes with backwards compatibility across major releases.

# Licensing

Brook framework is released under GNU Lesser General Public License v2.1. Check the [LICENSE file](https://github.com/risoflora/brookframework/blob/master/LICENSE) for more details.

# Documentation

The documentation has been written in [PasDoc](https://github.com/pasdoc/pasdoc) and is available in HTML format at [brookframework-docs/index.html](https://risoflora.github.io/brookframework-docs/index.html).

# Downloading

All stable releases are available for download at the [releases page](https://github.com/risoflora/brookframework/releases).

To download the very latest source from the Git server, do this:

- Github trunk/branch
```bash
git clone https://github.com/risoflora/brookframework.git
```

Planned distribution/installation:
It will create a directory named `brookframework` filled with the source code.

- Github releasing
- GetIt (Delphi)
- OPM (Lazarus)
- From sources
# Contributing

## Current development
Brook framework is totally open source and would not be possible without our [contributors](https://github.com/risoflora/brookframework/blob/master/THANKS). If you want to submit contributions, please fork the project on GitHub and send a pull request. You retain the copyright on your contributions. If you have questions, open a new issue at the [issues page](https://github.com/risoflora/brookframework/issues). For donations to support this project, please click the button below.

- Isolated requests (in progress at branch [v5.1](https://github.com/risoflora/brookframework/tree/v5.1))
- SSE support (in study)
- WebSocket support (in study)
[![Support this project](https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=silvioprog%40gmail%2ecom&lc=US&item_name=brookframework&item_number=brookframework&currency_code=USD&bn=PP%2dDonationsBF%3aproject%2dsupport%2ejpg%3aNonHosted)

## Licensing
# Support

Brook Framework is released under the GNU Lesser General Public License. Check the [LICENSE file](https://github.com/risoflora/brookframework/blob/master/LICENSE) for more details.
This project is completely self-explanatory, but, if you need a consulting service to integrate it on your project, [contact us](mailto:silvioprog@gmail.com).
30 changes: 17 additions & 13 deletions THANKS
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
Dave Fobare (Project user/tester)
Gilson Nunes (Pascal expert)
Joao Morais (Pascal expert)
Silvio Clecio [silvioprog] (Author)
Adeilza Lustosa (Documentation/translations)
Al-Muhandis [Al-Muhandis] (Project maintainer)
Dave Fobare [TheEditor] (Project user/tester)
Gilson Nunes [gilsongnr] (Pascal expert)
Joao Morais [jcmoraisjr] (Pascal expert)
Juha Manninen (Lazarus issues)
Leonardo M. Rame (Project maintainer)
Luciano Souza (Project quality)
Leonardo M. Rame [leonardorame] (Project maintainer)
Luciano Souza [luchyanus] (Project quality)
Marco van de Voort (Free Pascal issues)
Mario Ray Mahardhika (Project maintainer)
Marcus Fernstrom [MFernstrom] (Project maintainer)
Mario Ray Mahardhika [leledumbo] (Project maintainer)
Mattias Gaertner (Lazarus issues)
Michael van Canneyt (Free Pascal issues)
Michael van Ham (Project maintainer)
Michalis Kamburelis (PasDoc issues)
Osvaldo Tomaz Crispim Filho (OsvaldoTCF)
Michael van Canneyt [mvancanneyt] (Free Pascal issues)
Michael van Ham [michaelvanham] (Project maintainer)
Michalis Kamburelis [michaliskambi] (PasDoc issues)
Osvaldo Tomaz Crispim Filho (osvaldotcf)
Sven Barth (Free Pascal issues)
Valmadson Santos (Project user/tester)
Waldir Paim (Project mentor)
Valmadson Santos [valmadson] (Project user/tester)
Waldir Paim [waldirpaim] (Project mentor)

and special thanks to the people who help me to maintain this project!
and special thanks to the people who help me to maintain this project!

0 comments on commit b44afa8

Please sign in to comment.