Skip to content

Commit 5082840

Browse files
authored
Merge pull request #26 from Spatialnode/docs
Docs
2 parents bef4f79 + f4297b6 commit 5082840

113 files changed

Lines changed: 10280 additions & 231 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/docs-deploy.yml‎

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
name: Deploy docs
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
ref:
9+
description: Git tag or commit to deploy (must contain the docs site)
10+
required: true
11+
type: string
12+
13+
permissions:
14+
contents: read
15+
16+
# Serialize image publication and webhook calls. Coolify completes the rollout asynchronously.
17+
# Configure its Docker Image application to pull ghcr.io/<owner>/<repo>-docs:production.
18+
concurrency:
19+
group: docs-production
20+
cancel-in-progress: false
21+
22+
jobs:
23+
deploy:
24+
runs-on: ubuntu-latest
25+
timeout-minutes: 45
26+
environment:
27+
name: docs-production
28+
url: https://spatialnode.com/superstac
29+
permissions:
30+
contents: read
31+
packages: write
32+
steps:
33+
- uses: actions/checkout@v4
34+
with:
35+
ref: ${{ github.event_name == 'release' && github.event.release.tag_name || inputs.ref }}
36+
persist-credentials: false
37+
38+
- name: Check deployment configuration
39+
env:
40+
COOLIFY_DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }}
41+
COOLIFY_TOKEN: ${{ secrets.COOLIFY_TOKEN }}
42+
run: |
43+
: "${COOLIFY_DEPLOY_WEBHOOK:?Set the COOLIFY_DEPLOY_WEBHOOK Actions secret}"
44+
: "${COOLIFY_TOKEN:?Set the COOLIFY_TOKEN Actions secret}"
45+
46+
- name: Name the image
47+
id: image
48+
run: |
49+
image="ghcr.io/${GITHUB_REPOSITORY,,}-docs"
50+
revision="$(git rev-parse HEAD)"
51+
tag="sha-${revision}-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
52+
echo "name=$image" >> "$GITHUB_OUTPUT"
53+
echo "ref=$image:$tag" >> "$GITHUB_OUTPUT"
54+
echo "revision=$revision" >> "$GITHUB_OUTPUT"
55+
56+
- uses: actions/setup-node@v4
57+
with:
58+
node-version: '22'
59+
60+
- name: Build and type-check
61+
env:
62+
IMAGE: ${{ steps.image.outputs.ref }}
63+
REVISION: ${{ steps.image.outputs.revision }}
64+
run: |
65+
docker build --platform linux/amd64 \
66+
--label "org.opencontainers.image.source=https://github.com/$GITHUB_REPOSITORY" \
67+
--label "org.opencontainers.image.revision=$REVISION" \
68+
--tag "$IMAGE" docs
69+
70+
- name: Test the built container
71+
env:
72+
IMAGE: ${{ steps.image.outputs.ref }}
73+
run: |
74+
docker run --detach --name docs-test --publish 127.0.0.1:3000:3000 "$IMAGE"
75+
trap 'docker logs docs-test; docker rm --force docs-test' EXIT
76+
ready=false
77+
for attempt in {1..60}; do
78+
if curl --fail --silent http://127.0.0.1:3000/superstac > /dev/null; then
79+
ready=true
80+
break
81+
fi
82+
sleep 2
83+
done
84+
if [ "$ready" != true ]; then
85+
echo 'Documentation container did not become ready' >&2
86+
exit 1
87+
fi
88+
node docs/scripts/check-links.mjs
89+
90+
- uses: docker/login-action@v3
91+
with:
92+
registry: ghcr.io
93+
username: ${{ github.actor }}
94+
password: ${{ secrets.GITHUB_TOKEN }}
95+
96+
- name: Publish tested image
97+
env:
98+
IMAGE: ${{ steps.image.outputs.ref }}
99+
PRODUCTION_IMAGE: ${{ steps.image.outputs.name }}:production
100+
run: |
101+
docker push "$IMAGE"
102+
docker tag "$IMAGE" "$PRODUCTION_IMAGE"
103+
docker push "$PRODUCTION_IMAGE"
104+
echo "Published image: \`$IMAGE\`" >> "$GITHUB_STEP_SUMMARY"
105+
106+
- name: Request Coolify deployment
107+
env:
108+
COOLIFY_DEPLOY_WEBHOOK: ${{ secrets.COOLIFY_DEPLOY_WEBHOOK }}
109+
COOLIFY_TOKEN: ${{ secrets.COOLIFY_TOKEN }}
110+
run: bash docs/scripts/deploy-coolify.sh
111+

‎Cargo.lock‎

Lines changed: 131 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ members = [
66
"crates/search",
77
"crates/engine",
88
"crates/cli",
9+
"crates/python",
910
]
1011

