# Tsukuyomi
[](https://travis-ci.org/ubnt-intrepid/tsukuyomi)
[](https://ci.appveyor.com/project/ubnt-intrepid/tsukuyomi/branch/master)
[](https://coveralls.io/github/ubnt-intrepid/tsukuyomi?branch=master)
[](https://docs.rs/tsukuyomi)
[](https://gitter.im/ubnt-intrepid/tsukuyomi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Tsukuyomi is a next generation Web framework for Rust.
## The Goal of This Project
The ultimate goal of this project is to provide a Web framework for developing the asynchronous
and fast Web services, with the help of ecosystem of Rust for asynchronous network services like Tokio and Hyper.
## Features
* Supports HTTP/1.x and HTTP/2.0 protocols, based on Hyper 0.12
* Basic support for HTTP/1.1 protocol upgrade
* TLS support by using `rustls`
* Support for both TCP and Unix domain socket
* Custom error handling
* Basic support for Cookie management
* Middleware support
* Cookie based session management
The following features does not currently implemented but will be supported in the future version:
* Custom session storage
* Authentication
* Embedded WebSocket handling
## Example
```rust
extern crate tsukuyomi;
use tsukuyomi::App;
use tsukuyomi::future::ready;
fn main() -> tsukuyomi::AppResult<()> {
let app = App::builder()
.mount("/", |r| {
r.get("/", |_cx| ready("Hello, world!\n"));
})
.finish()?;
tsukuyomi::run(app);
}
```
More examples are located in [`examples/`](examples/).
## Documentation
* [API documentation (released)](https://docs.rs/tsukuyomi/*/tsukuyomi)
* [API documentation (master)](https://ubnt-intrepid.github.io/tsukuyomi/tsukuyomi/index.html)
## License
MIT + Apache 2.0