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

✍️ OpenClawRadar📅 Published: July 1, 2026🔗 Source
Building a Full Production App with Claude: What Actually Worked and What Didn't
Ad

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 worktrees so 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.

Ad

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

Ad

👀 See Also