Skip to content

memoria-io/atom

Repository files navigation

atom

Release GitHub tag (latest by date)

Security Rating Bugs Vulnerabilities Duplicated Lines (%) Reliability Rating Quality Gate Status Technical Debt Coverage Lines of Code Code Smells Maintainability Rating

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

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

Introduction

Disclaimer:

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

Atom is an SDK to accelerate development, and it's a constant learning effort.

The currently used JDK is Java 22 and the motivation is to use the latest available JDK.

Documentation

Can be found under the .docs directory

Modules

  • The core module
    • The core module consists of and intended to only contain POJO utilities, and standard interfaces which are implemented by child modules
    • Some utilities like for configuration management like ConfigFileOps, and ResourceFileOps (similar to Typesafe HOCOON library)
  • sec module
    • sec for security utilities, e.g encryption, hashing, json web tokens etc. You can check the pom for more details on the libraries it depends on.
  • text module
    • The text module is utilities and standardization of text serialization/deserialization, it relies on jackson libraries.

Usage

First make sure you can fetch repositories under such memoria organisation from github

<repositories>
    <repository>
        <id>github</id>
        <name>GitHub Packages</name>
        <url>https://maven.pkg.github.com/memoria-io/*</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

Then import in your pom dependencies

<dependency>
    <groupId>io.memoria</groupId>
    <artifactId>atom</artifactId>
    <version>22.0.0</version>
</dependency>

Versioning

The versioning is similar to semantic but with a shift where the first segment being the jdk version.

Format Example: JDK_Version.major.mino

TODOs

  • Increase test coverage to >85%
  • Performance and benchmarks project "atom-performance"
  • JVM Profiling
  • More structured releasing once library is stable

Release notes

  • 22.0.0
    • Sync Aggregates
    • Merging with Active/Reactive libs
    • Removing Unnecessary modules (etcd)
  • 21.20.0
    • Removed reliance on vavr
  • 21.1.0
    • Moving Event-sourcing and testsuite modules to reactive
  • 20.11.0

Contribution

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

Related Articles