1112
[workspace.package]
1213
version = "0.1.0"
1314
edition = "2021"
14-
rust-version = "1.75"
15+
rust-version = "1.88"
1516
license = "MIT"
1617
repository = "https://github.com/spatialnode/superstac"
17-
homepage = "https://github.com/spatialnode/superstac"
18+
homepage = "https://spatialnode.com/superstac"
19+
documentation = "https://spatialnode.com/superstac"
1820
authors = ["Emmanuel Jolaiya <emmanuel@spatialnode.com>"]

‎README.md‎

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,23 @@
1-
# superstac
1+
# SuperSTAC
22

3-
[![License](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
3+
[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/spatialnode/superstac/blob/main/LICENSE)
44
[![crates.io](https://img.shields.io/crates/v/superstac-search.svg)](https://crates.io/crates/superstac-search)
5-
[![docs.rs](https://docs.rs/superstac-core/badge.svg)](https://docs.rs/superstac-search)
5+
[![Documentation](https://img.shields.io/badge/docs-SuperSTAC-blue)](https://spatialnode.com/superstac)
6+
[![docs.rs](https://docs.rs/superstac-search/badge.svg)](https://docs.rs/superstac-search)
67

7-
Federated [STAC](https://stacspec.org/) search across multiple catalogs. Query
8-
Element84, Microsoft Planetary Computer, and others through one API.
8+
<p align="center">
9+
<picture>
10+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/spatialnode/superstac/main/docs/assets/superstac-logo-dark.svg">
11+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/spatialnode/superstac/main/docs/assets/superstac-logo.svg">
12+
<img src="https://raw.githubusercontent.com/spatialnode/superstac/main/docs/assets/superstac-logo.svg" alt="SuperSTAC logo" width="480">
13+
</picture>
14+
</p>
15+
16+
**Many catalogs. One search.**
17+
18+
Search across [STAC](https://stacspec.org/) catalogs through one interface, with Python, Rust, or the command line.
19+
20+
Query Element84, Microsoft Planetary Computer, and others through one API.
921
Items come back deduplicated, with their collection IDs and asset keys
1022
normalized to canonical names — regardless of which catalog they came from.
1123

@@ -20,10 +32,22 @@ A single STAC catalog isn't always enough:
2032
- The catalog you usually use is down or rate-limited.
2133
- Different providers index the same scenes under different names.
2234

23-
superstac queries every catalog you've registered, drops the ones that don't
35+
SuperSTAC queries every catalog you've registered, drops the ones that don't
2436
serve the requested collection, runs the rest concurrently with retry and
2537
timeouts, then merges and dedupes the results.
2638

39+
## Documentation
40+
41+
Read the [SuperSTAC documentation](https://spatialnode.com/superstac) for installation, tutorials, and API guides.
42+
43+
- [Quickstart](https://spatialnode.com/superstac/docs/start/quickstart)
44+
- [Python guide](https://spatialnode.com/superstac/docs/python/overview)
45+
- [Rust guide](https://spatialnode.com/superstac/docs/rust/overview)
46+
- [Command-line guide](https://spatialnode.com/superstac/docs/cli/overview)
47+
- [Configuration reference](https://spatialnode.com/superstac/docs/reference/configuration)
48+
49+
Try the [Python quickstart notebook](https://spatialnode.com/superstac/docs/python/notebook) for a two-catalog search, footprint map, and GeoJSON export in Colab or Jupyter.
50+
2751
## Install
2852

2953
### Rust library
@@ -102,7 +126,7 @@ settings:
102126
```
103127
104128
The full schema and every setting is documented inline at
105-
[`crates/core/src/models/settings.rs`](./crates/core/src/models/settings.rs).
129+
[`crates/core/src/models/settings.rs`](https://github.com/spatialnode/superstac/blob/main/crates/core/src/models/settings.rs).
106130

107131
## Library usage
108132

@@ -165,11 +189,10 @@ Some things on the way:
165189

166190
- Authentication (per-catalog headers, OAuth, API keys)
167191
- SQLite + Postgres backends
168-
- Python bindings via PyO3
169192
- and many more.
170193

171194
## License
172195

173-
MIT. See [LICENSE](./LICENSE).
196+
MIT. See [LICENSE](https://github.com/spatialnode/superstac/blob/main/LICENSE).
174197

175-
Feedback and issues welcome — this is early. If you try it and you see any bug, feel free to open an issue!
198+
Feedback and issues welcome — this is early. If you try it and you see any bug, feel free to open an issue!

‎crates/cli/Cargo.toml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ rust-version.workspace = true
1010
license.workspace = true
1111
repository.workspace = true
1212
homepage.workspace = true
13+
documentation.workspace = true
1314
authors.workspace = true
1415

1516
[[bin]]

0 commit comments

Comments
 (0)