Export DEF CON conference data from Firebase for use on info.defcon.org
This Node.js script pulls a set of sub-collections under conferences/DEFCON33 from your Firebase project, writes them out as raw JSON, and then applies a couple of light transformations for schedule grouping and speaker enrichment.
By default, it:
- Fetches raw data under
conferences/DEFCON33/{articles,content,documents,events,locations,menus,organizations,speakers,tagtypes} - Writes to:
out/ht/conference.json— the main conference documentout/ht/articles.jsonout/ht/content.jsonout/ht/documents.jsonout/ht/events.jsonout/ht/locations.jsonout/ht/menus.jsonout/ht/organizations.jsonout/ht/speakers.jsonout/ht/tagtypes.json
- Generates four “derived” files:
out/ht/schedule.json— events grouped by dayout/ht/people.json— speakers with embedded event referencesout/ht/processedContent.json— Content refined and enrichedout/ht/search.json— IDs, titles, and types
- Node.js ≥ 18
- npm or yarn
- A Firebase project containing a
conferences/DEFCON33document and the above sub-collections - A
src/config.js(or environment variables) specifying yourCONFERENCE_CODEand any other Firebase settings
git clone https://github.com/junctor/info-export.git
cd info-export
npm installEdit src/config.js (or set env-vars) to point at your Firebase project and conference code:
export const CONFERENCE_CODE = "DEFCON33";
export const FIRESTORE_ROOT = ["conferences", CONFERENCE_CODE];Run the exporter with:
npm run exportBy default this will:
- Read
CONFERENCE_CODEfrom your config - Fetch all listed collections
- Write raw JSON into
./out/ht - Produce
schedule.jsonandpeople.json
| File | Description |
|---|---|
conference.json |
The root conference document |
articles.json |
Raw “articles” collection |
content.json |
Raw “content” collection |
documents.json |
Raw “documents” collection |
events.json |
Raw “events” collection |
locations.json |
Raw “locations” collection |
menus.json |
Raw “menus” collection |
organizations.json |
Raw “organizations” collection |
speakers.json |
Raw “speakers” collection |
tagtypes.json |
Raw “tagtypes” collection |
schedule.json |
Events grouped by day (object keyed by date) |
people.json |
Speakers enriched with their associated events |
processedContent.json |
Content refined and enriched |
search.json |
IDs, titles, and types |
MIT