{"id":25569754,"url":"https://github.com/opencirclesolutions/dynamo","last_synced_at":"2025-10-20T15:57:03.047Z","repository":{"id":3977010,"uuid":"50842364","full_name":"opencirclesolutions/dynamo","owner":"opencirclesolutions","description":"Dynamo - Web Application Accelerator Framework","archived":false,"fork":false,"pushed_at":"2025-09-15T07:50:59.000Z","size":65540,"stargazers_count":11,"open_issues_count":64,"forks_count":8,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-10-20T15:56:40.535Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opencirclesolutions.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-02-01T13:49:36.000Z","updated_at":"2025-08-13T11:14:36.000Z","dependencies_parsed_at":"2023-07-06T10:46:04.612Z","dependency_job_id":"5ccabeb1-7a35-412a-b88c-7f7dd1f6f03f","html_url":"https://github.com/opencirclesolutions/dynamo","commit_stats":null,"previous_names":[],"tags_count":108,"template":false,"template_full_name":null,"purl":"pkg:github/opencirclesolutions/dynamo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencirclesolutions%2Fdynamo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencirclesolutions%2Fdynamo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencirclesolutions%2Fdynamo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencirclesolutions%2Fdynamo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opencirclesolutions","download_url":"https://codeload.github.com/opencirclesolutions/dynamo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opencirclesolutions%2Fdynamo/sbom","scorecard":{"id":708994,"data":{"date":"2025-08-11","repo":{"name":"github.com/opencirclesolutions/dynamo","commit":"e961ba18e17cdcb9a177a60a7fa7eccc544275e7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: topLevel 'contents' permission set to 'write': .github/workflows/create-release.yml:14","Warn: no topLevel permission defined: .github/workflows/maven.yml:1","Warn: no topLevel permission defined: .github/workflows/pages.yml:1","Warn: topLevel 'packages' permission set to 'write': .github/workflows/publish-release.yml:8","Info: topLevel 'contents' permission set to 'read': .github/workflows/publish-release.yml:9","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: dynamo-frontend/node/node.exe:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":10,"reason":"SAST tool detected","details":["Info: SAST configuration detected: Sonar","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:128: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/create-release.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/create-release.yml:108: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/create-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/maven.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/maven.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/maven.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/pages.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/pages.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/publish-release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish-release.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/publish-release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish-release.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/opencirclesolutions/dynamo/publish-release.yml/master?enable=pin","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   4 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-6q3q-6v5j-h6vg","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T07:35:48.636Z","repository_id":3977010,"created_at":"2025-08-22T07:35:48.636Z","updated_at":"2025-08-22T07:35:48.636Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280118754,"owners_count":26275307,"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","status":"online","status_checked_at":"2025-10-20T02:00:06.978Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-02-21T00:02:36.210Z","updated_at":"2025-10-20T15:57:03.043Z","avatar_url":"https://github.com/opencirclesolutions.png","language":"Java","funding_links":[],"categories":["开发框架"],"sub_categories":[],"readme":"= Dynamo\n:toc:\n\nimage:dynamo-documentation/media/logo-dynamo.png[image]\n\nWeb Application Accelerator Framework\n\nDeveloped, maintained and sponsered by\n\nimage:dynamo-documentation/media/logo-opencirclesolutions.svg[image,width=256,height=53]\n\nCopyright © 2014 - 2024 Open Circle Solutions BV.\n\n== Introduction\n\nThe Dynamo Web Application Accelerator Framework is a software\ndevelopment framework developed by Open Circle Solutions that aims to\nincrease productivity by using design principles such as convention over\nconfiguration, model-driven development and DRY (don’t repeat yourself).\n\nAt the core of Dynamo is the concept of the _Entity Model_. The Entity\nModel describes the attributes and behaviour of an entity (or domain\nobject) in your application. This Entity Model can then be used as the\nbasis for creating forms, tables, search screens etc.\n\nThe _Entity Model_ of an entity is automatically constructed based on\nthe properties of the attributes of the entity (using sensible defaults\nas described by the convention over configuration principle) and can\nfurther be modified by using annotations and message bundle entries. The\nmain goal is to reduce the amount of (boilerplate) code required to\nperform common actions like creating search screens and edit forms.\n\nComplementing the _Entity Model_ is a set of user interface components\n(widgets) that can be used to quickly construct screens for common use\ncases, and several base classes for the Data Access and Service layers.\n\nThe Dynamo framework is built around a number of proven and highly\nproductive set of technologies:\n\n* JPA2 for ORM\n* QueryDSL for type-safe query generation\n* Spring Core \u0026 Spring Boot as the application framework\n* Angular \u0026 PrimeNG as the user interface framework\n* Apache Camel for integration\n\n\n== Dynamo versions and innovation\n\nPlease note that there currently two different Dynamo versions:\n\n1. Version 4.x and beyond that implements the generated UI with Angular and PrimeNG\n\n2. The older version 3.x that implements the generated UI with Vaadin\n\nThe master branch will focus on innovation for Dynamo v4 and beyond. Dynamo V3.x will be maintained with updates of dependencies when needed, but new functions of Dynamo V4 will only be backported when demand and business requirements are sufficient.\n\n=== Features and benefits of the different Dynamo versions\n\nDynamo has many features and functionality, which are not covered fully in this summary. But this overview is intended to summarize the most notable features and benefits.\n\n==== Features in both Dynamo versions\n\n*UI features*\n\n* Runtime generation of complete UI in several different layouts to support various use cases\n* Choice of layouts:\n** A “_simple search_” layout consisting of a search form based on the Dynamo Entity Model and a results table\n** An _edit form_ that can be used to create new entities or modify existing ones\n** A _split layout_ that can be used to display a results table and an input form next to each other. The results table can optionaly be filtered with a simple quick search or a search popup dialog\n** A _search dialog_ to filter and select one or more entities from a potential large resultset\n** The _FlexibleSearchLayout_ is a search layout that allows the user to create complex search query’s by adding/removing search criteria\n** The _EntityPopupDialog_ is a popup dialog that allows the user to create or modify a single entity.\n* Automatic form filler using AI (LLM), copy your unstructured data to the form filler dialog and the AI will interpret the data and automatically translate, transform, convert and fill in the form fields\n* Automatic generation of applicable components for fields based on datatype and/or declaration:\n** Nested detail table (children)\n** Dropdown (n-1 relationship to other entity)\n** Multi-select (n-m relationship to other entity)\n** Lookup field (n-1 relationship to other entity)\n** Option to edit element collections (children)\n** Check boxes\n** Date picker\n* The functionality to dynamically replace the standard Dynamo input components by custom components\n* Functionality to search, filter, add, update and remove entities\n* File upload component\n* Fields can be grouped together in panels or tabs\n* Field ordering can be declared\n* Integrated bean validation with fields in UI\n* Custom validation support in UI\n* Paging and Lazy loading of large resultsets\n* Default transformation of Enum values to select component\n* Automatic link generation to navigate from a child relationship to the applicable detail form\n* The option to post-process the edit form after the components have been created (e.g. to add dependencies between fields)\n* The option to export data from a table to CSV or Excel\n* Nested entities and entity collections are supported\n* Can be styled by using themes or custom\n\n*Backend features*\n\n* Default services API for business logic (extensible)\n* Default data access layer (extensible)\n* No need to write query or persistence logic (extensible)\n* Simple but powerful fluent filter logic\n* Paging and Lazy loading of large resultsets\n* Entity query optimization by the use of declarative (fetch)joins which promotes the JPA advise of lazy loading of relationships\n* Search results can furthermore be limited to prevent large results and timeouts\n* Services are transactional by default\n\n*Additonal (optional) features*\n\n* The _MultiDomainEditLayout_ is a layout that can be used to easily edit multiple types of simple domain (code table) entities and includes a default backend implementation with JPA entities and entity model\n* The Hibernate envers module adds supports history on entities\n* The parameters module adds form to manage parameter lists\n\n==== Differences between the Dynamo versions\n\n|===\n|Feature |Dynamo V3.x |Dynamo V4.x\n\n|UI Framework\n|Vaadin\n|Angular\n\n|UI Widgets\n|Vaadin\n|PrimeNG\n\n|UI Widget generation: Auto-complete (n-1 relationship to other entity)\n|No\n|Yes\n\n|UI Widget generation: Radio buttons\n|No\n|Yes\n\n|Out of the box https://www.w3.org/WAI/standards-guidelines/wcag/[WCAG] compliance\n|https://vaadin.com/accessibility[Yes]\n|https://primeng.org/guides/accessibility[Yes]\n\n|Default REST API for entity CRUDS\n|No\n|Yes\n\n|Default REST API for entity model\n|No\n|Yes\n\n|Declarative security for pages\n|Yes\n|Yes\n\n|Declarative security for REST\n|No\n|Yes\n\n|Declarative security for Menus\n|Yes\n|No\n\n|Replacing generated UI components\n|Subclass layout component\n|Declarative\n\n|Custom actions as buttons with dialog\n|Subclass layout component, but not intuitive\n|Easy and concise with code and declaration\n\n|===\n\n\n== Documentation\n\nDocumentation of Dynamo can be found xref:dynamo-documentation/index.adoc[here].\n\nInterested in contributing? Check our https://github.com/opencirclesolutions/dynamo/wiki[wiki]!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencirclesolutions%2Fdynamo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopencirclesolutions%2Fdynamo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopencirclesolutions%2Fdynamo/lists"}