Skip to content

πŸŒ‡ SunsetERP πŸŒ‡ - RESTful ERP based on OFBiz that runs on Quarkus.

License

Notifications You must be signed in to change notification settings

jnbdz/SunsetERP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

71 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Sunset

πŸŒ‡ SunsetERP πŸŒ‡


WARNING: This project is still in development. It is not ready for production use or any use at all. But help is always welcome!


SunsetERP is based on a heavily modified version of OFBiz to run on Quarkus.

Here are some of the features of SunsetERP/OFBiz:

  • Accounting (agreements, invoicing, vendor management, general ledger)
  • Asset maintenance
  • Catalogue and product management
  • Facility and warehouse management system (WMS)
  • Manufacturing execution / manufacturing operations management (MES/MOM)
  • Order processing
  • Inventory management, automated stock replenishment etc.
  • Content management system (CMS)
  • Human resources (HR)
  • People and group management
  • Project management
  • Sales force automation
  • Work effort management
  • Electronic point of sale (ePOS)
  • Electronic commerce (eCommerce)
  • Scrum (development) (Scrum software development support)
  • and many more to come...

SunsetERP benefits from OFBiz usage of standard business data models.

Delta with OFBiz

  • SunsetERP is based on Quarkus
    • Why? Quarkus is faster and makes Java projects more lightweight.
  • SunsetERP is API first (REST and SOAP)
    • Why? It makes it easier to integrate with other systems and create an SPA Single Page Application.
    • That being said the UI will be made with PatternFLy (of RedHat) and HTMX+RVST+HTMT. Because it looks way better than OFBiz UI. Sorry.
  • SunsetERP is using a reactive architecture
  • SunsetERP can be used in a microservices architecture more easily
  • SunsetERP is using a different authentication system
    • Why? It makes it easier to integrate with other systems, to reduce the attack surface and to have something else not to worry about.
    • It will soon be able to work out of the box with Keycloak.
      • Keycloak supports SAML 2.0, OpenID Connect, OAuth 2.0 and LDAP. So why reinvent the wheel?
    • So for more SSO and authentication options you will have to use Keycloak or some other system.

What stays the same

  • It is important to not stray away to far from the original OFBiz architecture and data model. This is to make sure that the project stays compatible with OFBiz plugins that already exist.
  • It is important that it does not feel like a different project.
  • The Data Models will stay untouched, but we might add new ones if need be.
  • Entity Engine will stay untouched.
  • Since Quarkus is used some changes to the usage of Groovy is to be expected.

Why keep SOAP?

  • SOAP is still used in many places and is still a very valid way of communicating with other systems. It is also very easy to use with Java.
  • SOAP in the world of accounting, banking and finance is still very much used. It is also used in the world of logistics and supply chain management.

Project Status

Still in dev mode.

Nice to have

  • https://kogito.kie.org/ (BPM and BRM)
  • Have a similar plugin system as Keycloak
  • Adapt ofbiz-plugins to this new setup
  • Adapt it for better Process Mining

Endpoints

  • /sunseterp/v1/health - Health check
  • /sunseterp/v1/info - Info about the framework
  • /sunseterp/v1/openapi - OpenAPI documentation
  • /sunseterp/v1/applications - List of applications
  • /sunseterp/v1/applications/{application} - Info about the application
  • /sunseterp/v1/applications/{application}/openapi - OpenAPI documentation for the application
  • /sunseterp/v1/applications/{application}/{actions} - Actions for the application
  • /sunseterp/v1/applications/{application}/{actions}/openapi - OpenAPI documentation for the actions
  • /sunseterp/v1/applications/{application}/services - List of services for the application
  • /sunseterp/v1/applications/{application}/services/{service} - Info about the service
  • /sunseterp/v1/applications/{application}/services/{service}/openapi - OpenAPI documentation for the service
  • /q/openapi - OpenAPI documentation
  • /q/swagger-ui - Swagger UI

History

  • Confirmed have change for: commit (on Aug 29, 2023)
  • The following change until Oct 2, 2023 are in none Java files (Groovy, Gradle and themes)
  • Starting from this commit the changes are missing: commit (Oct 2, 2023)
    • framework/widget/dtd/widget-form.xsd - was updated
  • commit (Oct 10, 2023) - unimportant front end
  • commit (Oct 11, 2023) - Java library version
  • commit (Oct 13, 2023) - Java library version
  • commit (Nov 2, 2023) - Need to apply the changes from OFBiz
    • framework/service/entitydef/entitymodel.xml
    • framework/service/src/main/java/org/apache/ofbiz/service/job/JobManager.java
    • framework/service/src/main/java/org/apache/ofbiz/service/job/PersistedServiceJob.java
  • commit (Nov 13, 2023) - Java library version
  • commit (Nov 20, 2023) - Groovy
  • commit (Nov 24, 2023) - Front end
    • framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
    • framework/widget/src/main/java/org/apache/ofbiz/widget/model/XmlWidgetFieldVisitor.java
  • commit (Dec 5, 2023) - Front end
  • commit (Dec 5, 2023)
    • framework/base/testdef/basetests.xml
  • commit (Dec 14, 2023)
    • framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
  • commit (Dec 14, 2023)
    • framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
  • commit (Dec 14, 2023)
    • framework/common/src/main/java/org/apache/ofbiz/common/CommonEvents.java
    • The rest is UI stuff and controller stuff
  • commit (Dec 15, 2023)
    • framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
  • commit (Dec 18, 2023)
    • framework/common/data/GeoData_IN.xml
  • commit (Dec 23, 2023) - Front end
  • commit (Dec 31, 2023) -
    • pullAllPlugins and pullPlugin scripts
  • commit (Jan 1, 2024)
    • .github/workflows/docker-image.yaml
    • .github/workflows/gradle.yaml
    • pullAllPluginsSource.sh
  • commit (Jan 1, 2024)
    • NOTICE
    • applications/datamodel/data/demo/AccountingDemoData.xml
  • commit (Jan 1, 2024)
    • README.adoc
    • build.gradle - It seems they commented out the code to pull plugin source
  • commit (Jan 2, 2024)
    • pull plugin stuff
  • commit (Jan 2, 2024)
    • pull plugin stuff (empty?)
  • commit (Jan 3, 2024)
    • README.adoc
    • pull plugin stuff
  • commit (Jan 3, 2024)
    • pull plugin stuff
  • commit (Jan 4, 2024)
    • pull plugin stuff
  • commit (Jan 4, 2024)
    • pull plugin stuff
  • commit (Jan 4, 2024)
    • front end
  • commit (Jan 6, 2024)
    • pull plugin stuff
  • commit (Jan 8, 2024)
    • front end
  • commit (Jan 8, 2024)
    • .github/workflows/docker-image.yaml
  • commit (Jan 12, 2024)
    • framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/ControlFilter.java
  • commit (Jan 23, 2024)
    • applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWrapper.java
    • applications/order/src/main/java/org/apache/ofbiz/order/order/OrderContentWrapper.java
    • applications/party/src/main/java/org/apache/ofbiz/party/content/PartyContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/category/CategoryContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigItemContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
  • commit (Jan 23, 2024)
    • applications/datamodel/entitydef/order-entitymodel.xml
    • applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCart.java
    • applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java
    • applications/product/servicedef/services_pricepromo.xml
    • applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java
  • commit (Jan 29, 2024)
    • applications/accounting/src/main/java/org/apache/ofbiz/accounting/thirdparty/eway/GatewayConnector.java
    • applications/accounting/src/main/java/org/apache/ofbiz/accounting/thirdparty/paypal/PayPalEvents.java
    • applications/content/src/main/java/org/apache/ofbiz/content/data/DataResourceWorker.java
    • framework/base/src/main/java/org/apache/ofbiz/base/config/UrlLoader.java
    • framework/base/src/main/java/org/apache/ofbiz/base/conversion/NetConverters.java
    • framework/base/src/main/java/org/apache/ofbiz/base/location/StandardUrlLocationResolver.java
    • framework/base/src/main/java/org/apache/ofbiz/base/util/HttpClient.java
    • framework/base/src/main/java/org/apache/ofbiz/base/util/UtilURL.java
    • framework/base/src/test/java/org/apache/ofbiz/base/conversion/MiscTests.java
    • framework/common/src/main/java/org/apache/ofbiz/common/email/EmailServices.java
    • framework/service/src/test/groovy/org/apache/ofbiz/service/ModelServiceTest.groovy - groovy
    • framework/webtools/src/main/groovy/org/apache/ofbiz/webtools/datafile/ViewDataFile.groovy - groovy
    • framework/webtools/src/main/java/org/apache/ofbiz/webtools/artifactinfo/ArtifactInfoFactory.java
  • commit (Feb 1, 2024)
    • Some changes in build.gradle
  • commit (Feb 2, 2024)
    • applications/order/src/main/java/org/apache/ofbiz/order/shoppingcart/ShoppingCartItem.java
  • commit (Feb 2, 2024)
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/MiniLangRuntimeException.java
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/SimpleMethod.java
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/ValidationException.java
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/envops/Break.java
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/method/envops/Continue.java
  • commit (Feb 2, 2024)
    • framework/minilang/src/main/java/org/apache/ofbiz/minilang/SimpleMethod.java
  • commit (Feb 2, 2024) - doc stuff
  • commit (Feb 2, 2024) - build.gradle
  • commit (Feb 2, 2024)
    • applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWrapper.java
    • applications/order/src/main/java/org/apache/ofbiz/order/order/OrderContentWrapper.java
    • applications/party/src/main/java/org/apache/ofbiz/party/content/PartyContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/category/CategoryContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigItemContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
    • applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/content/WorkEffortContentWrapper.java
  • commit (Feb 2, 2024)
    • applications/content/src/main/java/org/apache/ofbiz/content/content/ContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
  • commit (Feb 2, 2024)
    • applications/product/src/main/java/org/apache/ofbiz/product/category/CategoryContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/config/ProductConfigItemContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
    • applications/workeffort/src/main/java/org/apache/ofbiz/workeffort/content/WorkEffortContentWrapper.java
  • commit (Feb 2, 2024)
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductContentWrapper.java
    • applications/product/src/main/java/org/apache/ofbiz/product/product/ProductPromoContentWrapper.java
  • commit (Feb 3, 2024)
    • VERSION - Does not seem to be important
  • commit (Feb 3, 2024)
    • build.gradle - Related to groovyScripts
  • commit (Feb 4, 2024)
    • framework/webapp/src/main/java/org/apache/ofbiz/webapp/control/LoginWorker.java
  • commit (Feb 5, 2024) - Groovy
  • commit (Feb 5, 2024)
    • VERSION
  • commit (Feb 5, 2024)
    • Groovy
  • commit (Feb 5, 2024)
    • build.gradle
  • commit (Feb 5, 2024)
    • build.gradle
  • commit (Feb 5, 2024)
    • build.gradle
  • commit (Feb 5, 2024)
    • build.gradle
  • commit (Feb 6, 2024)
    • framework/common/webcommon/WEB-INF/common-controller.xml
  • commit (Feb 6, 2024)
    • applications/party/widget/partymgr/PartyMenus.xml - View stuff
  • commit (Feb 8, 2024)
    • docker/examples/postgres-demo/docker-compose.yml
  • commit (Feb 8, 2024) - Doc stuff
  • commit (Feb 8, 2024) - Doc stuff
  • commit (Feb 9, 2024) - Front end
  • commit (Feb 9, 2024) - Doc stuff
  • commit (Feb 9, 2024) - Doc stuff
  • commit (Feb 10, 2024) - Doc stuff
  • commit (Feb 14, 2024) - Doc stuff
  • commit (Feb 14, 2024) - Doc stuff
  • commit (Feb 14, 2024) - Front end

Notes about Paths:

groovyScripts {
        groovy {
            srcDirs += getDirectoryInActiveComponentsIfExists('src/main/groovy')
            compileClasspath += sourceSets.main.compileClasspath
            compileClasspath += sourceSets.main.output
        }

Might need to investigate:

  • sourceSets.main.compileClasspath
  • sourceSets.main.output

TODO

  • Change the name of the directories to use sunseterp instead of ofbiz
  • Create API for framework infos and health
  • Update Gradle
  • Update Quarkus
  • What is the version of OFBiz did I used to start? -- anything after commit (on Aug 29, 2023). For the documentation: 2024-04-20.
  • Refactor build.gralde
    • Analyse
    • Refactor and make sure the code is being merged properly
    • Refactor CLASSPATH (System.getProperty("java.class.path");)
      • Analyse is component-load.xml for applications/ and framework/ are being removed from Gradle level
      • Add the different paths for framework and applications since we are dividing not like OFBiz that merges them
        • Document this somewhere
      • Add the different paths for resources so that they can be found when .getRecourse() method is called
    • Refactor the tasks
      • Plugin management tasks
      • Clean tasks
      • Others
    • Refactor eclipse stuff
    • Add plugin management
      • Analyse
      • Add task for creating plugin
      • Add task for removing plugin (not tested)
      • Add task for updating plugin (not tested)
  • Documentation refactoring
    • Analyse
    • Move all the doc in the ./docs/ directory -- 2024-04-20.
    • Refactor if needed the build.gradle to be able to generate the documentation
    • Make sure that it outputs in those formats at least:
      • HTML
      • PDF
      • ePub
      • GitHub Wiki
      • Readthedocs
  • Start writing documentation for SunsetERP
    • Document components of build.gradle
    • Document the structure and the delta with OFBiz
    • Document about the resources
  • Load all components from OFBiz (the Gradle refactoring needs to be done first)
  • Refactor containers
    • Analyse
    • Create ControllerContainer (refactor CatalinaContainer)
      • Analyse
      • Generate code from web.xml and controller.xml configuration files
      • Add elements if they don't exist for OpenAPI
    • AdminServerContainer
    • EntityDataLoaderContainer
    • ComponentContainer
    • NamingServiceContainer
    • DelegatorContainer
    • ServiceContainer
    • RmiServiceContainer
    • TestRunContainer
  • Investigate the thread stuff (Analyse)
  • Replace but also keep component-load.xml with component-load.properties using cascading
  • Replace the other XML format configuration file with .properties using cascading (trying to standarized all the configurations with what already exists with Quarkus) (keep support for XML because of not wanting to break plugins "for now")
  • Replace and keep Entities with YAML (some XML are too complicated to be readable and usable with .properties)
  • Nice to have: little Gradle script to replace XML with .properties or YAML and check the rest of the code to see what else needs to be refactored to work with SunsetERP (since the merging will be different)
  • Add load all data
    • Analyse
    • Add the refactored code from build.gradle
  • Create a REST API for all components from OFBiz with the help of OpenAPI
    • Analyse
    • Use OFBiz services to generate API endpoints
    • Analyse if controller.xml can be used
  • Adapt code so that it uses HATEOAS to make sure it is fully complies with RestFul standard
    • Analyse
  • Error handling for Rest APIs
    • Create a custom exception handler
    • Create a custom error response
    • Centralize error handling and error messages
  • Create a SOAP API for all components that might need SOAP
    • Analyse (might not use)
  • Error handling for SOAP APIs
    • Analyse
  • Update code to support the latest Quarkus version
  • Add support for the latest Java version (Quarkus 3.9 the version currently used only supports Java version 17 and 21... So the version switch should be to Java 21)
  • Change library AWT for image modification (e.g.: net.coobird.thumbnailator, org.apache.xmlgraphics, Twelvemonkeys ImageIO) - Quarkus might not support AWT fully, and it is a bit old
  • Add Unit Tests
    • Analyse
  • Add Unit Tests for OpenAPI
    • Analyse (does it even exist? Validation?)
  • Update code with the changes that are from the OFBiz repository
  • Add OpenTelemetry for tracing
  • Integration with Keycloak
    • Analyse
  • Add integration tests
  • Add support for OpenSearch and ElasticSearch
  • .github/workflows for CI/CD
  • Optional Integration with Vault, Mozilla Sops and other secret management systems
  • Add performance tests
    • Analyse (e.g.: eBPF, BCC)
    • Create jMeter test profiles
  • Refactor code to make it faster
    • Analyse (maybe do it at the same time as adding performance testing)
  • Add support for ./lib/ for Keycloak plugin management (OFBiz also has it)
  • Add integration testing
    • Analyse (What to test? How to test?)
    • Databases:
      • PostgresSQL
      • MySQL, MariaDB
      • MSSQL
    • Search
      • Solr
      • OpenSearch
      • ElasticSearch
    • Data transfer
      • Kafka
      • Apache Airflow
      • SQS (maybe others from AWS)
    • Data storage
      • Ceph
      • S3
    • OpenTelemetry compliance
    • Logging performance (Netflix)
  • Add security tests
  • Add privacy tests (new EU and Qc regulations)
    • Analyse
  • Test for legal (copyright)
    • Analyse (GitHub workflow)
  • Tests microservices
    • Analyse (what is in market... Chaos Monkey, etc.) (since we are using Quarkus with Keycloak, OpenSearch, etc. we need to make sure that they are working properly even when one of those services goes down)
  • Redo front-end with HTMX+RVST+HTMT+jQuery+PatternFly special pattern (remove \n \r tidy up)
    • Analyse
    • Redo what was already done with HTMX+RVST+HTMT+jQuery+PatternFly special pattern
    • Unit tests
    • HTML validation
    • CSS validation
    • Lint validation
    • Functional testing with Cypress
    • Refactor flt files to use HTMX+RVST+HTMT
    • Refactor widgets to use HTMX+RVST+HTMT
    • Refactor screens to use HTMX+RVST+HTMT
    • Refactor forms to use HTMX+RVST+HTMT
    • Refactor menus to use HTMX+RVST+HTMT
    • Refactor themes to use HTMX+RVST+HTMT
    • Refactor images to use HTMX+RVST+HTMT
    • Refactor actions to use HTMX+RVST+HTMT
    • Remove all the screen code stuff since it is not needed anymore
    • Remove all the request-map, controller.xml stuff since it is not needed anymore
    • Remove all the web.xml stuff since it is not needed anymore
    • Remove all the Freemarker (template engine) stuff since it is not needed anymore
  • Process Mining testing
    • Analyse (make sure that SunsetERP returns what is needed for Process Mining. Also, is it possible to automate tests for Process mining? Document...)
  • Create tool to automate delta testing between SunsetERP and OFBiz to alert of any changes (the changes will always be done manually)
    • Analyse (GitHub Workflows)
  • Add support for BRM and BPM from kie
    • Analyse
  • Add Editor.js or Quilljs... maybe both?
    • Analyse
  • Copy as many features from WordPress as possible for Blogs (RSS feeds, etc.)
  • Add functions for CRM
    • Analyse
    • Add support for Twilio and other phone services (log calls and SMS/MMS) (record calls (gstreamer), record SMS/MMS, etc) (audio to text (gstreamer and PyTorch or whatever))
    • Add support for social media (posts, chat, etc.)
  • Add payment support
    • Analyse (PayPal and Stripe are the minimums)
    • PayPal
    • Stripe
  • Tax libraries support
    • Analyse (taxware... maybe there are others)
  • Add more accounting features
    • Analyse
  • Add more features to ticketing
    • Analyse
  • Cellphone code
    • Analyse (using the same principle as the web frontend)
    • Android
      • Analyse (PatternFly has a library for Kotlin)
    • iOS (iPhone and iPad)
      • Analyse (PatternFly??? or use Apple's GUI but still follow the frontend principal)
  • Desktop code
    • Analyse
    • Windows (C# .NET WEF or whatever is the latest)
    • MacOS (Swift)
    • Linux (GTK, QT, X11, Wayland)
  • BI tools integration
    • Analyse
  • Create demos
    • Blog website
    • Wiki (wiki type website for internal and external content)
    • eCommerce (the usual and inventory management, inventory from other sources, online marketplace (PayPal and Stripe))
    • Employee management (similar to others) (give their hours, vacation management, employee budgets, custom components)
    • CRM (Twilio, similar functions to Salesforce, etc.)
    • Payment management (Accounting)
    • Budgeting (Accounting)
      • Analyse (what is the market (e.g.: MovieMagic), etc.)
    • Bank (we have too)
    • Insurance service application (use kie as much as possible, examples of complex business logic)
    • ISP provider (sell cellphone, sell cellphone services, sell internet access, call in technicians, manage inventory, usage, subscription management, invoice, etc)
    • Uber clone
  • Divorce ./framework and ./applications (maybe bring it up)
    • Analyse (the framework should be a seperate project with the entity engine and applications should be components a dev could add or remove or even modify (adding it to plugins or libs or even Restful))
    • Analyse if possible to use @decorators to clean up the code and modernize it
    • It needs to be possible to call other applications without needing to import the code (should be possible to import or do a RestFul call)
      • Analyse
  • Create a separate library for the framework and give it a name and each application should have their own repo
  • Divorce entity engine from applications so that a Gradle script can build the data model in a separate env like CI/CD without needing to include all the code in the application code (lets make this light)
  • Re-write all the demos to support the new structure
  • Add AI for QA
    • Analyse (what is in the market)
    • Add AI for testing
    • Add AI for code review (AWS CodeGuru)
    • Security testing AI (AWS GuardDuty)
  • Come up with some new ideas!

Abstraction:

  1. A developer should be able to easily build a ERP microservices env.
  2. A developer should not need to put too much energy on the front end and not have any business (or very little) in the front-end (no more Angular and React or whatever else that causes people to replicate everything on the frontend (INSANITY!!))
  3. API first (HATEOAS)
  4. Decoupling should be easy
  5. Make applications lighter and more portable
  6. Add features to be more attractive vs Salesforce and Odoo
  7. Better testing to catch more issues (currently there are broken parts of OFBiz and for some reason it hasn't been caught)
  8. So in other words, we need better QA
  9. Demos help others see what can be done and how

Here is what the architecture should look like after the refactoring: Architecture

Comparisons

Getting Started

This project uses Quarkus, the Supersonic Subatomic Java Framework.

If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .

Running the application in dev mode

You can run your application in dev mode that enables live coding using:

./run-dev.sh

Old:

./gradlew quarkusDev

NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.

Packaging and running the application

The application can be packaged using:

./gradlew build

It produces the quarkus-run.jar file in the build/quarkus-app/ directory. Be aware that it’s not an ΓΌber-jar as the dependencies are copied into the build/quarkus-app/lib/ directory.

The application is now runnable using java -jar build/quarkus-app/quarkus-run.jar.

If you want to build an ΓΌber-jar, execute the following command:

./gradlew build -Dquarkus.package.type=uber-jar

The application, packaged as an ΓΌber-jar, is now runnable using java -jar build/*-runner.jar.

Creating a native executable

You can create a native executable using:

./gradlew build -Dquarkus.package.type=native

Or, if you don't have GraalVM installed, you can run the native executable build in a container using:

./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true

You can then execute your native executable with: ./build/sunseterp-1.0.0-SNAPSHOT-runner

If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.

Related Guides

  • SmallRye OpenAPI (guide): Document your REST APIs with OpenAPI - comes with Swagger UI
  • RESTEasy Reactive (guide): A Jakarta REST implementation utilizing build time processing and Vert.x. This extension is not compatible with the quarkus-resteasy extension, or any of the extensions that depend on it.
  • OpenID Connect (guide): Verify Bearer access tokens and authenticate users with Authorization Code Flow
  • Elytron Security Properties File (guide): Secure your applications using properties files
  • SmallRye Health (guide): Monitor service health

Provided Code

RESTEasy Reactive

Easily start your Reactive RESTful Web Services

Related guide section...

SmallRye Health

Monitor your application's health using SmallRye Health

Related guide section...

Crypto notice

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country’s laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

  • Various classes in OFBiz, including DesCrypt, HashCrypt, and BlowFishCrypt use libraries from the Sun Java JDK API including java.security.* and javax.crypto.* (the JCE, Java Cryptography Extensions API)
  • Other classes such as HttpClient and various related ones use the JSSE (Java Secure Sockets Extension) API

Copyright

Jean-Nicolas Boulay Desjardins and Apache Foundation. All rights reserved. 2024.