back to home

SupernautApp / SupernautFX

A lightweight JavaFX DI framework that uses Micronaut® framework

View on GitHub
67 stars
9 forks
11 issues

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing SupernautApp/SupernautFX in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/SupernautApp/SupernautFX)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

= Supernaut.FX Sean Gilligan v0.4.0 :description: Supernaut.FX DI Framework README. :supernautfx-version: 0.4.0 :tip-caption: :bulb: :note-caption: :information_source: :important-caption: :heavy_exclamation_mark: :caution-caption: :fire: :warning-caption: :warning: image:https://github.com/SupernautApp/SupernautFX/workflows/Gradle%20Build/badge.svg["Build Status", link="https://github.com/SupernautApp/SupernautFX/actions"] image:https://gitlab.com/SupernautApp/SupernautFX/badges/master/pipeline.svg[link="https://gitlab.com/SupernautApp/SupernautFX/pipelines",title="pipeline status"] Supernaut.FX is a lightweight dependency injection framework for https://openjfx.io[JavaFX] applications. It is a wrapper above the core dependency injection capability of https://micronaut.io[Micronaut® framework] (provided by the JAR.) It enables the use of dependency injection in application, controller, and service objects. == Features • JavaFX-compatible Dependency Injection ** Main application class is dependency-injected ** JavaFX FXML controllers are dependency-injected ** Service object dependency injection • Your main application class need not extend • abstraction for opening links in Web Browser (abstraction of JavaFX ) Simple:: Supernaut.FX aspires to be a component library for your application with the _sole concern_ of enabling dependency injection. Modern:: Supernaut.Fx is designed for _modern_ JavaFX applications that use the latest version of JavaFX (currently 17) and are built for distribution using either the https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html[jpackage] tool of JDK 17 or as native images using GraalVM JDK 11 (using https://www.graalvm.org/reference-manual/native-image/[native-image] and https://github.com/gluonhq/substrate[Gluon Substrate]) Lightweight:: Supernaut.FX introduces no new dependencies beyond what is required for JavaFX and the component of Micronaut® framework. == Getting Started See the _Getting Started_ section in the https://www.supernaut.app/SupernautFX/supernaut-user-guide.html[Supernaut.FX User's Guide]. A sample, "hello world"-style project is available for cloning in both https://github.com/SupernautApp/supernaut-fx-sample-maven[Maven] and https://github.com/SupernautApp/supernaut-fx-sample-gradle[Gradle] flavors. == API Documentation https://www.supernaut.app/SupernautFX/apidoc/[Supernaut.FX JavaDoc] is available on GitHub Pages. == Binaries Although the API may change, binary packages are available on https://gitlab.com/SupernautApp/SupernautFX/-/packages[GitLab.com]. You can download JARs or use the provided Maven coordinates to link to them directly from your or . === Maven To access our GitLab Maven repository, add the following to your : [source] ---- gitlab-supernaut-maven https://gitlab.com/api/v4/projects/26584840/packages/maven ---- See the https://github.com/SupernautApp/supernaut-fx-sample-maven[Maven sample application] for the details of setting up your . === Gradle To access our GitLab Maven repository, add the following to the section of your : [source] ---- maven { url 'https://gitlab.com/api/v4/projects/26584840/packages/maven' } ---- See the https://github.com/SupernautApp/supernaut-fx-sample-gradle[Gradle sample application] for the details of setting up your . == Modules Supernaut.FX currently consists of 3 Java modules (JARs) [cols="2, 2, 2a"] |=== |Module name | Purpose | Dependencies |https://github.com/SupernautApp/SupernautFX/blob/master/supernaut/src/main/java/module-info.java[ ] | Interfaces for background components (no JavaFX) | *No dependencies!* |https://github.com/SupernautApp/SupernautFX/blob/master/supernaut-fx/src/main/java/module-info.java[ ] | JavaFX application dependency injection support | • • *JavaFX* • |https://github.com/SupernautApp/SupernautFX/blob/master/supernaut-fx-micronaut/src/main/java/module-info.java[ ] | App Launcher with dependency injection provided by Micronaut framework | • • |=== Typical applications will have a _compile-time_ dependency on and a _runtime_ dependency on . You may also develop library modules for services depending only on . == Building Supernaut . Clone the repository . Make sure your points to a JDK 17 or newer . To test one of the included sample apps: . Run the sample Hello app .. . Build a -ed Hello app .. .. Open the directory and launch the native application for your platform == Inspired By Supernaut.FX was inspired by two existing JavaFX DI frameworks, but is focused on JavaFX 11 and later, Java Module System, , , and Micronaut framework. Thanks Adam Bien and Gluon for the inspiration. • Adam Bien's http://afterburner.adam-bien.com[afterburner.fx] • https://gluonhq.com/labs/ignite/[Gluon Ignite] == Design Goals We have researched https://github.com/mhrimaz/AwesomeJavaFX#frameworks[existing JavaFX frameworks] and haven't found anything that seems well-suited for the following criteria: • Simple ** Minimizes abstraction and inheritance ** Avoids imposing architectural patterns (as much as possible with DI) ** Try to be more of a library than a framework • Fast application launch • Provides support for compile-time dependency injection (e.g. via https://micronaut.io[Micronaut framework]) ** Initial releases are for Micronaut framework only ** Possibly in the future could use an abstraction to allow other similar DI frameworks (help wanted with this issue) • Designed for Java apps shipped with a bundled runtime ** Applications built with JDK 17+ https://docs.oracle.com/en/java/javase/17/docs/specs/man/jpackage.html[jpackage] ** Applications built with https://www.graalvm.org/[GraalVM] and https://github.com/gluonhq/substrate[Gluon Substrate] • Aggressively tracks the latest JDK and JavaFX, recent Android versions ** JDK 11 or later for JavaFX components ** JDK 9 (maybe JDK 8 multi-release JARs?) for base interfaces and possible Android support • Minimal dependencies, minimal transitive dependencies ** Core compon…