TodoMVC for JavaFX. The same application with different frameworks and design patterns
Java CSS
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
gradle/wrapper Build update (#12) Oct 30, 2016
reference_impl fix easy-di version for all modules Sep 23, 2016
.gitignore project init with first steps of a reference impl Nov 21, 2015
.travis.yml Travis ci (#8) Sep 27, 2016 Create Sep 24, 2016 fix wrong url in travis-ci badge Sep 27, 2016
gradlew Build update (#12) Oct 30, 2016
gradlew.bat Build update (#12) Oct 30, 2016
settings.gradle Initial version of ReduxFX sample Nov 6, 2016

TodoMVC JavaFX

Build Status

TodoMVC-JavaFX is a collection of different implementations of the same JavaFX application. It aims to provide examples with different design patterns, frameworks, programming languages and programming styles.

It's inspired by the famous TodoMVC project which is doing the same thing for JavaScript/Web frameworks.

By implementing the same use cases with different approaches we hope to provide several benefits:

  • find out which different approaches and frameworks are out there
  • compare different frameworks
  • learn how to setup a small application with a specific framework and use it as basic project skeleton
  • bring JavaFX community together and discuss the various approaches


Contributions are very welcome. There are several thinks to help out:

  • add a new example for another framework/language/pattern
  • improve existing examples
  • improve documentation of the examples
  • ideas on how the build scripts can be improved
  • fix spelling errors
  • ...

How to add a new example?

  1. Add a new issue with your idea. This way we can discuss about your idea and can make sure that multiple people aren't working on the same things without knowing from each other
  2. Fork the repository
  3. Add a new gradle module for your example
  • Create a directory examples/<your-framework>
  • Add the module in settings.gradle
  • Add a build.gradle file in your directory for your submodule
  1. Implement your example app.
  2. Add an acceptance test for your app. See Acceptance Tests for more infomations. If this approach doesn't work for your framework or language please comment in your issue and we will find a solution.
  3. Create a pull request

The module reference_impl contains a basic solution of how the app should work. You can use this as a starting point for your app. There are also FXML and CSS files that you can use.

Acceptance Tests

The idea behind this project is to have multiple implementations of the same use cases. To make sure that each implementation has the same behaviour and acomplishes the same requirements there is a test suite of TestFX test cases for all requirements. You can find the tests in /tests/src/main/java/todomvcfx/

To add the acceptance tests for your module:

  1. Create a test class in your module with a name like <your-framework>Test
  2. This test class has to extend from todomvcfx.AbstractTest (the dependency to the tests module is defined globally in the root build.gradle file)
  3. Override the method getAppClass() in your test class. This method has to return a class reference to your application's starter class (the class that extends from `javafx.application.Application).