Last updated: 2026-06-21
Maturity: 🟢 status-production-ready
Live at: https://sudarshanchaudhari.github.io/DogSpeak/
- Datadog alert / log / monitor input → plain-English explanation
- Three audience modes: non-technical, manager/exec, junior developer
- Multi-provider LLM: Anthropic, OpenRouter, Groq, Ollama (local), custom OpenAI-compatible endpoint
- Streaming responses
- Translation history with CSV export
- One-click Slack/Teams share
- Dark / light theme
- Color-coded severity (OK / Info / Warn / Critical)
- Security: API key in sessionStorage (cleared on tab close), opt-in localStorage, idle timeout (default 15 min), CSP header for AI provider domains, AbortController with 45s timeout
- Error boundary
- GitHub Pages auto-deploy on push to main
- 67 tests across 7 suites (Vitest + React Testing Library)
- Build, lint, typecheck, tests all green
Nothing essential. Feature-complete and deployed.
Optional polish:
- Migrate
next lintconfig to standalone ESLint CLI before Next 16 removes it (not applicable here — DogSpeak uses Vite, not Next) - More LLM providers if user demand emerges
| Gate | Status |
|---|---|
| Build | ✅ |
| Lint | ✅ 0 errors |
| Typecheck (strict) | ✅ |
| Tests | ✅ 67 / 7 suites |
| Live URL | ✅ HTTP 200 |
Already live via GitHub Pages workflow on every push to main.
-
main.tsx— React root + ErrorBoundary mount -
App.tsx— root component composition -
types.ts— shared TypeScript interfaces -
vite-env.d.ts— Vite env type declarations -
styles/global.css— CSS variables, resets, animations
-
components/Navbar.tsx— top bar + theme toggle -
components/ApiKeyInput.tsx— provider/model/key config + idle timeout -
components/InputPanel.tsx— textarea + examples + audience selector -
components/ResultPanel.tsx— translation output (headline, analogy, facts, action) -
components/HistoryPanel.tsx— past translations + CSV export -
components/ErrorBoundary.tsx— React error boundary
-
hooks/useApiKey.ts— provider config + key storage -
hooks/useTranslation.ts— translation state + history + AbortController -
hooks/useIdleTimeout.ts— auto-clear key after inactivity -
hooks/useTheme.ts— dark/light mode toggle
-
utils/api.ts— AI provider calls (Anthropic + OpenAI-compatible) -
utils/constants.ts— examples, audience schemas, severity config
-
utils/api.test.ts -
hooks/useApiKey.test.ts -
hooks/useTranslation.test.ts -
components/ApiKeyInput.test.tsx -
components/HistoryPanel.test.tsx -
components/InputPanel.test.tsx -
components/ResultPanel.test.tsx - 67 tests across 7 suites — all green
- GitHub Pages workflow (
.github/workflows/deploy.yml) -
vite.config.jswith correct base path for Pages - Live URL responding 200
| Item | Effort | Bucket | Blocker | Priority |
|---|---|---|---|---|
| — | — | — | — | — |
🎉 DogSpeak has zero open items. Already feature-complete and live.
DogSpeak is already at v1.0.0 effectively (auto-deploys via GitHub Actions on every main push). To formalize:
- Tag a GitHub Release:
gh release create v1.0.0 --title "DogSpeak v1.0.0" --notes "First tagged release. See README + STATUS.md."(in repo dir, branch main) - Optional: add a
CHANGELOG.mdahead of the tag - Confirm Pages site still 200:
curl -sI https://sudarshanchaudhari.github.io/DogSpeak/ | head -1
None. Zero env vars required. Already live on GitHub Pages.