Building a Full Production App with Claude: What Actually Worked and What Didn't

A senior backend developer with years of experience but zero Flutter/Dart knowledge built and shipped a full production mobile app called Warantly (warranty management) for iOS and Android using Claude as their primary development tool. The project took 2.5 months of evenings after a day job.
The Stack
- Frontend: Flutter
- Backend: Laravel 12
- Infrastructure: Ansible (entire VPS environment codified, reproducible from a single run)
How Claude Was Used
The developer managed Claude like a capable but context-limited junior developer. They ran multiple sessions in parallel, each scoped to a single concern:
- Usually 2-3 sessions at a time; at peak, 6 simultaneously (3 backend, 2 Flutter, 1 DevOps)
- Used
git worktreesso sessions could work on different features without conflicts - Their role: architect and integration layer — cycling between sessions, providing context, making cross-cutting decisions
What Claude Did Well
Fast, competent first drafts of well-specified components. Anything with a clear spec and bounded scope came back usable on the first or second pass. Claude was also genuinely good at walking the developer through unfamiliar territory — store compliance, paywall configuration, infrastructure setup — things where guidance was needed, not just code generation.
Where It Broke Down
1. UI Bugs
The biggest failure mode. Claude has no way to see the screen. It would analyze code, make a fix, confidently say "this should resolve it" — and it wouldn't. Multiple rounds on the same visual bug because the agent reasoned about what the UI should do rather than seeing what it actually did. Workaround: extensive debug statements, test by hand, feed Claude exact runtime output and UI screenshots. The feedback loop — instrument, run, report back — became the standard pattern for anything visual.
2. Cross-Session Consistency
The backend agent might design a response format that doesn't match what the Flutter agent expects. Claude doesn't know what other sessions decided. The developer had to be the source of truth for API contracts, shared constants, naming conventions — copying them between sessions manually. Whenever that step was skipped, mismatches were found during integration.
3. Context Drift in Long Sessions
A session that's been running quietly loses the thread — reintroduces patterns already rejected, contradicts constraints from earlier. It doesn't announce this. The output stops being coherent with its own history. Solution: keep sessions focused and disposable. Start fresh when they get long. Front-load critical context as a structured brief rather than relying on conversation history.
What Made It Work
The developer enforced tests and static analysis from day one. They couldn't review Dart/Flutter code with expert eyes, but automated checks held as the quality gate. Without it, they wouldn't have had the confidence to ship. "The hardest part wasn't technical — it was giving up control. I'm an experienced developer and this was the first project where I wasn't reviewing code line by line. Trusting the process (tests pass, linter clean, behavior correct) over reading every function was a real adjustment."
The App
Warantly — warranty management. Track purchases, store receipt photos, get expiry reminders, AI receipt scanning, product recall alerts. Free with unlimited warranties. Pro adds AI scanning, recall alerts, and maintenance schedules. Available at warantly.app.
📖 Read the full source: r/ClaudeAI
👀 See Also

200+ App Design Specs in Markdown – Drag into Claude or Cursor for Exact UI Clones
A curated library of 200+ popular apps as structured markdown design specs with exact hex codes, type scale, spacing, every screen state, and nav graph. Drop into Claude, Cursor, or any AI agent to generate SwiftUI, Jetpack Compose, or Expo UI clones without guessing colors or spacing.

Qwen3.6-27B SVG Generation with Closed-Loop Harness
A closed-loop harness using Agno and Pi agents iteratively improves SVG outputs from Qwen3.6-27B by rendering, feeding back PNGs to Qwen Vision, and judging results in two rounds.

osu-mcp: An MCP Server That Lets Claude Analyze Your osu! Stats in Plain English
osu-mcp is an MCP server for the osu! API v2, now on the official MCP Registry. It exposes 12 tools for player profiles, score history, beatmap search, rankings, and more. A demo showed Claude computing pp-per-play efficiency across player accounts to reveal that volume, not accuracy, was the bottleneck.

Hyper iOS App: Voice Recorder with Real-Time Transcription and Action Extraction
Hyper is an iOS voice recorder app that transcribes conversations in real-time, provides summaries and action items, and allows mid-conversation queries via wakeword detection. It's designed for unstructured meetings like 1:1s, coffee chats, and standups.