Building Scout

From zero to production SaaS in 16 days — with Claude Code.

22k Lines of code
161 Commits
10 PRs merged
8 Active days
~16d Elapsed

About

Scout is a developer productivity analytics SaaS for small dev teams. Connect GitLab or GitHub, get actionable insights — cycle time, review bottlenecks, team balance — in minutes. Built as a SvelteKit monolith with SSR, API routes, and a sync worker.

Timeline

Mar 7 — Day 1
Foundation
SvelteKit app, Prisma schema, magic link auth, GitLab provider, sync worker. Dashboard, Team, Projects, Actions pages. Auto-sync scheduler, settings tabs, rate limiting, AES-256 token encryption. The entire architecture in a single day.
Core ~35 commits
Mar 8 — Day 2
Hardening
Unit tests with coverage, E2E Playwright tests. ESLint, Prettier, Husky pre-commit hooks. GitHub Actions CI pipeline with PostgreSQL service. Database indexes. Forge deployment config. First documented PR.
Quality DevOps PR #1
Mar 10 — Day 3
Polishing
Landing page design. Auth UI redesign with shared AuthPanel component. "Copy for AI" button on every metrics card. Contributor groups filter for team views.
Polish
Mar 12 — Day 4
Growth
GitHub provider support alongside GitLab. FREE plan paywall — 5 contributors, 3 months history. Activity score algorithm with 5 dimensions and radar chart.
Feature PR #17 · +882 lines
Mar 17 — Day 5
Monetization
Lemon Squeezy integration for self-serve PRO upgrade. In-app feedback widget with email notifications. Show/hide score setting per workspace.
Feature PR #18, #19
Mar 18 — Day 6
Enterprise
Role-based access control — 7 roles (Admin, CEO, CTO, Tech Lead, Lead Dev, Dev, Member). Users management page. Configurable visibility per role (SELF / GROUP / ALL). Sidebar adapts dynamically: My Stats, My Squad, or Team.
Feature PR #23 · +2,880 lines
Mar 21 — Day 7
Refinement
KPI cards rework — hero/secondary tiers aligned with DORA and SPACE frameworks. Release notes drawer. Zero-downtime deploy with PM2 cluster mode and atomic build swap. Metrics research. E2E test fixes.
Polish DevOps
Mar 22 — Day 8
Identity & Onboarding
Invite non-contributor users (CEO, PM) by email with role. Welcome flow — 2-step onboarding customized by role. Role-based landing page (CEO → dashboard, Dev → actions). Design system: dark sidebar, Epilogue font, indigo primary, branded color palette. Login redesign with glassmorphism. Separate E2E test database. Hydration fix for Playwright. 69 E2E tests, 68 integration, 247 unit.
Feature Polish Quality +47 commits
Mar 23–26 — Day 9
Delivery Tracking
Parse ticket keys (Jira/Linear) from branch names, commits, and MR titles via regex. New Delivery page with ticket list, Git activity per ticket, WIP/delivered status. Dashboard KPIs: features delivered, features in progress, average lead time. Draft MRs excluded from all metrics. Shared Avatar component with pastel fallback colors. Collapsible settings cards. Rename to Scout, new domain tryscout.tech.
Feature Polish +24 commits
Mar 27 — Day 10
Visibility & Cleanup
Enforce team profile access control — SELF/GROUP/ALL visibility checks on individual pages. Redirect SELF users from dashboard to actions. Uniform page widths (max-w-4xl standard, max-w-5xl for data-heavy pages). Fix all 31 svelte-check warnings. Update nodemailer for security patch. Docker Hub credentials in CI. 23k+ lines of code, zero warnings.
Feature Quality DevOps +4 commits
Mar 28 — Day 11
Audit Trail & Usage
Append-only audit log with centralized logAudit() helper — 15 critical actions instrumented (auth, roles, settings, integrations, data operations). Admin UI at /audit-log with cursor pagination and filters by actor/action. Ticket prefix allowlist in Settings — admin selects real project prefixes, false positives (GPL-3, UTF-8) hidden from Delivery. User last seen tracking with throttled updates. 265 unit tests.
Feature Quality +14 commits
Mar 29 — Day 12
Multi-Workspace & Onboarding
Full multi-workspace routing — all app routes under /{slug}/. Two-level layout: parent handles auth, [slug] layout resolves workspace + membership. Workspace switcher in sidebar (conditional: only visible with 2+ workspaces). Cookie-based redirect to last visited workspace. Security audit found and fixed critical workspace scoping bugs in all form actions. Onboarding lobby for new users (create vs invited). Editable slug with auto-suffix on collision. Workspace creation limit (1 per user) with discrete link in Account. 85 E2E + 270 unit tests, zero failures.
Feature Quality +13 commits

By the numbers

23,000+

Lines of code

100+ Svelte components, 100+ TypeScript files. Full-stack monolith with SSR, API routes, sync workers.

3 layers

Testing

247 unit tests (Vitest), 68 integration, 69 E2E (Playwright). Separate test DB, hydration-aware helpers.

0s

Downtime deploys

PM2 cluster mode, atomic build swap, health checks. GitHub Actions CI/CD pipeline.

3-5x

Faster with AI

Built with Claude Code. Developer focuses on product decisions, AI handles code and cross-file consistency.

How it was built

Plan
Implement
Review
Test
Deploy
Each feature was developed in a conversation: describe the goal, Claude writes the code, review together, iterate, ship. The loop is tight — often under an hour per feature.

The biggest accelerator isn't code generation speed — it's cross-file consistency. Adding a new role to RBAC means updating the Prisma schema, server auth, sidebar logic, settings page, and E2E tests. Claude does all of that in one pass. The developer's job shifts from writing code to making product decisions.