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.json
out/ht/content.json
out/ht/documents.json
out/ht/events.json
out/ht/locations.json
out/ht/menus.json
out/ht/organizations.json
out/ht/speakers.json
out/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/DEFCON33
document and the above sub-collections - A
src/config.js
(or environment variables) specifying yourCONFERENCE_CODE
and any other Firebase settings
git clone https://github.com/junctor/info-export.git
cd info-export
npm install
Edit 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 export
By default this will:
- Read
CONFERENCE_CODE
from your config - Fetch all listed collections
- Write raw JSON into
./out/ht
- Produce
schedule.json
andpeople.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