quqiufeng / dream

Tidy, feature-complete Web framework

Home Page:https://aantron.github.io/dream/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dream

Easy-to-use, feature-complete Web framework without any boilerplate.




Note: the project is currently in a pre-alpha state; currently writing examples.

Dream is one flat module in one package, offering:


Every part of the API is arranged to be easy to understand, use, and remember. Dream sticks to base OCaml types like string and list, introducing only a few types of its own — and some of those are just abbreviations for bare functions!

The neat interface is not a limitation. Everything is still configurable by a large number of optional arguments. Where necessary, Dream exposes the lower-level machinery that it is composed from. For example, the default body and WebSocket readers return strings, but you can also do zero-copy streaming.

You can even run Dream as a quite bare abstraction over its underlying set of HTTP libraries, where it acts only as minimal glue code between their slightly different interfaces, and takes care of horridness like ALPN.


Documentation

  • Dream has several dozen Examples, each of which is a complete project in the public domain. Note: only about two dozen actually written ATM.

  • The first examples make up a Tutorial. Visit to see the full list and start wherever you like, or begin at 1-hello, the Dream version of Hello, world!

  • See the API documentation.


Getting started

TODO opam release, esy instructions, quick-start script.

opam install dream

Contributing

Dream uses several submodules, so be sure to clone with

git clone https://github.com/aantron/dream.git --recursive

Acknowledgements

Dream is based on work by the authors and contributors of its many dependencies and their transitive dependencies. There are, however, several influences that cannot be discovered directly:


Roadmap

1.0.0~alpha1:

  • Finish more of the examples, cross-link everything.
  • Correct the cipher rotation envelope scheme.
  • Quick start script.

Then:

  • Optimizations: router, logger, microparsers (form data, etc.), fully zero-allocation streaming.
  • WebSocket and stream backpressure.
  • HTTP3/QUIC.

About

Tidy, feature-complete Web framework

https://aantron.github.io/dream/

License:MIT License


Languages

Language:OCaml 98.3%Language:HTML 1.0%Language:Makefile 0.5%Language:Reason 0.2%Language:Shell 0.1%