Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/parsonsmatt/rowdy
A convenient DSL for describing web routes
https://github.com/parsonsmatt/rowdy
dsl haskell routing
Last synced: 4 days ago
JSON representation
A convenient DSL for describing web routes
- Host: GitHub
- URL: https://github.com/parsonsmatt/rowdy
- Owner: parsonsmatt
- Created: 2018-03-28T18:38:21.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-11-21T22:55:52.000Z (almost 4 years ago)
- Last Synced: 2024-10-30T21:39:12.264Z (6 days ago)
- Topics: dsl, haskell, routing
- Language: Haskell
- Homepage:
- Size: 49.8 KB
- Stars: 43
- Watchers: 5
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rowdy
[![Build Status](https://travis-ci.org/parsonsmatt/rowdy.svg?branch=master)](https://travis-ci.org/parsonsmatt/rowdy)
`rowdy` is DSL for defining web application routes. Check out [the examples](examples/)!
## Why?
Servant has a cool DSL for routes. It is embedded into the type system, and type
level programming in Haskell isn't nearly as pleasant as value-level
programming. As a result, there can be a lot of complexity with common
combinators, and you must be familiar with advanced type-level techniques to
work with it.Yesod has a cool DSL for routes. It uses a Template Haskell quasiquoter to parse
a non-Haskell DSL into a data structure, which is then used to generate routes.
Since it isn't Haskell, you don't get good error messages, syntax highlighting,
or the ability to define your own combinators.`rowdy` is a value level DSL for defining routes. A Template Haskell splice can
then interpret the value at compile-time and provide a Yesod representation, or a
Servant representation, or whatever else you'd like!## Future plans
Currently, `rowdy` supports Yesod-style routes concretely and completely. The
Servant support is limited and not ready for publish yet -- if you have ideas
for providing an extensible design for this, please let me know!