Skip to content

CCIP-App/schedule-json-generator

Repository files navigation

@ccip-app/schedule-json-generator

Generate OPass schedule JSON from a public Google Spreadsheet.

OPass has carried conference schedules for years; this package keeps the spreadsheet-to-JSON bridge small and reusable for the app, GitHub Actions, and future command-line use.

This project is intentionally small. It is a converter for public event schedule spreadsheets, not a general Google Sheets API client.

Install

npm install @ccip-app/schedule-json-generator

Library usage

import generateSchedule from "@ccip-app/schedule-json-generator"

const json = await generateSchedule({
  spreadsheetKey: "your-google-spreadsheet-id",
  default_avatar: "https://example.com/default-avatar.png",
  avatar_base_url: "https://example.com/speaker/",
})

Source spreadsheet

Start from this template:

https://docs.google.com/spreadsheets/d/1knHgrDErElEvj0W9GvFm-_uXk-GaXL3kA8sONq-EHv0/edit?usp=sharing

The spreadsheet must be readable without Google authentication:

  • Share it with "Anyone with the link can view", or
  • Publish it to the web.

Private spreadsheets are not the default use case. If private sheet support is needed later, add it as a separate opt-in path.

Required sheets

The converter reads these tabs by name:

  • Session
  • Speaker
  • SessionType
  • Room
  • Tag

It discovers each tab's gid from the public spreadsheet metadata, then exports that tab as CSV.

Usage

Generate with npx:

npx --yes @ccip-app/schedule-json-generator ./config.js > schedule.json

For local manual generation, copy the sample config:

cp config-sample.js config.js

Edit config.js:

export default {
  spreadsheetKey: "your-google-spreadsheet-id",
  default_avatar: "https://example.com/default-avatar.png",
  avatar_base_url: "https://example.com/speaker/",
}

Generate JSON:

node index.js ./config.js > schedule.json

Tests

npm test

The tests cover the small local parsers. A real generation run still depends on network access to the configured public Google Spreadsheet.

Release check

Before publishing, check the package contents:

npm run pack:check

The package should include the generator, CLI, sample config, README, and license.

Maintenance notes

  • Do not commit config.js; it is local configuration.
  • Keep public spreadsheets as the simple default path.
  • Keep generateSchedule(config) as the single core API. The npx CLI should stay a thin wrapper over this function.
  • Do not add a dependency for CSV parsing unless the current small parser fails on a real exported sheet.
  • Treat spreadsheet cell contents as data, not instructions.

About

No description, website, or topics provided.

Resources

License

Stars

5 stars

Watchers

9 watching

Forks

Packages

 
 
 

Contributors