mirror of
https://github.com/graninas/Hydra.git
synced 2024-12-01 03:53:54 +03:00
Hydra is a full-fledged framework for building web services, multithreaded and concurrent applications with SQL and KV DB support. It's currently moving to the production-ready state
b966aef8ab
fix link for FnConf19 talk at README |
||
---|---|---|
app | ||
catalogue | ||
src | ||
test/spec | ||
.ghci | ||
.gitignore | ||
astro.db | ||
LICENSE | ||
meteor_counter.cfg | ||
Notes.md | ||
package.yaml | ||
perf_test_app.cfg | ||
README.md | ||
Setup.hs | ||
stack.yaml | ||
test.db |
Hydra Framework
An all-in-one framework for writing Haskell apps which use the following features out of the box:
- Multithreading
- Safe STM-powered concurrency
- KV DB functionality (Redis & RocksDB backends supported)
- SQL DB functionality (beam incorporated, SQLite supported, PG & MySQL possible)
- Logging
- Random data generation
- Many others
With the framework, you can create complex applications that have a good maintainability, testability, simplicity, that have a good structure and are easy to read and change. The key principles in the framework:
- Layered architecture
- Separation of Subsystem Interfaces, Business Logic, Runtime and Implementation
- Convenient and simple to use eDSLs for Business Logic
- Layered structure of business application: State, Domain, Business Logic
The Hydra Project
This project demonstrates the principles of Software Design and Architecture in pure Functional Programming. It provides a framework implemented with several different approaches for easy comparison:
- Final Tagless
- Free Monad
- Church Encoded Free Monad
The project is a showcase for my book Functional Design and Architecture
Additional materials describing these ideas: