Giter Site home page Giter Site logo

liturner / frederick Goto Github PK

View Code? Open in Web Editor NEW
6.0 2.0 1.0 1.49 MB

The name takes from Frederick the Great, a German general from the 1700s. Frederick is a open-source toolkit aimed at the German Technisches Hilfswerk Zugtrupp.

Home Page: https://liturner.github.io/frederick/

License: MIT License

Java 100.00%
emergency-management geospatial geotools germany gis java thw

frederick's Introduction

Download Frederick

Github All Releases

Links

Project Type

  • Maven
  • Java 17
  • VS Code (optionally)

Project Aims

We aim to provide a set of tools to help with the missions and deployments of the German Federal Agency for Technical Relief. The project aims to produce software which fulfills stringent security and data protection checks.

  • Stability of the software is preferred over quantity of features.
  • The software should only be configurable where necessary.
  • The software is to be used in emergency situations. Pretty comes second to fast.

Architecture

The application aims to have a fairly minimalistic architecture, while still ensuring that future refactoring is not a nightmare. The GUI is generally separate from the application, and the individual windows or major components of the application do not communicate directly with one another, but rather through a central command and event system. The primary points of interest are:

  • There is a single Application Service class which is not tied to the GUI or any major SDK. This is where all actions and events are consumed and produced. Future iterations may see this evolve into multiple services provided by modules. This class hides the data storage and logging from the user interfaces. This is a critical aspect to consider, as Unit Testing must be able to validate that the application always logs certain actions. (relevant for certification)
  • Each window is treated like a plugin which adds a new view on the data. It does not add any new functionality! All functionality is handled by the "Application Service" class.
  • Action Listeners should be limited to the main window frames, which themselves update their sub-components. This is purely for cognitive simplicity and may change if not strong enough as a tactic.
  • GIS stuff (Geotools) is kept in a single package. The application should never become dependent on such a major SDK.
  • GIS Layers are singletons. The application is deliberately static, and adding / removing data to and from the layers is well-defined enough that we can centralise the logic in classes which will only have one instance.

It is known that this architecture is not complete. As the application expands it will be updated to be more robust using a strong pattern. For the time being the intention is to spend some time developing the requirements of the application, before settling on a long term architecture.

Help

If you get stuck figuring out which module to require: https://stackoverflow.com/questions/74963898/how-do-i-discover-the-correct-java-11-module-names-for-my-geotools-project

frederick's People

Contributors

liturner avatar ruderphilipp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ruderphilipp

frederick's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.