Elite Dangerous Field Manual:Adding Structured Data
How EDFM's structured game data works, and how to add to it without writing Lua.
The idea
For data genuinely reused in more than one place (an Engineer's own infobox, List of Engineers, and Engineer Capability Comparison all need the same facts about that Engineer), EDFM stores the canonical value once, as a JSON page, and lets a small Scribunto (Lua) module read and format it everywhere it's needed. This means an Engineer's infobox and the list/comparison pages can never quietly drift out of sync — there's only one place the fact actually lives.
This is deliberately not used for everything — most of an article (its prose, its walkthrough steps, its sourcing) stays as normal wikitext. Structured data is specifically for facts that get reused across multiple pages. See Elite Dangerous Field Manual:Content Style Guide and the project's general preference for plain templates over Lua wherever plain templates are enough.
Adding a new Engineer's data record
This is the only structured-data type live so far (Engineers) — the same pattern will extend to other entity types later.
- Create a new page named
Module:Data/Engineers/<Engineer name>(matching the Engineer's own Main-namespace article title exactly), with content model JSON. TheModule:namespace defaults to Lua/Scribunto, not JSON, so you'll need to set the content model explicitly — either viaSpecial:ChangeContentModelright after creating the page, or by appending&contentmodel=jsonto the edit URL before your first save. - Copy the shape of an existing record — e.g.
Module:Data/Engineers/Broo Tarquin— field for field. Fields:name,engineer_type,system,body,facility,region,allegiance,specialties(a list),max_grade,prerequisite_engineer,prerequisite_engineer_note,discovery_requirement,invitation_requirement,unlock_requirement,colonia(true/false). Usenullfor anything genuinely not yet confirmed — never invent a value just to fill the field. - Add the Engineer's name to the list in
Module:Data/Engineers/index. - On the Engineer's own article, replace a bare
{{Infobox}}call with{{Engineer infobox}}— it will automatically pick up the new JSON record.
Don't edit Module:Engineers (the Lua module itself) unless you're changing the schema everyone's data depends on — adding a record is a JSON-only, no-Lua-required task.
Checking your work
After saving, revisit the Engineer's own page and confirm the infobox still looks right, then check List of Engineers and Engineer Capability Comparison picked up the new row automatically. If a Lua error appears instead, the JSON is probably malformed (check for a missing comma or unescaped quote) — Special:ChangeContentModel can confirm the page actually saved as JSON rather than plain wikitext.