The cloud portion of Nidus
This is just to get the structure of what I need to integrate with Mapbox to query a tile server and try to find point locations. In this case, I'm getting the airport locations and barely showing them. This saves me time understanding the pertinent APIs. I need to adapt this to get our mosquito reports instead. |
||
|---|---|---|
| api | ||
| arcgis-go@af786fabcc | ||
| auth | ||
| background | ||
| cmd/query-test | ||
| config | ||
| db | ||
| debug | ||
| go-geojson2h3@c2ff1a96ab | ||
| h3utils | ||
| htmlpage | ||
| label-studio | ||
| minio | ||
| notification | ||
| platform | ||
| public-report | ||
| queue | ||
| sync | ||
| userfile | ||
| .air.toml | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| default.nix | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| lefthook.yml | ||
| LICENSE | ||
| main.go | ||
| query.go | ||
| README.md | ||
| start-air.sh | ||
Nidus Sync
This is the software that powers Nidus Cloud Sync.
Building from source
First, you'll need Nix.
Then:
nix develop
go build .
Running
You'll need a number of environment variables for configuring things;
- ARCGIS_CLIENT_ID - The client ID for ArcGIS oauth, configured with esri.
- ARCGIS_CLIENT_SECRET - The client secret for ArcGIS oauth, configured with esri.
- BASE_URL - The URL the site is hosted at, used for forming callback URLs. Should be complete like 'https://foo.bar'
- BIND - The address and port to bind to. Use ':9001' for 'any address, port 9001'
- ENVIRONMENT - either 'PRODUCTION' or 'DEVELOPMENT'. It's used to set things like oauth token length.
- MAPBOX_TOKEN - The token to use with mapbox which is important for rendering maps.
- POSTGRES_DSN - The DSN for connecting to the postgres database.
- FIELDSEEKER_SCHEMA_DIRECTORY - The directory to write fieldseeker schema files for debugging.
- USER_FILES_DIRECTORY - The directory for writing uploaded user data files (audio, images).
> BASE_URL=https://sync.nidus.cloud ARCGIS_CLIENT_ID=foo ARCGIS_CLIENT_SECRET=bar POSTGRES_DSN='postgresql://?host=/var/run/postgresql&dbname=nidus-sync' ./nidus-sync
Hacking
air
This project uses air for fast compile-and-test loops. You can run it with:
> BASE_URL=https://sync.nidus.cloud ARCGIS_CLIENT_ID=foo ARCGIS_CLIENT_SECRET=bar POSTGRES_DSN='postgresql://?host=/var/run/postgresql&dbname=nidus-sync' air
bob
This uses the bob query framework. You can regenerate the models for bob with:
PSQL_DSN="postgresql://dbname?host=/var/run/postgresql&sslmode=disable" go run github.com/stephenafamo/bob/gen/bobgen-psql@latest"
PSQL_DSN="postgresql://?host=/var/run/postgresql&sslmode=disable&dbname=nidus-sync" go run github.com/stephenafamo/bob/gen/bobgen-psql@latest
This will generate a bunch of files. They're already committed, you only need this if you change the database schema in some way.
goose
This uses goose. You can use the goose command line to check status and make changes
> cd migrations
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose status
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose down
> GOOSE_DRIVER=postgres GOOSE_DBSTRING="dbname=nidus-sync sslmode=disable" goose up