{"id":51294485,"url":"https://github.com/cafca/beebeebike","last_synced_at":"2026-06-30T13:02:47.756Z","repository":{"id":351556172,"uuid":"1211425380","full_name":"cafca/beebeebike","owner":"cafca","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-07T23:35:35.000Z","size":9310,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T00:31:06.978Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://beebeebike.com","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cafca.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-15T11:34:12.000Z","updated_at":"2026-05-07T16:59:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cafca/beebeebike","commit_stats":null,"previous_names":["cafca/beebeebike"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cafca/beebeebike","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fbeebeebike","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fbeebeebike/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fbeebeebike/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fbeebeebike/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cafca","download_url":"https://codeload.github.com/cafca/beebeebike/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cafca%2Fbeebeebike/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34967642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-30T13:02:46.879Z","updated_at":"2026-06-30T13:02:47.730Z","avatar_url":"https://github.com/cafca.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"left\"\u003e\n  \u003cimg src=\"design/logo/AppIcon-1024.png\" alt=\"beebeebike app icon\" width=\"160\" /\u003e\n\u003c/p\u003e\n\n# beebeebike\n\nbeebeebike is a cycling-oriented Berlin routing app. I like thinking about map ux and this is an experiment where I wondered: what if you could just draw on the map where you love and hate to cycle? \n\nThe app uses those personal ratings when calculating routes, so your trips can bend toward your favorite segments and away from the ones you would rather never see again. \n\nThere is a web app and a mobile app. Both share a Rust backend with PostgreSQL/PostGIS database and Graphhopper router and both use MapLibre to render the map. The web app is built in Svelte and the mobile app uses Flutter. Currently there is only an iOS version. Search uses a Photon geocoding service hosted by Komoot while this is still in testing.\n\n## Quickstart\n\nYou will need Docker and Docker Compose. The local stack expects Berlin OSM and tile data under `data/`; the helper scripts in `scripts/` are there to fetch those.\n\n```sh\nbrew install just   # one-time\njust setup\njust dev\n```\n\nThen open the app at `http://localhost:5173`.\n\n## Mobile app (iOS)\n\nFlutter client in `mobile/`. Requires the `ferrostar_flutter` plugin at `packages/ferrostar_flutter/`.\n\n```bash\njust setup-mobile\njust dev-ios-sim  # runs against https://beebeebike.com by default; override with BEEBEEBIKE_API_BASE_URL + BEEBEEBIKE_TILE_SERVER_BASE_URL\n```\n\n\u003e Android support is planned for a future release.\n\n## Deployment notes\n\nThe rating overlay uses Server-Sent Events on `/api/ratings/events` to push paint changes to connected clients. Any reverse proxy in front of the backend must disable response buffering and caching on that path, keep the upstream `Connection` header empty, and set a long read timeout (hours, not seconds). Without those settings nginx (and most other proxies) will buffer the stream until the timeout fires, so clients see an open socket that never delivers any events. Local dev hits the backend directly and is not affected.\n\n## Contributing\n\nContributions are welcome. Please open an issue first so we can talk through the idea, the shape of the change, and any bike-brain edge cases before you start building.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafca%2Fbeebeebike","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcafca%2Fbeebeebike","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcafca%2Fbeebeebike/lists"}