The data is represented in the form of flat files, formatted in TOML syntax. This should make the data sufficiently easy to read and write by both humans and computers.
Use line feeds (LF) as end-of-line characters. Do not put blank lines (just a single line feed) at the end of each file.
For now, the only things modeled are LAN parties, and LAN party series.
Not every party belongs to a series, though! Some are just one-time events.
Each party series should be defined in its own file, which should be named
<series slug>.toml, in path ./data/series.
A series must specify:
- A
slug, which is an identifier that can nicely be used in URLs and the filesystem. It may only contain lower-case latin characters, numbers, and dashes. - A
title, which does not have the slug's limitations. country_codes, which is a non-empty list of two-letter ISO 3166-1 alpha-2 country codes.
A series may have:
alternative_titles, which is a non-empty list of alternative titles of the party series.- A
linkssection; see below.
A links section must have:
-
A
website, which:- must specify
url, which is a common URL likehttps://www.awesomelan.example/. - can specify
offline, with a value of eitherfalse(the default) ortrue.
- must specify
Minimal series example:
slug = "awesome-lan"
title = "Awesome LAN"Full series example:
slug = "awesome-lan"
title = "Awesome LAN"
alternative_titles = ["That Awesome LAN Party"]
country_codes = ["ca"]
[links.website]
url = "https://www.awesomelan.example/"Parties eligible for inclusion at this point have to be public and in the past.
Each party should be defined in its own file, which should be named <party slug>.toml.
If the party is part of a series, it should be in path ./data/parties/<series slug>; if it is not, it should be in ./data/parties.
A party must have:
- A
slug, which is an identifier that can nicely be used in URLs and the filesystem. It may only contain lower-case latin characters, numbers, and dashes. - A
title, which does not have the slug's limitations. - A start date,
start_on. Format:YYYY-MM-DD, without surrounding double quotes. - An end date,
end_on. Same format asstart_on.
A party may have:
- A
series_slug, if the party belongs to a series (see above). - An
organizer_entity, if that is somewhat relevant, maybe because it significantly changed at some point. If its just "a bunch of people" for the duration of the party, you can just leave it out. Can be a single string or an array of multiple strings. online_only = true, if the party was online-only (e.g. during a pandemic). In this case, thelocationsection must not be provided.- A number of
seats. This should be the number of seats the party actually offered, not the number of attendees. - A number of
attendees. This should be the number of attendees the party had, or the number of tickets sold if only that information is available. - A
locationsection; see below. - A
linkssection; see below.
A location section must have:
- A country in the form of a two-letter
country_code, which must be an ISO 3166-1 alpha-2 value. - A
city.
A location section may have:
- The
nameof the location. - A
postal_code, if the country has such a thing. - A
streetname and, if applicable, house number. - Geographic coordinates in the form of both
latitudeandlongitudevalues.
A links section must have:
-
A
website, which:- must specify
url, which is a common URL likehttps://www.awesomelan.example/orhttps://www.awesomelan.example/parties/23. - can specify
offline, with a value of eitherfalse(the default) ortrue.
- must specify
Minimal party example:
slug = "awesomemest-lan"
title = "Awesomest LAN"
start_on = 2001-07-27
end_on = 2001-07-29
[location]
country_code = "de"
city = "Büttenwarder"Full party example:
slug = "awesome-lan-4"
title = "Awesome LAN #4"
series_slug = "awesome-lan"
organizer_entity = "Awesome LAN e.V."
start_on = 2000-07-28
end_on = 2000-07-30
seats = 32
attendees = 23
[location]
name = "Gasthof zum Wattwurm"
country_code = "de"
city = "Büttenwarder"
postal_code = "22999"
street = "Kirchweg 7"
latitude = 54.03847
longitude = 8.25632
[links.website]
url = "https://www.awesomelan.example/"Online-only party example:
slug = "awesome-wan-2020"
title = "Awesome WAN 2020"
series_slug = "awesome-lan"
organizer_entity = "Awesome LAN e.V."
start_on = 2020-06-26
end_on = 2020-06-28
online_only = true
[links.website]
url = "https://www.awesomelan.example/wan-2020/"- Rename party property
onlinetoonline_only.
- Moved series into a separate file each.
- Renamed series property
nametotitle. - Renamed series property
alternative_namestoalternative_titles. - Added optional links section for series.
- Renamed property
zip_codeto genericpostal_codein sectionlocation.
- Require property
country_codesin sectionseries.
- Added optional property
country_codesto sectionseries.
- Required websites to be specified with the
urlproperty in sectionwebsiteinstead of usingwebsiteas a property with string value.
- Added optional property
attendeesto sectionparty.
- Allowed
organizer_entityto alternatively be an array with multiple values.
- Made property
namein sectionlocationoptional.
- Added optional flag
onlineto sectionparty. - Prohibited section
locationfor online events. - Added optional flag
offlineto sectionwebsite.
- Created initial format.