Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/blackbelttechnology/judo-community

JUDO Community Aggragator Repository
https://github.com/blackbelttechnology/judo-community

java low-code low-code-framework modeling modeling-language

Last synced: about 2 months ago
JSON representation

JUDO Community Aggragator Repository

Awesome Lists containing this project

README

        

ifdef::env-github[]
++++




++++
endif::[]
ifndef::env-github[]
image::docs/assets/judo_logo.svg/[JUDO,200,160,align="center"]
endif::[]

ifdef::env-github[]
++++


A low-code development toolbox optimized for creating and operating enterprise applications.


++++
endif::[]
ifndef::env-github[]
[.text-center]
A low-code development toolbox optimized for creating and operating enterprise applications.
endif::[]

ifdef::env-github[]
++++


License
Discord
Documentation


++++
endif::[]
ifndef::env-github[]
[.text-center]
image:https://img.shields.io/badge/license-EPL%20v2.0-blue.svg[link="https://github.com/BlackBeltTechnology/judo-community"]
image:https://img.shields.io/discord/918892501434241054[link="https://discord.gg/RcyHnBndNU"]
image:https://img.shields.io/badge/docs-passing-brightgreen[link="https://documentation.judo.technology"]
endif::[]

== What is low-code?

Simply put, low-code development is a paradigm that uses models as the primary artifact of the development process, and
the implementation is (semi-)automatically generated from the models.

== Target audience

JUDO is designed for Java developers who want to speed up their work and focus on business needs instead of typing
architectural glue code and copying design patterns.

== System Requirements

=== JDK 11

The JUDO platform is developed and tested against OpenJDK 11. Our recommended vendor is https://www.azul.com/downloads/?version=java-11-lts&package=jdk[Zulu JDK]

Checking your JDK version:

[source,bash]
----
java -version
----

Which should display something similar to:

[source,bash]
----
openjdk version "11.0.16" 2022-07-19 LTS
OpenJDK Runtime Environment Zulu11.58+15-CA (build 11.0.16+8-LTS)
...
----

> The key here the version number, which in our case is: `11.0.16`. The version number should start with `11`, however the gerenerated code and applications could run on more current JDK versions.

=== Maven 3.8.x

Our project orchestrator and build tool is https://maven.apache.org/download.cgi[Apache Maven v3.8.x].

Checking your Maven version:

[source,bash]
----
mvn -version
----

Which should display something similar to:

[source,bash]
----
Apache Maven 3.8.6
Maven home: /usr/share/maven
...
----

> The key here is again, the version number, which in our case is: `3.8.6`. The version number **MUST** start with `3.8`!

== Getting started

=== Bootstrap a project from an archetype

Open your terminal, and go to a folder where you would like the archetype to generate your project under (e.g.: `~/projects/`).

Running the following command generates a https://github.com/spring-projects/spring-boot[Spring Boot] project with a
test model and a simple integration test:

[source,bash]
----
mvn org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate -B \
-DarchetypeGroupId=hu.blackbelt.judo.jsl \
-DarchetypeArtifactId=judo-jsl-springboot-archetype \
-DarchetypeVersion=1.0.3 \
-DgroupId=com.example \
-DmodelName=Test
----

> For detailed documentation on the Archetype, please visit the https://github.com/BlackBeltTechnology/judo-jsl-springboot-archetype[judo-jsl-springboot-archetype]
repository

Once the archetype has finished generating sources, your project should be available under `~/projects/com.example.Test`

Running `mvn clean install` under your project will run the build and tests as well. If you haven't modified anything, the process should finish without any errors.

=== Bootstrapped sources

==== application.properties

Located under: `src/main/resources`

This is a standard Spring Boot resource which by default is generated to utilize HSQL Database (we support PostgreSQL as well).

```
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.url=jdbc:hsqldb:mem:testdb;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=
spring.liquibase.change-log=classpath:model/Test-liquibase_hsqldb.changelog.xml
judo.modelName=Test
```

==== Test.jsl

Located under: `src/main/resources/model`

The model defines a custom type named `String`, an entity `Person` which __- for the sake of having fun -__ also
has a `derived` attribute called `fullName`.

```
model Test;

type string String(min-size = 0, max-size = 128);

entity Person {
field String firstName;
field String lastName;
derived String fullName => self.firstName + " " + self.lastName;
}
```

==== TestSpringApplication.java

Located under: `src/main/java/com/example/test`

This is the entry point of a bare-bones Spring Boot Application similar to what you'd get if you'd have used the
https://start.spring.io[start.spring.io] generator

==== TestSpringApplicationTests.java

Located under: `src/test/java/com/example/test`

[source,java]
----
package com.example.test;

import com.example.test.test.sdk.test.test.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Optional;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
class TestSpringApplicationTests {
@Autowired
Person.PersonDao personDao;

@Test
void testDaoFunctions() {
Person createdPerson = personDao.create(Person.builder()
.withFirstName("FirstName")
.withLastName("LastName")
.build());

assertEquals(Optional.of("FirstName"), createdPerson.getFirstName());
assertEquals(Optional.of("LastName"), createdPerson.getLastName());
// Test derived
assertEquals(Optional.of("FirstName LastName"), createdPerson.getFullName());
}
}
----

== Documentation

Our official documentation page can be found at link:https://documentation.judo.technology[https://documentation.judo.technology].

== Questions

For questions and support please use the official https://discord.com/channels/918892501434241054[Discord channel]. The issue list of this
repo is exclusively for bug reports and feature requests.

== Issues

For issue submission, please follow the guidelines displayed under each issue category.

Please keep in mind that this repository is only an aggregator, therefore if you have a specific problem / idea / suggestion
for a certain sub-repo, then it is encouraged to open the ticket there.

== Contributing to JUDO

Everyone is welcome to contribute to JUDO! As a starter, please read the corresponding link:CONTRIBUTING.adoc[CONTRIBUTING] guide for details!

== License

JUDO Community modules are licensed under the https://www.eclipse.org/legal/epl-2.0/[Eclipse Public License - v 2.0].