Files
dancefinder-app/app/utils/environment.ts
T
argoyle 4e243a0d7d
dancefinder-app / build (push) Successful in 3m59s
dancefinder-app / deploy-prod-frostmoln (push) Successful in 1m5s
fix: send Faro telemetry to self-hosted Alloy collector (#3106)
Moves browser telemetry (Faro) from Grafana Cloud to the self-hosted Alloy `faro.receiver` in the Frostmoln Platform stack.

- Production `grafanaUrl`: `https://faro.unbound.se/collect` (no app key)
- CORS on the receiver allows `https://dancefinder.unbound.se`; rate limit 50 req/s, burst 100
- Browser traces land in VictoriaTraces (cluster=production), logs/errors in VictoriaLogs — see https://grafana.obs.unbound.se
- `ignoreUrls` already uses `config.grafanaUrl`, and Apollo trace propagation is unchanged

`npm run lint` passes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01VSC7dLAgao1afzL5DQfH8F
Reviewed-on: #3106
2026-10-18 18:48:18 +00:00

50 lines
1.2 KiB
TypeScript

import type { Auth0ClientOptions, CacheLocation } from '@auth0/auth0-spa-js'
interface EnvConfig {
name: string
apiUrl: string
auth: Auth0ClientOptions
dev: boolean
tracesSampleRate: number
grafanaUrl: string
}
export const envConfig = (host: string): EnvConfig => {
const options = {
useRefreshTokens: true,
cacheLocation: 'localstorage' as CacheLocation,
authorizationParams: {
audience: 'http://dancefinder.unbound.se',
redirect_uri: window.location.origin,
},
}
const prod = {
...options,
domain: 'unbound.eu.auth0.com',
clientId: 'orQfnvCPUR5C3mJkKoiWLQHOVQsBn60e',
}
switch (host) {
case 'localhost':
return {
name: 'development',
apiUrl: 'http://localhost:6080/query',
auth: prod,
dev: true,
tracesSampleRate: 1.0,
grafanaUrl: '',
}
case 'dancefinder.unbound.se':
return {
name: 'production',
apiUrl: 'https://dancefinder.unbound.se/query',
auth: prod,
dev: false,
tracesSampleRate: 1.0,
grafanaUrl: 'https://faro.unbound.se/collect',
}
default:
throw new Error(`unexpected host: ${host}`)
}
}