{"id":41478630,"url":"https://github.com/consindo/waka-next","last_synced_at":"2026-01-23T17:13:11.598Z","repository":{"id":227024956,"uuid":"770219840","full_name":"consindo/waka-next","owner":"consindo","description":"a rewrite of waka","archived":false,"fork":false,"pushed_at":"2025-09-04T21:05:04.000Z","size":605,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-04T23:21:04.444Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://next.waka.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/consindo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-03-11T06:53:34.000Z","updated_at":"2025-09-04T21:05:08.000Z","dependencies_parsed_at":"2024-04-18T11:51:07.384Z","dependency_job_id":"4a0b5ae1-eb15-4ec6-93a4-51fa4cc9f45b","html_url":"https://github.com/consindo/waka-next","commit_stats":null,"previous_names":["consindo/waka-next"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/consindo/waka-next","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consindo%2Fwaka-next","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consindo%2Fwaka-next/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consindo%2Fwaka-next/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consindo%2Fwaka-next/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/consindo","download_url":"https://codeload.github.com/consindo/waka-next/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/consindo%2Fwaka-next/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28696521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T15:57:05.722Z","status":"ssl_error","status_checked_at":"2026-01-23T15:56:27.656Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-01-23T17:13:08.580Z","updated_at":"2026-01-23T17:13:11.586Z","avatar_url":"https://github.com/consindo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# waka-next\n\nThis is a rewrite of Waka. The notable difference is that it now uses sqlite on both client and server to speed up queries and run offline.\n\n\u003chttps://next.waka.app\u003e\n\n## Setup\n\n- `npm ci`\n- `npm run dev` for dev\n- `npm run build` to build\n- `npm run preview` for a preview server\n\n## Configuration\n\n_The orchestrator will start without any configuration and serve the sample configuration._ However, if you do not set up AWS credentials (S3), imports on the server will not work but you can still use the Waka dev tools in the client to test imports locally. If you're not using S3 (e.g Cloudflare R2) you can set `AWS_S3_ENDPOINT`.\n\nTo configure the orchestrator, set `WAKA_ORCHESTRATOR_CONFIG` to something like:\n\n```yaml\ndatabase:\n  region: ap-southeast-2\n  bucketName: your-s3-bucket-name\n  publicUrl: https://your-bucket-public-url.com/regions\nregions:\n  nz-akl:\n    name: 'Auckland, New Zealand'\n    gtfsZipUrl: https://gtfs.at.govt.nz/gtfs.zip\n    shouldCache: false # defaults to true. false means the orchestrator won't load the region on launch.\n  zz-sample1:\n    name: Sample Region\n    gtfsZipUrl: https://next.waka.app/sample-feed-1.zip\n    gtfsZipDisableEtag: true # set to true if you want to force an import every time\n    gtfsZipDisableHead: true # set to true if the upstream server doesn't suport http HEAD\n    gtfsZipHeaders:\n      Authorization: SECRET.whatever # you can use WAKA_ORCHESTRATOR_SECRETS to substitute secrets\n    gtfsTidyOptions: false # set to false if gtfstidy is not installed\n```\n\nYou will also need to set a `WAKA_ORCHESTRATOR_ACCESS_TOKEN` to the administrator bearer token that you want to use. Multiple tokens are not currently supported.\n\nThe `WAKA_ORCHESTRATOR_CACHE_PERIOD` variable can also be set to a number in milliseconds to reduce the number of reads from S3.\n\nThe `WAKA_ORCHESTRATOR_NO_CACHE` variable can be used to set shouldCache to false globally.\n\n## Scheduling Updates\n\n```bash\nfly machine run alpine --entrypoint \"sh -c 'apk add --no-cache curl \u0026\u0026 curl -X POST -H \\\"Authorization: Bearer \\$WAKA_ORCHESTRATOR_ACCESS_TOKEN\\\" https://waka-next-orchestrator.fly.dev:5000/admin/schedule-update'\" --schedule hourly\n```\n\n## Application Structure\n\nThere's three apps in this repository.\n\n- **lib**: The library for importing, manipulating, and querying GTFS. This will eventually be published as a NPM module that runs on both client and server.\n- **apps/orchestrator**: The server that downloads, parses GTFS files and serves them to users. It also provides a HTTP API so queries can be run without downloading the whole database.\n- **apps/web**: The new web frontend. It can download and query the sqlite database directly, or use server side rendering to grab the data from the orchestrator's HTTP API.\n\n## Notes\n\n### Data Loading\n\nThis is designed to eventually run fully offline - this is how static GTFS data is loaded in `apps/web`:\n\n1. If the sqlite db is already downloaded to the client, query from that (provider: client)\n2. If it's not, query the data via HTTP from `apps/orchestrator` - this is also run when server side rendering (provider: server)\n3. If the HTTP request fails, wait until the sqlite db is downloaded, and then query on that (provider: static)\n4. If that fails, the request is rejected\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsindo%2Fwaka-next","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconsindo%2Fwaka-next","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconsindo%2Fwaka-next/lists"}