Internal URL shortener at https://go.stainless.com
Visit https://go.stainless.com/setup to download and install the browser extension (Chrome recommended).
The project has three main components:
- Backend (
backend/) - Go server deployed on App Engine - Console (
console/) - React web UI - Extension (
extension/) - Chrome/Firefox browser extensions
cd console
npm run buildThis builds the console and outputs to backend/console/.
cd extension
# Build Chrome extension
npm run build:release
# Build Firefox extension (creates unsigned zip)
npm run build:firefoxFirefox Extension Signing:
Firefox requires extensions to be signed. After building:
- Build the Firefox extension:
npm run build:firefox(createsextension-firefox.zip) - Sign it using one of these methods:
- AMO (Recommended): Upload to addons.mozilla.org and download the signed
.xpi - web-ext sign: Use
web-ext sign --api-key=<key> --api-secret=<secret>(requires API credentials)
- AMO (Recommended): Upload to addons.mozilla.org and download the signed
- Copy the signed
.xpitobackend/console/extension/firefox/extension.xpi
The Chrome extension is automatically copied to backend/console/extension/chrome/extension.zip by the build script.
Just edit the Go files in backend/. No build step needed - Go compiles on deploy.
After making changes to any component:
# Build console (if changed)
cd console && npm run build
# Build extensions (if changed)
cd extension
npm run build:release # Chrome
npm run build:firefox # Firefox (then sign and copy .xpi to backend/console/extension/firefox/)
# Deploy everything
cd backend && gcloud app deploy --quietNote: Remember to sign the Firefox extension and manually copy the signed .xpi file to backend/console/extension/firefox/extension.xpi before deploying.
The deploy uploads:
- Compiled Go backend
- Built console assets
- Extension files for self-hosted distribution
backend/- Go backend with App Engine configconsole/- Built console assets (generated, not edited directly)app.go- Main application setupredirect_handler.go- Handles go/* redirects
console/- React app sourcesrc/pages/- Page componentssrc/router.tsx- Route configuration
extension/- Browser extension sourcesrc/- TypeScript sourcemanifest.json/manifest.firefox.json- Extension configs
# Deploy backend
cd backend && gcloud app deploy --quiet
# View logs
gcloud app logs tail
# Check deployment status
gcloud app versions listExtensions are self-hosted at /setup. When you deploy, users can download updated versions immediately from https://go.stainless.com/setup - no browser store approval needed.