{"id":28665265,"url":"https://github.com/jpsingleton/huxley2","last_synced_at":"2025-06-13T13:30:28.903Z","repository":{"id":39583151,"uuid":"255976297","full_name":"jpsingleton/Huxley2","owner":"jpsingleton","description":"A cross-platform JSON proxy for the GB railway Live Departure Boards SOAP API","archived":false,"fork":false,"pushed_at":"2024-12-21T14:21:09.000Z","size":261,"stargazers_count":54,"open_issues_count":1,"forks_count":78,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-19T10:19:39.511Z","etag":null,"topics":["api","aspnet-core","aspnetcore","c-sharp","c-sharp-10","c-sharp-8","c-sharp-9","csharp","dotnet","dotnet-6","dotnet-core","dotnet6","dotnetcore","json","soap"],"latest_commit_sha":null,"homepage":"https://huxley2.azurewebsites.net","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpsingleton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":"jpsingleton"}},"created_at":"2020-04-15T16:32:52.000Z","updated_at":"2025-03-21T17:34:16.000Z","dependencies_parsed_at":"2024-09-09T12:14:41.736Z","dependency_job_id":"be328cbc-b944-4bb4-bf0a-319a92e733a1","html_url":"https://github.com/jpsingleton/Huxley2","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/jpsingleton/Huxley2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsingleton%2FHuxley2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsingleton%2FHuxley2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsingleton%2FHuxley2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsingleton%2FHuxley2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpsingleton","download_url":"https://codeload.github.com/jpsingleton/Huxley2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpsingleton%2FHuxley2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259653515,"owners_count":22890849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["api","aspnet-core","aspnetcore","c-sharp","c-sharp-10","c-sharp-8","c-sharp-9","csharp","dotnet","dotnet-6","dotnet-core","dotnet6","dotnetcore","json","soap"],"created_at":"2025-06-13T13:30:22.162Z","updated_at":"2025-06-13T13:30:28.876Z","avatar_url":"https://github.com/jpsingleton.png","language":"C#","funding_links":["https://github.com/sponsors/jpsingleton"],"categories":[],"sub_categories":[],"readme":"# Huxley 2 Community Edition\n\nA cross-platform JSON proxy for the GB railway Live Departure Boards SOAP API\n\nThis project is treeware! If you found it useful then please [plant a tree for me](https://ecologi.com/unitsetsoftware).\n\n[![Buy me a tree!](Huxley2/wwwroot/img/buy-me-a-tree.svg)](https://ecologi.com/unitsetsoftware)\n\n_Note:_ Huxley 2 is considered feature-complete and will only be updated to fix bugs or move to a new .NET LTS version.\n\n## About\n\nHuxley 2 is a CORS enabled cross-platform JSON ReST proxy for the GB NRE LDB WCF SOAP XML API (called Darwin). It supports both the Public Version (PV) and the Staff Version (SV). It's built with ASP.NET Core LTS (.NET 8.0), C# 10 and lots of abbreviations!\n\nThe primary purpose of Huxley 2 is to allow easy use of the LDB API from browser-based client-side PWAs made with JavaScript or TypeScript. Additionally, it opens up the Windows enterprise API to agile developers on macOS and Linux.\n\n## Get Started\n\nCheck out [the live demo server](https://huxley2.azurewebsites.net/) for API documentation and to give it a try.\n\nThe demo server comes with zero guarantees of uptime.\nIt can (and regularly does) go down or break.\n\n## Get Your Own\n\nThere are detailed instructions on how to host your own instance on Azure in [this blog post](https://unop.uk/huxley-2-release/).\n\n### Running with Docker\n\n1. Ensure you have Docker and Docker Compose installed\n2. Create an `.env` file in the `Huxley2` directory with the access tokens. You can delete the ones you're not using.\n3. Run `docker-compose up`\n4. The app should be available at `localhost:8081`\n\nExample `.env` file:\n\n```env\nACCESS_TOKEN=abcde12345\nSTAFF_ACCESS_TOKEN=abcde12345\nCLIENT_ACCESS_TOKEN=abcde12345\n```\n\nTo rebuild use `docker-compose build` or `docker-compose up --build`.\n\nIf you want to run the container in the background you can run `docker-compose up --detach`\n\nIf you would like the docker container to _reboot upon restart_ on the host machine you can uncomment `restart: always` in the docker-compose.yml file and make sure the docker service is set to start upon bootup.\n\n## Station Codes File\n\nIf you need to regenerate [the station codes CSV file in this repo](https://raw.githubusercontent.com/jpsingleton/Huxley2/master/station_codes.csv) then you can do so easily with [`jq`](https://stedolan.github.io/jq/) (and `curl`) using an instance that has access to the staff API (and has been restarted recently). On Linux, you can install simply with your package manager, e.g. `sudo apt install jq` (on Ubuntu/Debian).\n\nFor example, using the Huxley 2 demo instance you can run this one-liner:\n\n```bash\ncurl --silent https://huxley2.azurewebsites.net/crs | jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' \u003e station_codes.csv\n```\n\nIf using a local server with a self-signed certificate:\n\n```bash\ncurl --silent --insecure https://localhost:5001/crs | jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ]])[] | @csv' \u003e station_codes.csv\n```\n\nIf you regenerated the station codes CSV file on your own instance, change `StationCodesCsvUrl` in `Huxley2/appsettings.json` to the location of your CSV file.\n\n## License\n\nLicensed under the [EUPL-1.2-or-later](https://joinup.ec.europa.eu/collection/eupl/introduction-eupl-licence).\n\nThe EUPL covers distribution through a network or SaaS (like a compatible and interoperable AGPL).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpsingleton%2Fhuxley2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpsingleton%2Fhuxley2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpsingleton%2Fhuxley2/lists"}