{"id":36438847,"url":"https://github.com/bxrne/launchrail","last_synced_at":"2026-01-11T20:53:35.563Z","repository":{"id":257500881,"uuid":"858455588","full_name":"bxrne/launchrail","owner":"bxrne","description":"HPR Rocket Simulator","archived":false,"fork":false,"pushed_at":"2025-11-25T10:32:02.000Z","size":7324,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-28T02:40:50.199Z","etag":null,"topics":["aerodynamics","aerospace","black-scholes","black-scholes-merton","propulsion","rocketry","simulation"],"latest_commit_sha":null,"homepage":"https://www.bxrne.com/projects/launchrail","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bxrne.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-09-16T23:30:48.000Z","updated_at":"2025-11-24T13:32:37.000Z","dependencies_parsed_at":"2024-09-17T04:23:20.469Z","dependency_job_id":"954badd4-2d38-4539-b3c3-3b63cc4aa710","html_url":"https://github.com/bxrne/launchrail","commit_stats":null,"previous_names":["theadambyrne/launchrail","bxrne/launchrail"],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/bxrne/launchrail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bxrne%2Flaunchrail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bxrne%2Flaunchrail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bxrne%2Flaunchrail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bxrne%2Flaunchrail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bxrne","download_url":"https://codeload.github.com/bxrne/launchrail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bxrne%2Flaunchrail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28323591,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T18:42:50.174Z","status":"ssl_error","status_checked_at":"2026-01-11T18:39:13.842Z","response_time":60,"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":["aerodynamics","aerospace","black-scholes","black-scholes-merton","propulsion","rocketry","simulation"],"created_at":"2026-01-11T20:53:34.882Z","updated_at":"2026-01-11T20:53:35.558Z","avatar_url":"https://github.com/bxrne.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Launchrail\n\n[![Lint and Vet](https://github.com/bxrne/launchrail/actions/workflows/lint_vet.yaml/badge.svg)](https://github.com/bxrne/launchrail/actions/workflows/lint_vet.yaml)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=bxrne_launchrail\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=bxrne_launchrail) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=bxrne_launchrail\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=bxrne_launchrail) [![Benchmark](https://github.com/bxrne/launchrail/actions/workflows/benchmark.yaml/badge.svg)](https://github.com/bxrne/launchrail/actions/workflows/benchmark.yaml) [![CodeQL](https://github.com/bxrne/launchrail/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/bxrne/launchrail/actions/workflows/github-code-scanning/codeql) [![Dependabot Updates](https://github.com/bxrne/launchrail/actions/workflows/dependabot/dependabot-updates/badge.svg)](https://github.com/bxrne/launchrail/actions/workflows/dependabot/dependabot-updates) [![Docker Build \u0026 Publish](https://github.com/bxrne/launchrail/actions/workflows/docker_publish.yaml/badge.svg)](https://github.com/bxrne/launchrail/actions/workflows/docker_publish.yaml) [![Go Reference](https://pkg.go.dev/badge/github.com/bxrne/launchrail.svg)](https://pkg.go.dev/github.com/bxrne/launchrail)\n\n\nLaunchrail is an open-source 6DOF High-Powered Rocket Simulator. It leverages [OpenRocket](http://openrocket.info/) design files for configuration and [ThrustCurve](https://www.thrustcurve.org/) API for motor curves. The project also explores using financial algorithms to model atmospheric turbulence.\n\n\u003ctable border=\"0\"\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./assets/index-page.png\" alt=\"Index Page\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./assets/data-page.png\" alt=\"Data Page\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003e\u003cimg src=\"./assets/explore-motion-page.png\" alt=\"Explore Motion Page\"\u003e\u003c/td\u003e\n        \u003ctd\u003e\u003cimg src=\"./assets/explore-plot-page.png\" alt=\"Explore Plot Page\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n```mermaid\nflowchart TD\n    %% Client Layer\n    subgraph \"Client Layer\"\n        LR[\"launchrail CLI\"]:::client\n        BM[\"benchmark CLI\"]:::client\n        Browser[\"Browser UI\"]:::client\n    end\n    click LR \"https://github.com/bxrne/launchrail/blob/main/cmd/launchrail/main.go\"\n    click BM \"https://github.com/bxrne/launchrail/blob/main/cmd/benchmark/main.go\"\n\n    %% Server/API Layer\n    subgraph \"Server/API Layer\"\n        API[\"HTTP Server\"]:::server\n        Handlers[\"REST API Handlers\"]:::server\n        Static[\"Static Assets\"]:::server\n        Swagger[\"Swagger UI\"]:::server\n        Templates[\"HTML Templates\"]:::server\n    end\n    click API \"https://github.com/bxrne/launchrail/blob/main/cmd/server/main.go\"\n    click Handlers \"https://github.com/bxrne/launchrail/blob/main/cmd/server/handlers.go\"\n    click Static \"https://github.com/bxrne/launchrail/tree/main/static/\"\n    click Swagger \"https://github.com/bxrne/launchrail/tree/main/docs/swagger-ui/\"\n    click Templates \"https://github.com/bxrne/launchrail/tree/main/templates/\"\n\n    %% Simulation Core\n    subgraph \"Simulation Core\"\n        SimMgr[\"Simulation Manager\"]:::core\n        Atmos[\"Atmosphere Module\"]:::core\n        Drag[\"Drag Module\"]:::core\n        Thrust[\"Thrust Curves Module\"]:::core\n        SimLib[\"Simulation Library\"]:::core\n        Sys[\"Systems Module\"]:::core\n        States[\"State Integration\"]:::core\n        PluginMgr[\"Plugin Manager\"]:::core\n        PluginComp[\"Plugin Compiler\"]:::core\n    end\n    click SimMgr \"https://github.com/bxrne/launchrail/blob/main/internal/simulation/manager.go\"\n    click Atmos \"https://github.com/bxrne/launchrail/blob/main/pkg/atmosphere/isa.go\"\n    click Drag \"https://github.com/bxrne/launchrail/blob/main/pkg/drag/drag.go\"\n    click Thrust \"https://github.com/bxrne/launchrail/blob/main/pkg/thrustcurves/thrustcurves.go\"\n    click SimLib \"https://github.com/bxrne/launchrail/blob/main/pkg/simulation/simulation.go\"\n    click Sys \"https://github.com/bxrne/launchrail/blob/main/pkg/systems/aerodynamics.go\"\n    click States \"https://github.com/bxrne/launchrail/blob/main/pkg/states/physics.go\"\n    click PluginMgr \"https://github.com/bxrne/launchrail/blob/main/internal/plugin/manager.go\"\n    click PluginComp \"https://github.com/bxrne/launchrail/blob/main/internal/plugin/compiler.go\"\n\n    %% Storage \u0026 Reporting\n    subgraph \"Storage \u0026 Reporting\"\n        Storage[\"Simulation Storage\"]:::storage\n        Records[\"Record Definitions\"]:::storage\n        Reporting[\"Report Generator\"]:::storage\n        PlotTrans[\"Plot Transformer\"]:::storage\n    end\n    click Storage \"https://github.com/bxrne/launchrail/blob/main/internal/storage/storage.go\"\n    click Records \"https://github.com/bxrne/launchrail/blob/main/internal/storage/records.go\"\n    click Reporting \"https://github.com/bxrne/launchrail/blob/main/internal/reporting/report.go\"\n    click PlotTrans \"https://github.com/bxrne/launchrail/blob/main/internal/plot_transformer/transform.go\"\n\n    %% Config \u0026 Logging\n    subgraph \"Config \u0026 Logging\"\n        Config[\"Config Loader\"]:::config\n        Logger[\"Logger\"]:::config\n    end\n    click Config \"https://github.com/bxrne/launchrail/blob/main/internal/config/config.go\"\n    click Logger \"https://github.com/bxrne/launchrail/blob/main/internal/logger/logger.go\"\n\n    %% External Services\n    subgraph \"External Services\"\n        OpenRocket[\"OpenRocket Reader\"]:::external\n        ThrustAPI[\"ThrustCurve API\"]:::external\n        Weather[\"Weather Service\"]:::external\n    end\n    click OpenRocket \"https://github.com/bxrne/launchrail/blob/main/pkg/openrocket/openrocket.go\"\n    click ThrustAPI \"https://github.com/bxrne/launchrail/blob/main/internal/http_client/client.go\"\n    click Weather \"https://github.com/bxrne/launchrail/blob/main/internal/weather/client.go\"\n\n    %% Connections\n    LR --\u003e Config\n    BM --\u003e Config\n    LR --\u003e Logger\n    BM --\u003e Logger\n    LR --\u003e SimMgr\n    BM --\u003e SimMgr\n\n    Browser --\u003e API\n    Browser --\u003e Static\n    Browser --\u003e Templates\n\n    API --\u003e Handlers\n    API --\u003e Swagger\n    Handlers --\u003e Config\n    Handlers --\u003e Logger\n    Handlers --\u003e SimMgr\n    Handlers --\u003e ThrustAPI\n    Handlers --\u003e Weather\n    Handlers --\u003e Reporting\n\n    SimMgr --\u003e Atmos\n    SimMgr --\u003e Drag\n    SimMgr --\u003e Thrust\n    SimMgr --\u003e SimLib\n    SimMgr --\u003e Sys\n    SimMgr --\u003e States\n    SimMgr --\u003e PluginMgr\n    SimMgr --\u003e Storage\n    SimMgr --\u003e ThrustAPI\n    SimMgr --\u003e Weather\n\n    PluginMgr --\u003e PluginComp\n    PluginMgr --\u003e SimMgr\n\n    Storage --\u003e Records\n    Storage --\u003e Reporting\n    Reporting --\u003e PlotTrans\n    PlotTrans --\u003e Browser\n    PlotTrans --\u003e LR\n\n    %% Styles\n    classDef client fill:#D0E6FF,stroke:#005F9E,color:#003366;\n    classDef server fill:#DFF2D8,stroke:#3A7E28,color:#265B0E;\n    classDef core fill:#FFF5CC,stroke:#BFA900,color:#8C6F00;\n    classDef storage fill:#FFE5D9,stroke:#E55D3A,color:#9E2A0E;\n    classDef config fill:#F0E6FF,stroke:#7D3FBF,color:#4C2571;\n    classDef external fill:#E8E8E8,stroke:#8A8A8A,color:#555555;\n```\n\n## 🚀 Getting Started\n\n```sh\ngit clone https://github.com/bxrne/launchrail.git\ncd launchrail\n\ngo run ./cmd/launchrail\n# For hot reload (development)\nair\n```\n\n---\n\n## 🐳 Docker Usage\n\nYou can run Launchrail as a Docker container, either by building locally or pulling from [GHCR](https://github.com/bxrne/launchrail/pkgs/container/launchrail).\n\n### Build and Run Locally\n\n```sh\nDOCKER_BUILDKIT=1 docker build -t launchrail:latest .\ndocker run --rm -it -p 8080:8080 launchrail:latest\n```\n\n### Pull and Run from GHCR\n\n```sh\ndocker pull ghcr.io/bxrne/launchrail:latest\n# Or pull a specific version\ndocker pull ghcr.io/bxrne/launchrail:\u003ctag\u003e\ndocker run --rm -it -p 8080:8080 ghcr.io/bxrne/launchrail:latest\n```\n\n---\n\n## 🧑‍💻 Contributing \u0026 Git Workflow\n\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for full guidelines.\n\n- **Clone and branch:**\n  ```sh\n  git clone https://github.com/bxrne/launchrail.git\n  git checkout -b my-feature-branch\n  ```\n- **Run tests:**\n  ```sh\n  go test ./... -v\n  ```\n- **Lint:**\n  ```sh\n  golangci-lint run ./...\n  ```\n- **Commit using Commitizen:**\n  ```sh\n  cz commit\n  ```\n  This project uses [Commitizen](https://commitizen-tools.github.io/commitizen/) and [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for semantic versioning (see `.cz.toml`).\n  Semantic versioning is enforced for all releases and PRs. Please use `cz commit` to ensure proper versioning and changelogs.\n\n---\n\n## 🧪 Testing\n\nRun all tests:\n```sh\ngo test ./... -v\n```\n\n---\n\n## 🛠️ Built With\n\n- [Go](https://golang.org/) — The Go Programming Language\n- [OpenRocket](http://openrocket.info/) — Model rocket design and simulation\n- [ThrustCurve](https://www.thrustcurve.org/) — Model rocket motor database\n\n---\n\n## 📦 License\n\nThis project is licensed under the GNU General Public License v3.0 — see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbxrne%2Flaunchrail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbxrne%2Flaunchrail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbxrne%2Flaunchrail/lists"}