Contributing
Where things go
Section titled “Where things go”| I want to… | Repository |
|---|---|
| Fix or propose something in the API, ingest or routing | opentransit-api |
| Change the web app, the admin panel or the per-city landing | opentransit-web |
| Change the mobile app | opentransit-mobile |
| Add a city | “New city” issue in opentransit, then a PR to the API |
| Improve this documentation | opentransit |
Workflow
Section titled “Workflow”- Open an issue or a Discussions thread for large changes; go straight to a PR for small fixes.
- Branch from
main, small focused changes, with tests. - Each repo’s CI must pass:
ruff+pytest(API);lint,typecheck,test,build(web);flutter analyze+flutter test+ Android/iOS builds (mobile). - A maintainer reviews within a week.
Style per repository
Section titled “Style per repository”- API: Python 3.12, typed,
ruff, tests without network or database (fixtures). Nothing city-specific outsidecities/. - Web: strict TypeScript, small components, all copy in
src/lib/i18n/dict.ts(es + en). Contract types are read-only. - Mobile:
flutter_lints, hand-writtenfromJsonmodels, strings in ARB (es source + en), widget tests for new screens. - Common rule: no provider, agency or city hardcoded. Everything comes from the city configuration.
License of contributions
Section titled “License of contributions”By contributing you agree your work is released under MIT (code) and CC BY 4.0 (documentation). No CLA or DCO. The code of conduct applies.