To add data to this repository, please follow these steps:
- Fork the repository
- Add your data
- Submit a pull request for the
stagingbranch
Don't worry too much about breaking things. Unit tests are in place to verify the validity of the data. After those have passed your edits will be reviewed by a human being, yours truly. Once the review is done your pull request will be merged. Please be aware that there is no guarantee that the information provided by your pull request will appear immediately after merging. The website will be updated only when explicitly requested by an administrator.
This repository contains the data for the following model objects:
BlogBookCompanyDownloadLibraryLinksOfTheWeekNewsPersonRealWorldAppToolTutorialUtilityVideoTip
Instances of these types can be registered in JSON files in subdirectories that match the types of the model objects:
- Blogs inside
blogs/blogs.json - Books inside
books/books.json - Companies inside
companies/companies.json - Downloads inside
downloads/downloads.json - Libraries inside
libraries/libraries.json - LinksOfTheWeek inside
links/links.json - News inside
news/news.json - People inside
people/people.json - Real World Applications inside
realworld/realworld.json - Tools inside
tools/tools.json - Tutorials inside
tutorials/tutorials.json - Utilities inside
utilities/utilities.json - Videos inside
videos/videos.json - Tips inside
tips/tips.json
The design goal for these JSON files was to keep them as simple as possible. One can see that
a specific directory exists for each model object type. Inside those directories one can find another
level of directories where each directory represents a model object instance. The name of the
directory has to match the ID given to the instance inside the JSON index files. For example:
the book "Pro JavaFX 9" uses the ID projfx9. This means we can find a directory called
books/projfx9.
Inside most of these directories we can then find a file called readme.md which allows
you to add information (in markdown syntax) about the model object instance. Depending on the
type of the model object additional information (optional or required) might be needed.
Any model object can be linked to any other model object of any type. The class ModelObject contains the following fields that are common to all types:
private String id; // the id == directory name
private LocalDate createdOn; // when was the entry initially added
private LocalDate modifiedOn; // when was it changed
private String tags; // some tags to enhance global search
private boolean hide; // maybe hide the entry for now
// Linking Options
private List<String> personIds = new ArrayList<>();
private List<String> tutorialIds = new ArrayList<>();
private List<String> toolIds = new ArrayList<>();
private List<String> libraryIds = new ArrayList<>();
private List<String> linksOfTheWeekIds = new ArrayList<>();
private List<String> bookIds = new ArrayList<>();
private List<String> companyIds = new ArrayList<>();
private List<String> downloadIds = new ArrayList<>();
private List<String> videoIds = new ArrayList<>();
private List<String> appIds = new ArrayList<>();
private List<String> utilityIds = new ArrayList<>();
private List<String> blogIds = new ArrayList<>();`
private List<String> tipIds = new ArrayList<>();`Example: to link the library FlexGanttFX to the person Dirk Lemmermann we can add the following
fragment to the libraries.json file.
{
"id": "flexganttfx",
"title": "FlexGanttFX",
"personIds" : [
"d.lemmermann"
]
}To also add YouTube videos (those need to be registered inside videos/videos.json) to the library we can then write:
{
"id": "flexganttfx",
"title": "FlexGanttFX",
"personIds" : [
"d.lemmermann"
],
"videoIds": [
"u09iklm65",
"kl889abV8"
]
}The other way around is also possible. We could add the library ID flexganttfx to the person
Dirk Lemmermann inside the file people.json.
{
"id": "d.lemmermann",
"name": "Dirk Lemmermann",
"libraryIds" : [
"flexganttfx"
]
}Ideally you take a look at the already existing data in those JSON files. They will pretty much tell you what to do.
Follow these instructions for the different types of data:
- Add an entry to the file
people/people.json, create a uniqueIDin the entry. - Create a new directory inside the
peopledirectory with the name equal to theIDfield you created in the previous step (e.g.: ID =d.lemmermann->people/d.lemmermann). - To the directory created in step 2: add an image file called
photo.jpegwith the person's photo (ideally download the LinkedIn profile photo, it has the right format and size). - To the directory created in step 2: add a file called
readme.mdand add a short bio about the person. - If the person entry inside the file
people/people.jsonreferences other entities (for example a library) then make sure to also add those to the repository.
- Add an entry to the file
libraries/libraries.json, create a uniqueIDin the entry. - Create a new directory inside the
librariesdirectory with the name equal to theIDfield you created in the previous step (e.g.: ID =controlsfx->libraries/controlsfx). - To the directory created in step 2: add an image file called
logo.pngwith the library's icon (optional). - To the directory created in step 2: add a file called
readme.mdand add a "getting started" documentation or whatever you deem most important to know about the library. - To the directory created in step 2: add (or copy) the file
info.jsonand list screenshots or videos (those also need to be in the same directory). - If the library entry inside the file
libraries/libraries.jsonreferences other entities (for example a video or a tutorial) then make sure to also add those to the repository.