Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Release GitHub tag (latest by date) GitHub commits since latest release (by date)



هذا العلم والعمل وقف للّه تعالي اسأل اللّه ان يرزقنا الاخلاص فالقول والعمل

This work and knowledge is for the sake of Allah, may Allah grant us sincerity in what we say or do.

reactive is a tool-box that makes it easier and faster to build reactive applications. It relies heavily on Reactive Streams and uses Project-Reactor, Reactor Netty, it also uses functional paradigms and collections from Vavr.

JDK notes

  • reactive is up-to-date with the latest versions of JDK preview feature, currently Java 18.

Core Features

  • Vavr + Reactor Functional utilities
  • Reactor Netty utility functions
  • Reactive CQRS and Eventsourcing utilities (beta stage)
  • Reactive functional in-memory generic cruds (for tests, not for production)
  • Jackson Adapter (Json & Yaml) utilities
  • FileOps reader utility
  • ResourceFileOps utility
  • ConfigFileOps is a module for reading yaml configuration files (depends on Jackson Adapter)
    • Allows nesting of files using a marker e.g include: sub_file.yaml would replace this line with content of sub_file.yaml
    • Reading as a system property if not found as environment variable or else the default value if it was supplied:
      • path: ${JAVA_HOME}
      • myVar: ${SOME_VAR:-defaultValue}


  • Event Sourcing *[x] State decider, evolver, Stream pipeline *[x] Sagas decider, Stream pipeline
  • Streaming *[x] Stream api for usage in event sourcing
  • Stream sharding to be used later for scaling
    • Tests
  • id safety (stateId, commandId, eventId)
  • Event Stream Compaction
  • Increase test coverage to >85%
  • Stream api for messaging patterns

Release notes

  • Reactive is using minor (as in semantic versioning) as a major until first version is released


All modules depend on Core. There are currently no other inter-dependencies between them.


reactive is on edge, it's a work in progress and a pragmatic learning effort, so feel free to create issues or PRs.



    <!-- replace module_name with your preferred module -->


You can just do pull requests, and I will check them asap.

Related Articles