Repositories
Five primary repositories under the github.com/flighthelp organization, plus secondary support repos. Each is built to be useful on its own; the split exists so contributors can specialize and so downstream consumers can pin only what they need.
Primary repositories
flighthelp/schema (MIT)
The schema definitions and generated language bindings. The lightest repo by lines of code, the heaviest by downstream impact.
/json-schema/
airline.schema.json
airport.schema.json
baggage-rule.schema.json
contact-method.schema.json
fare-class.schema.json
fee.schema.json
scenario.schema.json
regulation.schema.json
contributor.schema.json
edit.schema.json
source.schema.json
badge.schema.json
_shared/
provenance.schema.json
localizable-string.schema.json
money.schema.json
hours.schema.json
coordinates.schema.json
/openapi/
flighthelp-v1.openapi.yaml
/typescript/
generated/
package.json # @flighthelp/schema
/python/
generated/
pyproject.toml # flighthelp-schema
/php/
generated/
composer.json # flighthelp/schema
/go/
generated/
/rust/
generated/
Cargo.toml # flighthelp-schema
/java/
generated/
/swift/
generated/
/docs/
field-reference.md
versioning-policy.md
migration/
v0-to-v1.md
/scripts/
generate-bindings.ts
validate-schemas.ts
/.github/
workflows/
validate.yml
publish.yml
README.md
CHANGELOG.md
CONTRIBUTING.md
LICENSE
CI on every PR: schema lint, breaking-change detection (using a diff tool against the previous release), language binding regeneration. On every release tag: publish to npm, PyPI, Composer, etc., in a single coordinated transaction.
flighthelp/rules-engine (MIT)
The standalone passenger-rights logic library. Structure detailed in RULES-ENGINE.md.
/regimes/
eu-261/
uk-261/
brazil-400/
montreal-convention/
us-dot-tarmac-delay/
us-dot-bumping/
canada-appr/
india-dgca/
israel-aviation-services-law/
australia-acl/
japan-civil-aeronautics/
/engine/
evaluator.ts
types.ts
currency.ts
distance.ts
/playground/
cli.ts
web/
/sdks/
node/
python/
php/
go/
rust/
java/
swift/
/test-fixtures/
shared-scenarios.json
/docs/
legal-versioning.md
adding-a-regime.md
contributing-test-cases.md
README.md
CHANGELOG.md
Each regime is self-contained. Adding a new jurisdiction is a self-contained PR that doesn't touch existing regimes. CI runs every fixture case in every language SDK on every PR.
flighthelp/data (CC-BY 4.0)
The verified dataset. Updated continuously by automated and human processes.
/data/
airlines/
{iata}.json # one file per airline
airports/
{iata}.json # one file per airport
baggage-rules/
{airline}/
{fare_class}/
{bag_type}.json
contacts/
{airline}.json
fees/
{airline}.json
fare-classes/
{airline}.json
scenarios/
{slug}.json
regulations/
{slug}.json
badges.json
/snapshots/
daily/
{YYYY-MM-DD}.tar.gz # nightly full dump
monthly/
{YYYY-MM}.tar.gz # archived monthly snapshot
/changelog.md # auto-generated, every committed change
/README.md
/SCHEMA-VERSION.txt # which schema version the data conforms to
/LICENSE # CC-BY 4.0
The repo is updated by GitHub Actions that pull from the moderated edit queue. PRs against /data are accepted from external contributors but go through automated schema validation, then human moderation. The PR template demands a source URL for every change.
The CC-BY 4.0 license means anyone can use the data commercially, with attribution. Forks are encouraged: regional mirrors, AI training subsets, journalism investigation snapshots. The data does not depend on the project's continued existence.
flighthelp/scrapers (MIT)
The automated monitors that watch airline pages and flag changes. One scraper per airline; each is a small standalone module.
/scrapers/
lufthansa/
scraper.ts
selectors.ts
fixtures/ # frozen HTML samples for tests
2026-01-15.html
2026-03-22.html
tests/
scraper.test.ts
README.md
ryanair/
delta/
emirates/
...
/shared/
utils/
fetch.ts
parser.ts
diff.ts
selectors/
common-baggage-table.ts
/cron/
schedule.yaml # which scrapers run when
priority-tiers.yaml # high-priority vs low-priority airlines
/scripts/
run-scraper.ts
generate-fixture.ts
README.md
ROBOTS-POLICY.md # public statement of scraping practice
Scrapers respect robots.txt, rate-limit politely (typically one request per minute per origin), and use a User-Agent identifying flighthelp.net with a link to ROBOTS-POLICY.md.
When an airline changes their website layout, the scraper breaks. The system flags it, a community member opens a PR fixing the selectors, CI runs against fixtures, and the maintainer merges. This is the most active repo by edit volume.
flighthelp/web (AGPL-3.0)
The reference website and contributor PWA, as a monorepo.
/apps/
web/ # flighthelp.net (the consumer site)
app/ # Next.js app router
components/
lib/
public/
next.config.ts
contribute/ # contribute.flighthelp.net (PWA)
app/
components/
lib/
public/
next.config.ts
docs/ # docs.flighthelp.net (Nextra)
pages/
next.config.ts
/packages/
ui/ # shared shadcn/ui components, restyled
data-client/ # typed API client (wraps schemas + REST)
i18n/ # translation strings
design-tokens/ # CSS variables, Tailwind config
/infra/
scrapers-runner/ # Fly.io container for running scrapers
api/ # the API server (separate deploy)
workers/ # Cloudflare Workers (cache, edge logic)
pnpm-workspace.yaml
turbo.json
package.json
README.md
LICENSE # AGPL-3.0
AGPL because we want forks to remain open. Anyone can self-host their own instance (regional mirror, language-specific deployment, internal corporate fork) but improvements come back.
Secondary repositories
flighthelp/docs-content
Long-form documentation, not bundled with code. Markdown files for tutorials, guides, contributor onboarding, governance documents, and the public website's static content (About, Governance, Transparency Reports). Licensed CC-BY 4.0.
flighthelp/governance
The governing documents: bylaws, code of conduct, contributor agreement, conflict-of-interest policy, succession plan. Versioned, public, amendable through the documented process. Licensed CC0 (true public domain) so any other public-interest project can fork them.
flighthelp/case-law-archive
A read-only archive of court rulings and regulator opinions that have shaped the rules engine. Each ruling is captured as a PDF (or HTML snapshot when available) with a structured metadata file. Licensed CC-BY 4.0 where the underlying documents permit.
flighthelp/api-clients-community
A meta-repo listing community-maintained SDKs and integrations in languages or frameworks not officially supported. Pull requests adding new clients (with quality criteria) are welcomed.
flighthelp/translations
Community-managed translation strings for the website, the contributor app, the email templates, and the scenario template messages. Uses Crowdin or Weblate for the workflow. Strings are sourced from flighthelp/web/packages/i18n and published back to it.
What stays closed-source
Three things are deliberately not open:
Moderation tooling. The internal queue interface, the anti-spam heuristics, the contributor risk scoring, the abuse signals, the IP and device fingerprint clustering. Open-sourcing this lets bad actors game the system. The high-level principles (graduated sanctions, public change log, dispute resolution paths) are documented in MODERATION.md; the implementation details are private.
Reputation engine. The exact weights and decay functions used to compute contributor reputation scores. Open-sourcing the engine would make reputation farming trivial. The general approach is documented; the specifics are not.
Internal analytics. The internal dashboards (page views, search queries, performance metrics) stay private. There are no third-party analytics scripts on the site (no Google Analytics, no Mixpanel, no Segment), and the internal dashboards are not exposed externally to avoid creating a target for surveillance.
The principle: open everything that builds trust and capability; close only what protects the community from manipulation.
License summary
| Component | Repo | License | Rationale |
|---|---|---|---|
| Dataset | flighthelp/data |
CC-BY 4.0 | Max reuse; attribution preserves credit |
| Schemas | flighthelp/schema |
MIT | Frictionless adoption by downstream tools |
| Rules engine | flighthelp/rules-engine |
MIT | Public, auditable implementation of law |
| Scrapers | flighthelp/scrapers |
MIT | Community maintenance survives layout changes |
| Website + PWA | flighthelp/web |
AGPL-3.0 | Forks stay open; improvements return |
| Long-form docs | flighthelp/docs-content |
CC-BY 4.0 | Reuse with credit |
| Governance documents | flighthelp/governance |
CC0 | Anyone can adapt for their own non-profit |
| Case-law archive | flighthelp/case-law-archive |
CC-BY 4.0 (where permitted) | Archive of public legal documents |
| Moderation tooling | private | — | Prevents gaming |
| Reputation engine | private | — | Prevents farming |
| Internal analytics | private | — | Protects user privacy |
The dual-license pattern (permissive for data and infrastructure, copyleft for the application) mirrors what worked for OpenStreetMap, Wikimedia, and Open Food Facts: lower the bar for using the data, raise the bar for forking the project.
Repository governance
Each repository has at least three maintainers with merge rights, drawn from the core team and senior trusted contributors. No repository depends on a single person to ship.
Issues and PRs follow templates that prompt for the required information (source URLs for data edits, fixture cases for engine changes, breaking-change notes for schema changes). Stale issues are auto-flagged but not auto-closed; the community decides when to retire them.
The full governance model is in GOVERNANCE.md.