{"id":28395088,"url":"https://github.com/webfx-project/webfx-stack","last_synced_at":"2025-10-09T22:41:58.651Z","repository":{"id":185964515,"uuid":"513490539","full_name":"webfx-project/webfx-stack","owner":"webfx-project","description":"A collection of framework pieces for WebFX","archived":false,"fork":false,"pushed_at":"2025-09-05T10:58:17.000Z","size":7663,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T12:41:55.804Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://webfx.dev","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/webfx-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-07-13T11:15:37.000Z","updated_at":"2025-09-05T10:58:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"cc9e29c4-91c0-4153-9cf2-10e6231ac23b","html_url":"https://github.com/webfx-project/webfx-stack","commit_stats":null,"previous_names":["webfx-project/webfx-stack"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/webfx-project/webfx-stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webfx-project%2Fwebfx-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webfx-project%2Fwebfx-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webfx-project%2Fwebfx-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webfx-project%2Fwebfx-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webfx-project","download_url":"https://codeload.github.com/webfx-project/webfx-stack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webfx-project%2Fwebfx-stack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002112,"owners_count":26083307,"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-09T02:00:07.460Z","response_time":59,"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-05-31T19:38:51.916Z","updated_at":"2025-10-09T22:41:58.623Z","avatar_url":"https://github.com/webfx-project.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Deploy to Sonatype](https://github.com/webfx-project/webfx-stack/actions/workflows/build-and-deploy-to-sonatype.yml/badge.svg)\n![Scc Code Count Badge](https://sloc.xyz/github/webfx-project/webfx-stack/?category=code)\n![Scc Blanks Count Badge](https://sloc.xyz/github/webfx-project/webfx-stack/?category=blanks)\n![Scc Comments Count Badge](https://sloc.xyz/github/webfx-project/webfx-stack/?category=comments)\n![Scc Lines Count Badge](https://sloc.xyz/github/webfx-project/webfx-stack/?category=lines)\n![Scc COCOMO Badge](https://sloc.xyz/github/webfx-project/webfx-stack/?category=cocomo)\n\n# The WebFX Stack\n\nThe WebFX Stack is a collection of framework pieces for WebFX, designed to work together as follows:\n\n\u003cdiv align=\"center\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://docs.webfx.dev/webfx-readmes/webfx-stack-dark.svg\"\u003e\n      \u003cimg src=\"https://docs.webfx.dev/webfx-readmes/webfx-stack-light.svg\" /\u003e\n    \u003c/picture\u003e\n\n\u003cp\u003e\u003c/p\u003e\n\n| Framework piece        | Location | Description                                                                          |\n|------------------------|----------|--------------------------------------------------------------------------------------|\n| **Routing**            | UI       | UI router for Single Page Application navigation                                     |\n| **I18n**               | UI       | Internationalisation with JavaFX binding                                             |\n| **Action**             | UI       | Simple Action API with text, graphic, disabled \u0026 visible bindings                    |\n| **Validation**         | UI       | Form \u0026 dialog validation framework                                                   |\n| **Authn**              | Non-UI   | Simple interface for Authentication                                                  |\n| **Authz**              | Non-UI   | Advanced authorization framework with JavaFX bindings                                |\n| **ORM**                | Non-UI   | Client-side ORM with powerful reactive filters (using JavaFX binding)                |\n| **QueryPush**          | Non-UI   | Push notification for database queries                                               |\n| **Push**               | Non-UI   | General purpose push notification API                                                |\n| **DB**                 | Non-UI   | Async database access API (query \u0026 submit)                                           |\n| **Com**                | Shared   | Async communication via a websocket event bus                                        |\n| **QueryPush (server)** | Server   | server-side peer of QueryPush                                                        |\n| **Push (server)**      | Server   | server-side peer of Push                                                             |\n| **DB (server)**        | Server   | server-side peer of DB                                                               |\n| **Vert.x** *           | Server   | Implementation of the WebFX Stack server-side modules for [Vert.x](https://vertx.io) |\n\n*\\* An additional implementation for Spring Boot might be considered in the future*. \n\n\u003c/div\u003e\n\n## Why a new framework?\n\nBecause the WebFX Stack possesses these three special qualities:\n\n* Mainly client-side\n* Cross-platform (GWT compatible in particular)\n* Designed to work with JavaFX\n\nThese combined qualities are not possessed by any other Java framework, and are the qualities you would naturally expect when developing WebFX applications.\n\nWhy mainly client-side? The whole WebFX ecosystem, and the WebFX Stack in particular, like other modern mobile \u0026 web technologies, emphasise the client-side paradigm where most of the application code resides on the client rather than on the server. This provides a better user experience (faster navigation, faster rendering, offline mode, etc...).\n\nFor example, as opposed to other Java ORMs which are primarily designed to run on the server (some may run on the client - but definitely not in the browser - and require most of the time a direct database access), the ORM we provide is primarily designed to run on the client (including in the browser) and doesn't require a direct database access (DB queries are sent asynchronously through the event bus). It builds the domain objects, or entities, in the client memory, so they can be directly accessed when running the client application logic, or building the UI. It can even react to push notifications and automatically update these entities, and notify the UI of these changes (the UI is automatically updated when using Visual components from [WebFX Extras](https://github.com/webfx-project/webfx-extras)).\n\nOur authorization framework is also designed for a client-side usage, and integrates beautifully with JavaFX (all your UI actions will be automatically displayed/hidden or enabled/disabled through JavaFX bindings, depending on the authorizations granted to the authenticated user).\n\n## License\n\nThe WebFX Stack is a free, open-source software licensed under the [Apache License 2.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebfx-project%2Fwebfx-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebfx-project%2Fwebfx-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebfx-project%2Fwebfx-stack/lists"}