Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/blackbelttechnology/judo-community
- Owner: BlackBeltTechnology
- Created: 2022-06-20T16:33:59.000Z (over 2 years ago)
- Default Branch: develop
- Last Pushed: 2023-09-22T06:29:19.000Z (over 1 year ago)
- Last Synced: 2024-04-16T18:55:23.543Z (9 months ago)
- Topics: java, low-code, low-code-framework, modeling, modeling-language
- Language: Python
- Homepage: https://judo.codes
- Size: 460 KB
- Stars: 18
- Watchers: 9
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.adoc
- Contributing: CONTRIBUTING.adoc
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[]
++++
++++
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]
repositoryOnce 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].