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
Go to file
2020-03-03 01:16:56 +07:00
app Final Tagless (1st) fixed. 2020-03-03 01:16:56 +07:00
catalogue KV DB WIP 2019-08-12 01:37:54 +07:00
src - Bug with missing pattern fixed. 2020-02-26 01:34:25 +07:00
test/spec Methods renamed. Tests fixed. 2019-12-08 01:43:10 +07:00
.ghci Hydra Framework: initial commit. 2019-05-02 00:12:50 +07:00
.gitignore ThrowException method added. 2020-02-03 00:38:30 +07:00
astro.db WIP 2020-02-03 00:32:40 +07:00
LICENSE Initial commit 2019-05-02 00:15:45 +07:00
meteor_counter.cfg FT now works. New configs. 2019-05-18 15:59:22 +07:00
Notes.md Wrong way to implement process using type classes 2019-05-08 02:06:59 +07:00
package.yaml Fix in the framework. 2020-02-07 20:02:20 +07:00
perf_test_app.cfg MeteorCounter app updated. Free & Church versions 2019-05-17 02:39:06 +07:00
README.md Update README.md 2020-02-04 15:24:32 +07:00
Setup.hs Hydra Framework: initial commit. 2019-05-02 00:12:50 +07:00
stack.yaml Resolver bumped. 2019-10-01 04:14:02 +07:00
test.db Rigid Sqlite backend made working. 2019-10-03 04:50:01 +07:00

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: