DIStage
distage-example
DIStage | distage-example | |
---|---|---|
2 | 2 | |
607 | 55 | |
0.8% | - | |
9.4 | 7.5 | |
7 days ago | 7 days ago | |
Scala | Scala | |
BSD 2-clause "Simplified" License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
DIStage
-
You Want Modules, Not Microservices
Right.
We delivered many talks on that subject and implemented an ultimate tool for that: https://github.com/7mind/izumi (the links to the talks are in the readme).
The library is for Scala, though all the principles may be reused in virtually any environment.
One of the notable mainstream (but dated) approaches is OSGi.
- Izumi 1.0 Release Notes
distage-example
-
Testimonials about the usage of Izumi BIO typeclasses
I have been looking at the distage example (https://github.com/7mind/distage-example), and it looks very promising for writing effectful programs that work both with ZIO and cats-effect as the effect implementation. Although I do wonder if the same can be achieved by defining the APIs in terms of a trifunctor effect, instead of the bifunctor effect type showcased in the example.
-
Advices on application development
https://github.com/7mind/distage-example is a very similar app to what you're describing, including Postgres running in docker, http4s, doobie, circe & pureconfig. You may try to start from there and change it up gradually.
What are some alternatives?
MacWire - Lightweight and Nonintrusive Scala Dependency Injection Library
tapir - Declarative, type-safe web endpoints library
Scala-Guice - Scala extensions for Google Guice
effekt - A research language with effect handlers and lightweight effect polymorphism
Airframe - Essential Building Blocks for Scala
http4s-armeria - Armeria backend for http4s
Scaldi - Lightweight Scala Dependency Injection Library
tutorials - Tutorials on Lightweight Modular Staging
zio-prelude - A lightweight, distinctly Scala take on functional abstractions, with tight ZIO integration
restApiTemplate - A frame project to put your endpoints based on http4s, cats, fs2, doobie, postgresql, prometheus and swagger
Domino - OSGi dynamics made easy
scala-pet-store - An implementation of the java pet store using FP techniques in scala