Docker containers running inside LXD need security_opt apparmor=unconfined
to avoid permission denied errors on Unix socket creation (anvil, postgres).
Umami port moved from 3000 to 3001 to avoid conflict with Forgejo when
running alongside the disinto factory stack.
Add self-hosted Umami analytics to replace the third-party cloud.umami.is
tracker. Creates @harb/analytics package with typed event helpers and
instruments the conversion funnel: CTA clicks (landing), wallet connect,
swap initiated, and stake created (web-app).
- Add Umami Docker service sharing existing postgres (separate DB)
- Add Caddy /analytics route to proxy Umami dashboard
- Configure via VITE_UMAMI_URL and VITE_UMAMI_WEBSITE_ID env vars
- Document setup and funnel events in docs/ENVIRONMENT.md
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add explicit timeout: 3s to bootstrap, webapp, and landing healthchecks
to avoid Docker's 30s default.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add ports mapping 127.0.0.1:43069:43069 to txn-bot service in
docker-compose.yml, matching the pattern used by ponder. Add txnBot
status URL to ENVIRONMENT.md Common URLs section for consistency.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add `VITE_ENABLE_LOCAL_SWAP` env var to config.ts (defaults false)
- Create LocalSwapWidget.vue: inline ETH→KRK swap (wrap→approve→exactInputSingle)
- GetKrkView.vue: show LocalSwapWidget when VITE_ENABLE_LOCAL_SWAP=true, Uniswap link otherwise
- docker-compose.yml: set VITE_ENABLE_LOCAL_SWAP=true for webapp service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>