{"id":21187148,"url":"https://github.com/blackbelttechnology/judo-community","last_synced_at":"2025-07-10T02:30:51.580Z","repository":{"id":60810316,"uuid":"505519069","full_name":"BlackBeltTechnology/judo-community","owner":"BlackBeltTechnology","description":"JUDO Community Aggragator Repository","archived":false,"fork":false,"pushed_at":"2023-09-22T06:29:19.000Z","size":471,"stargazers_count":18,"open_issues_count":2,"forks_count":5,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2024-04-16T18:55:23.543Z","etag":null,"topics":["java","low-code","low-code-framework","modeling","modeling-language"],"latest_commit_sha":null,"homepage":"https://judo.codes","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BlackBeltTechnology.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-06-20T16:33:59.000Z","updated_at":"2024-03-15T15:22:35.000Z","dependencies_parsed_at":"2023-02-10T09:15:38.217Z","dependency_job_id":null,"html_url":"https://github.com/BlackBeltTechnology/judo-community","commit_stats":{"total_commits":85,"total_committers":8,"mean_commits":10.625,"dds":0.5529411764705883,"last_synced_commit":"0d342acc46461e73e61cb46a6aaf5ad6cea68941"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackBeltTechnology%2Fjudo-community","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackBeltTechnology%2Fjudo-community/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackBeltTechnology%2Fjudo-community/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BlackBeltTechnology%2Fjudo-community/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BlackBeltTechnology","download_url":"https://codeload.github.com/BlackBeltTechnology/judo-community/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225610683,"owners_count":17496318,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","low-code","low-code-framework","modeling","modeling-language"],"created_at":"2024-11-20T18:32:17.345Z","updated_at":"2024-11-20T18:32:18.671Z","avatar_url":"https://github.com/BlackBeltTechnology.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"ifdef::env-github[]\n++++\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"200\" height=\"160\" src=\"https://github.com/BlackBeltTechnology/judo-community/raw/develop/docs/assets/judo_logo.svg\"\u003e\n\u003c/p\u003e\n++++\nendif::[]\nifndef::env-github[]\nimage::docs/assets/judo_logo.svg/[JUDO,200,160,align=\"center\"]\nendif::[]\n\nifdef::env-github[]\n++++\n\u003cp align=\"center\"\u003e\n  A low-code development toolbox optimized for creating and operating enterprise applications.\n\u003c/p\u003e\n++++\nendif::[]\nifndef::env-github[]\n[.text-center]\nA low-code development toolbox optimized for creating and operating enterprise applications.\nendif::[]\n\nifdef::env-github[]\n++++\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/BlackBeltTechnology/judo-community\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-EPL%20v2.0-blue.svg\" alt=\"License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/RcyHnBndNU\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/discord/918892501434241054\" alt=\"Discord\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://documentation.judo.technology\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-passing-brightgreen\" alt=\"Documentation\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n++++\nendif::[]\nifndef::env-github[]\n[.text-center]\nimage:https://img.shields.io/badge/license-EPL%20v2.0-blue.svg[link=\"https://github.com/BlackBeltTechnology/judo-community\"]\nimage:https://img.shields.io/discord/918892501434241054[link=\"https://discord.gg/RcyHnBndNU\"]\nimage:https://img.shields.io/badge/docs-passing-brightgreen[link=\"https://documentation.judo.technology\"]\nendif::[]\n\n== What is low-code?\n\nSimply put, low-code development is a paradigm that uses models as the primary artifact of the development process, and\nthe implementation is (semi-)automatically generated from the models.\n\n== Target audience\n\nJUDO is designed for Java developers who want to speed up their work and focus on business needs instead of typing\narchitectural glue code and copying design patterns.\n\n== System Requirements\n\n=== JDK 11\n\nThe JUDO platform is developed and tested against OpenJDK 11. Our recommended vendor is https://www.azul.com/downloads/?version=java-11-lts\u0026package=jdk[Zulu JDK]\n\nChecking your JDK version:\n\n[source,bash]\n----\njava -version\n----\n\nWhich should display something similar to:\n\n[source,bash]\n----\nopenjdk version \"11.0.16\" 2022-07-19 LTS\nOpenJDK Runtime Environment Zulu11.58+15-CA (build 11.0.16+8-LTS)\n...\n----\n\n\u003e 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.\n\n=== Maven 3.8.x\n\nOur project orchestrator and build tool is https://maven.apache.org/download.cgi[Apache Maven v3.8.x].\n\nChecking your Maven version:\n\n[source,bash]\n----\nmvn -version\n----\n\nWhich should display something similar to:\n\n[source,bash]\n----\nApache Maven 3.8.6\nMaven home: /usr/share/maven\n...\n----\n\n\u003e The key here is again, the version number, which in our case is: `3.8.6`. The version number **MUST** start with `3.8`!\n\n== Getting started\n\n=== Bootstrap a project from an archetype\n\nOpen your terminal, and go to a folder where you would like the archetype to generate your project under (e.g.: `~/projects/`).\n\nRunning the following command generates a https://github.com/spring-projects/spring-boot[Spring Boot] project with a\ntest model and a simple integration test:\n\n[source,bash]\n----\nmvn org.apache.maven.plugins:maven-archetype-plugin:3.1.1:generate -B \\\n  -DarchetypeGroupId=hu.blackbelt.judo.jsl \\\n  -DarchetypeArtifactId=judo-jsl-springboot-archetype \\\n  -DarchetypeVersion=1.0.3 \\\n  -DgroupId=com.example \\\n  -DmodelName=Test\n----\n\n\u003e For detailed documentation on the Archetype, please visit the https://github.com/BlackBeltTechnology/judo-jsl-springboot-archetype[judo-jsl-springboot-archetype]\nrepository\n\nOnce the archetype has finished generating sources, your project should be available under `~/projects/com.example.Test`\n\nRunning `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.\n\n=== Bootstrapped sources\n\n==== application.properties\n\nLocated under: `src/main/resources`\n\nThis is a standard Spring Boot resource which by default is generated to utilize HSQL Database (we support PostgreSQL as well).\n\n```\nspring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver\nspring.datasource.url=jdbc:hsqldb:mem:testdb;DB_CLOSE_DELAY=-1\nspring.datasource.username=sa\nspring.datasource.password=\nspring.liquibase.change-log=classpath:model/Test-liquibase_hsqldb.changelog.xml\njudo.modelName=Test\n```\n\n==== Test.jsl\n\nLocated under: `src/main/resources/model`\n\nThe model defines a custom type named `String`, an entity `Person` which  __- for the sake of having fun -__ also\nhas a `derived` attribute called `fullName`.\n\n```\nmodel Test;\n\ntype string String(min-size = 0, max-size = 128);\n\nentity Person {\n    field String firstName;\n    field String lastName;\n    derived String fullName =\u003e self.firstName + \" \" + self.lastName;\n}\n```\n\n==== TestSpringApplication.java\n\nLocated under: `src/main/java/com/example/test`\n\nThis is the entry point of a bare-bones Spring Boot Application similar to what you'd get if you'd have used the\nhttps://start.spring.io[start.spring.io] generator\n\n==== TestSpringApplicationTests.java\n\nLocated under: `src/test/java/com/example/test`\n\n[source,java]\n----\npackage com.example.test;\n\nimport com.example.test.test.sdk.test.test.Person;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\n\nimport java.util.Optional;\n\nimport static org.junit.jupiter.api.Assertions.assertEquals;\n\n@SpringBootTest\nclass TestSpringApplicationTests {\n    @Autowired\n    Person.PersonDao personDao;\n\n    @Test\n    void testDaoFunctions() {\n        Person createdPerson = personDao.create(Person.builder()\n                .withFirstName(\"FirstName\")\n                .withLastName(\"LastName\")\n                .build());\n\n        assertEquals(Optional.of(\"FirstName\"), createdPerson.getFirstName());\n        assertEquals(Optional.of(\"LastName\"), createdPerson.getLastName());\n        // Test derived\n        assertEquals(Optional.of(\"FirstName LastName\"), createdPerson.getFullName());\n    }\n}\n----\n\n== Documentation\n\nOur official documentation page can be found at link:https://documentation.judo.technology[https://documentation.judo.technology].\n\n== Questions\n\nFor questions and support please use the official https://discord.com/channels/918892501434241054[Discord channel]. The issue list of this\nrepo is exclusively for bug reports and feature requests.\n\n== Issues\n\nFor issue submission, please follow the guidelines displayed under each issue category.\n\nPlease keep in mind that this repository is only an aggregator, therefore if you have a specific problem / idea / suggestion\nfor a certain sub-repo, then it is encouraged to open the ticket there.\n\n== Contributing to JUDO\n\nEveryone is welcome to contribute to JUDO! As a starter, please read the corresponding link:CONTRIBUTING.adoc[CONTRIBUTING] guide for details!\n\n== License\n\nJUDO Community modules are licensed under the https://www.eclipse.org/legal/epl-2.0/[Eclipse Public License - v 2.0].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackbelttechnology%2Fjudo-community","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblackbelttechnology%2Fjudo-community","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblackbelttechnology%2Fjudo-community/lists"}