{"id":39034230,"url":"https://github.com/tritonuas/gcs","last_synced_at":"2026-01-17T17:42:50.358Z","repository":{"id":230984660,"uuid":"106207579","full_name":"tritonuas/gcs","owner":"tritonuas","description":"Central node to connect to OBC, frontend, CV suite, etc.","archived":false,"fork":false,"pushed_at":"2026-01-11T21:29:11.000Z","size":60796,"stargazers_count":6,"open_issues_count":30,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2026-01-12T00:56:38.813Z","etag":null,"topics":["back-end","docker","front-end","mavlink","networking"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/tritonuas.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":"2017-10-08T20:27:21.000Z","updated_at":"2026-01-11T21:06:17.000Z","dependencies_parsed_at":"2025-02-02T01:18:45.237Z","dependency_job_id":"54de1158-9952-4557-8ea0-d683d05f2805","html_url":"https://github.com/tritonuas/gcs","commit_stats":null,"previous_names":["tritonuas/gcs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tritonuas/gcs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tritonuas%2Fgcs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tritonuas%2Fgcs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tritonuas%2Fgcs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tritonuas%2Fgcs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tritonuas","download_url":"https://codeload.github.com/tritonuas/gcs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tritonuas%2Fgcs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28513973,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"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":["back-end","docker","front-end","mavlink","networking"],"created_at":"2026-01-17T17:42:50.191Z","updated_at":"2026-01-17T17:42:50.284Z","avatar_url":"https://github.com/tritonuas.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gcs\n\n[![Linting](https://github.com/tritonuas/gcs/workflows/Linting/badge.svg)](https://github.com/tritonuas/gcs/actions?query=workflow%3ALinting)\n[![Tests](https://github.com/tritonuas/gcs/workflows/Tests/badge.svg)](https://github.com/tritonuas/gcs/actions?query=workflow%3ATests)\n[![Docker](https://github.com/tritonuas/gcs/workflows/Docker/badge.svg)](https://github.com/tritonuas/gcs/actions?query=workflow%3ADocker)\n\n**gcs** is TUAS's Ground Control Station. It serves as a webapp and is comprised of many smaller modules which all have their own functions. If you want to learn more about each part individually, you can click on the links below to go to its specific README.\n\nEntries in bold indicate that it is a module which we implement.\n\n- **[Hub](/internal/README.md): A back-end (written in Go) that facilitates the communication between all the different components of the entire TUAS ecosystem. This includes the [OBC](), [CVS](https://github.com/tritonuas/computer-vision-server), [Antenna Tracker](https://github.com/tritonuas/antenna-tracker). It also serves as the central node between all of the gcs's internal parts, which are listed below.**\n- **[Houston](/static/README.md): A front-end (written in React). This provides the user interface to interact with Hub.**\n- InfluxDB: A database to which Hub saves plane telemetry data.\n- Grafana: A third-party front-end interface we use to display dashboards for data stored in InfluxDB. While Houston does include a dashboard for the most important information, Grafana is much more flexible to view any arbitrary telemetry data.\n- SITL: A simulation for the plane so we can test the system with fake telemetry data.\n\n## Dependencies\n\n- go \u003e= 1.24\n- [docker](https://docs.docker.com/engine/install/)\n- [docker-compose](https://docs.docker.com/compose/install/) (needed to run hub concurrently with [Influxdb](https://www.influxdata.com/products/influxdb/), [Grafana](https://grafana.com/oss/grafana/) and [SITL](https://github.com/tritonuas/ottopilot))\n- [golangci-lint](https://github.com/golangci/golangci-lint) (make sure that it is \u003e= v2.0)\n- [goimports](https://pkg.go.dev/golang.org/x/tools/cmd/goimports)\n- [protoc](https://grpc.io/docs/protoc-installation/)\n- [protoc-gen-go](https://grpc.io/docs/languages/go/quickstart/)\n  - Note: you just need to install protoc-gen-go, you don't need to install grpc using the second `go install` command.\n- [npm](https://github.com/nvm-sh/nvm#install--update-script)\n  - Note: you may already have npm installed on your system. However, if it is not a new enough version you will need to update. The linked tool will allow you to manage different versions of `npm` on your system. Follow the instructions to install the newest version of `npm`.\n\n## First Time Setup\n\nTo install Docker, follow the instructions in the above links.\n\nTo install Go, the easiest way is to use [g](https://github.com/stefanmaric/g). The repo's\nREADME contains installation instructions. Make sure to install and set up go \u003e= 1.24.\n\nTo install the linter, run the following make command. If you encounter a permission denied error,\nthen rerun the command with sudo permissions.\n\n```sh\nmake install-linter\n```\n\nTo install the formatter, run the following make command.\n\n```sh\nmake install-fmter\n```\n\nVerify that you have `protoc` and `protoc-gen-go` installed by this point.\n\nThen, make sure you have all of the `npm` packages for the frontend installed.\n\n```sh\ncd houston\nnpm install\ncd .. # go back into the root directory\n```\n\nIf you receive an error, it is likely that your version of `npm` is too old. Go to the above link to install `nvm` (node version manager), to install a newer version of `npm`.\n\nThen, to make sure you have the protobufs git submodule loaded, run the following make command.\n\n```sh\nmake install-protos\n```\n\nLastly, we want to make sure we pull our protos submodule.\n\n```sh\ngit submodule update --init --recursive // First time only\ngit submodule update --recursive --remote\n```\n\nThis should be all of the first time setup you need.\n\n## Build\n\n```sh\n# Build local gcs executable\nmake build\n\n# Build Docker image for gcs\nmake build-docker\n\n# Update protobuf files (if needed)\nmake build-protos\n```\n\nNote that running docker commands may require sudo.\n\n## Run\n\n```sh\n# Run gcs with testuser locally\nmake run\n\n# Run docker image of gcs\nmake run-docker\n```\n\nRun full hub workflow with multiple components (Includes [Influxdb](https://www.influxdata.com/products/influxdb/), [Grafana](https://grafana.com/oss/grafana/) and [SITL](https://github.com/tritonuas/ottopilot))\n\n```sh\nmake run-compose\n```\n\n### Stop Compose\n\n```sh\n# Stop docker-compose workflow\nmake stop-compose\n```\n\n### Shortcuts\n\n```sh\n# stop compose, then rebuild hub, then restart compose\nmake develop\n```\n\n## Test\n\n```sh\nmake test\n```\n\n## Lint\n\n```sh\nmake lint\n```\n\nIf you want to disable the linter for a specific line then add `//nolint: lint_type`.\n\n```go\ndata, _ := fetchData() //nolint: errcheck\n```\n\n## Format\n\n```sh\nmake fmt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftritonuas%2Fgcs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftritonuas%2Fgcs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftritonuas%2Fgcs/lists"}