···2222- pkg-config
2323- Rust
2424- Working C and C++ compilers: `gcc` on Linux or `clang` (via Xcode) on macOS.
2525+- Reverse proxy
2626+2727+## Reverse Proxy
2828+2929+Due to the nature of ATProto, a requirement for developing for Streamplace is
3030+using a reverse proxy so that your PDS can connect with your development
3131+environment.
3232+3333+Popular options include:
3434+3535+- [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
3636+ (recommended)
3737+- [zrok](https://zrok.io/) (self hostable, recommended)
3838+- [Pangolin](https://github.com/fosrl/pangolin) (self-hostable)
3939+- [ngrok](https://ngrok.com/)
4040+4141+**Example usage:**
4242+4343+- Cloudflare Tunnel: `cloudflared tunnel --url http://127.0.0.1:38080`
4444+- zrok: `zrok share http 127.0.0.1:38080`
4545+- Pangolin: (if you have a site set up)
4646+ `newt --id my-id --secret my-secret --endpoint 127.0.0.1:38080`
4747+- ngrok: `ngrok http 38080`
4848+4949+> **Tip:** A static tunnel URL is preferred for consistency, especially if you
5050+> need to share your dev environment or if you want to stay logged in between
5151+> proxy restarts. Look at the docs for your preferred reverse proxy for more
5252+> information.
25532654## Get Started
2755···49775078By default, the `make dev` Streamplace node will proxy incoming requests
5179front-end requests — basically every endpoint that's not at `/api` or `/xrpc` —
5252-through to the Streamplace app dev server. Usually, you'll usually want to be
5353-hacking on both of those things at once. If this isn't the case — like you're
5454-making exclusively backend changes — and you want to launch the node with the
5555-embedded frontend, you can override the pertinent command line argument:
8080+through to the Streamplace app dev server. Usually, you'll want to be hacking on
8181+both of those things at once. If this isn't the case — like you're making
8282+exclusively backend changes — and you want to launch the node with the embedded
8383+frontend, you can override the pertinent command line argument:
56845785```shell
5886make dev && ./build-darwin-arm64/streamplace --dev-frontend-proxy=""
8787+```
8888+8989+If you're using a proxy server, you may want to set your tunnel URL as the
9090+public host URL so you can get authentication working. You may do that via the
9191+`--public-host` argument.
9292+9393+Similarly, if you're working on mobile and need authentication, use the
9494+`--app-bundle-id` argument with your bundle NSID in `app.json` (for Devplace,
9595+the id is `tv.aquareum.dev`).
9696+9797+Here's an example with both:
9898+9999+```shell
100100+make dev && ./build-darwin-arm64/streamplace \
101101+ --public-host your.proxy.example.com \
102102+ --app-bundle-id tv.aquareum.dev
59103```
6010461105### Streamplace App