[{"data":1,"prerenderedAt":373},["ShallowReactive",2],{"\u002Fblog\u002Fwie-ich-mit-antigravity-eine-komplette-flutter-app-gebaut-habe":3},{"id":4,"title":5,"body":6,"date":363,"description":364,"extension":365,"meta":366,"navigation":367,"path":368,"seo":369,"sitemap":370,"stem":371,"__hash__":372},"blog\u002Fblog\u002Fwie-ich-mit-antigravity-eine-komplette-flutter-app-gebaut-habe.md","Von 0 auf App Store: Wie ich eine komplette Flutter-App mit dem KI-Agenten Antigravity entwickelt habe",{"type":7,"value":8,"toc":353},"minimark",[9,13,17,29,36,47,50,53,58,64,92,99,101,105,117,123,190,197,200,202,206,211,218,239,246,250,256,266,270,273,280,287,289,293,300,303,323,326,331,333,338,341,349],[10,11,5],"h1",{"id":12},"von-0-auf-app-store-wie-ich-eine-komplette-flutter-app-mit-dem-ki-agenten-antigravity-entwickelt-habe",[14,15,16],"p",{},"Ja, ich habe vor Kurzem noch lautstark davor gewarnt, dass blinde Nutzung von KI-Code-Generatoren eure Software-Architektur in ein unwartbares Trümmerfeld verwandelt. Und dabei bleibe ich auch: Wer einfach nur Code-Snippets aus Chat-Fenstern kopiert oder blind die Tab-Taste bei Autocomplete-Vorschlägen drückt, baut sich die technischen Schulden der Zukunft in Rekordgeschwindigkeit auf.",[14,18,19,20,24,25,28],{},"Aber die Welt der künstlichen Intelligenz dreht sich rasant weiter. Der Sprung von ",[21,22,23],"strong",{},"reinen Generatoren"," hin zu ",[21,26,27],{},"autonomen, agentischen Coding-Assistenten"," ändert die Spielregeln fundamental.",[14,30,31,32,35],{},"In den letzten Wochen habe ich ein Experiment gewagt: Ich habe eine komplette, produktionsreife Mobile-App für iOS und Android von Grund auf neu entwickelt – und zwar nicht als Solo-Entwickler, sondern im echten Pair-Programming mit ",[21,33,34],{},"Antigravity",", dem agentischen Coding-Assistenten von Google DeepMind.",[14,37,38,39,46],{},"Das Ergebnis? ",[40,41,45],"a",{"href":42,"rel":43},"https:\u002F\u002Fengelsrudel.de",[44],"nofollow","Pack Planner",", ein hochsicherer, intelligenter Familienorganizer, der bereits im App Store und Google Play Store live ist und über 5.000 Familien im Alltag entlastet.",[14,48,49],{},"Hier ist mein Erfahrungsbericht, wie dieser Prozess ablief, warum die Architektur stabil blieb und wie sich die Arbeit als Entwickler dadurch verändert.",[51,52],"hr",{},[54,55,57],"h2",{"id":56},"das-projekt-pack-planner-kein-einfaches-crud-spielzeug","Das Projekt: Pack Planner – Kein einfaches CRUD-Spielzeug",[14,59,60,61,63],{},"Wenn man einen KI-Agenten testen will, reicht eine simple Todo-Liste nicht aus. ",[21,62,45],{}," musste von Anfang an echte, komplexe Probleme moderner Familien lösen:",[65,66,67,74,80,86],"ol",{},[68,69,70,73],"li",{},[21,71,72],{},"Mehrere Rudel (Multi-Tenancy lokal):"," Perfekt für Patchwork-Familien oder Co-Parenting. Man muss nahtlos zwischen verschiedenen Familiengruppen wechseln können, wobei die Daten strikt getrennt bleiben müssen.",[68,75,76,79],{},[21,77,78],{},"Offline-First & Echtzeit-Sync:"," Familien stehen oft im Funkloch oder haben schlechtes Netz. Alle Daten müssen lokal auf dem Gerät liegen und sich im Hintergrund konfliktfrei synchronisieren, sobald wieder Empfang da ist.",[68,81,82,85],{},[21,83,84],{},"Ende-zu-Ende verschlüsselter (E2EE) Dokumentensafe:"," Sensible Dokumente wie Impfpässe, Geburtsurkunden oder Mietverträge werden lokal auf dem Gerät verschlüsselt, bevor sie geteilt werden.",[68,87,88,91],{},[21,89,90],{},"Lokaler Gemma 4 KI-Assistent:"," Um den Datenschutz zu wahren, scannt eine integrierte Offline-KI auf dem Gerät per Kamera Elternbriefe, extrahiert automatisch Termine und schlägt Wochenspeisepläne vor – ohne dass Daten je eine Cloud berühren.",[14,93,94,95,98],{},"Als Tech-Stack fiel die Wahl auf ",[21,96,97],{},"Flutter (Dart)"," für das Frontend und eine robuste, lokale Datenbankarchitektur.",[51,100],{},[54,102,104],{"id":103},"der-unterschied-autocomplete-vs-agentisches-coding","Der Unterschied: Autocomplete vs. Agentisches Coding",[14,106,107,108,112,113,116],{},"Warum hat dieser Ansatz funktioniert, während klassische Copilots oft an komplexen Projekten scheitern? Der Schlüssel liegt im Unterschied zwischen ",[109,110,111],"em",{},"generativem Autocomplete"," und ",[109,114,115],{},"agentischem Arbeiten",".",[14,118,119,120,122],{},"Während herkömmliche KI-Assistenten nur die nächste Zeile Code erraten oder isolierte Fragen beantworten, arbeitet ",[21,121,34],{}," als autonomer Agent in einem geschlossenen Loop:",[124,125,130],"pre",{"className":126,"code":127,"language":128,"meta":129,"style":129},"language-mermaid shiki shiki-themes dracula","graph TD\n    A[\"Entwickler gibt Ziel vor\"] --> B[\"Agent entwirft Implementation Plan\"]\n    B --> C[\"Review & Freigabe durch Entwickler\"]\n    C --> D[\"Agent schreibt Code\"]\n    D --> E[\"Agent führt Compiler & Linter aus\"]\n    E -->|Fehler gefunden| F[\"Agent korrigiert Code autonom\"]\n    E -->|Kompiliert erfolgreich| G[\"Agent schreibt & führt Tests aus\"]\n    G -->|Tests schlagen fehl| F\n    G -->|Tests grün| H[\"Walkthrough & Vorstellung des Features\"]\n","mermaid","",[131,132,133,142,148,154,160,166,172,178,184],"code",{"__ignoreMap":129},[134,135,138],"span",{"class":136,"line":137},"line",1,[134,139,141],{"class":140},"sCdxs","graph TD\n",[134,143,145],{"class":136,"line":144},2,[134,146,147],{"class":140},"    A[\"Entwickler gibt Ziel vor\"] --> B[\"Agent entwirft Implementation Plan\"]\n",[134,149,151],{"class":136,"line":150},3,[134,152,153],{"class":140},"    B --> C[\"Review & Freigabe durch Entwickler\"]\n",[134,155,157],{"class":136,"line":156},4,[134,158,159],{"class":140},"    C --> D[\"Agent schreibt Code\"]\n",[134,161,163],{"class":136,"line":162},5,[134,164,165],{"class":140},"    D --> E[\"Agent führt Compiler & Linter aus\"]\n",[134,167,169],{"class":136,"line":168},6,[134,170,171],{"class":140},"    E -->|Fehler gefunden| F[\"Agent korrigiert Code autonom\"]\n",[134,173,175],{"class":136,"line":174},7,[134,176,177],{"class":140},"    E -->|Kompiliert erfolgreich| G[\"Agent schreibt & führt Tests aus\"]\n",[134,179,181],{"class":136,"line":180},8,[134,182,183],{"class":140},"    G -->|Tests schlagen fehl| F\n",[134,185,187],{"class":136,"line":186},9,[134,188,189],{"class":140},"    G -->|Tests grün| H[\"Walkthrough & Vorstellung des Features\"]\n",[14,191,192,193,196],{},"Antigravity hat direkten Zugriff auf das Workspace-Verzeichnis, kann das Projekt kompilieren, Abhängigkeiten in der ",[131,194,195],{},"pubspec.yaml"," verwalten, Unit- und Integrationstests ausführen und die Terminal-Ausgaben lesen.",[14,198,199],{},"Wenn der Compiler meckert, liest Antigravity den Stacktrace, versteht den Typfehler und behebt ihn eigenständig, bevor ich überhaupt gemerkt habe, dass ein Fehler vorlag.",[51,201],{},[54,203,205],{"id":204},"schritt-für-schritt-wie-wir-pack-planner-gebaut-haben","Schritt für Schritt: Wie wir Pack Planner gebaut haben",[207,208,210],"h3",{"id":209},"_1-das-fundament-strikte-schichtenarchitektur-clean-architecture","1. Das Fundament: Strikte Schichtenarchitektur (Clean Architecture)",[14,212,213,214,217],{},"Um zu verhindern, dass die KI Spaghetti-Code schreibt, habe ich als menschlicher Architekt vor der ersten Zeile Code die architektonischen Zäune hochgezogen. Wir haben uns auf eine klassische ",[21,215,216],{},"Clean Architecture"," geeinigt:",[219,220,221,227,233],"ul",{},[68,222,223,226],{},[21,224,225],{},"Presentation Layer:"," Flutter Widgets und State Management (BLoC\u002FCubit).",[68,228,229,232],{},[21,230,231],{},"Domain Layer:"," Reine Business-Logik, Entities und abstrakte Interface-Definitionen (Repositories). Dieser Layer hat null Abhängigkeiten zu externen Packages oder Flutter selbst.",[68,234,235,238],{},[21,236,237],{},"Data Layer:"," Die konkrete Implementierung der Repositories, Datenquellen (lokale SQLite\u002FIsar-Datenbank, API-Clients) und Mappings.",[14,240,241,242,245],{},"Antigravity hat diesen Rahmen über ein vordefiniertes Planungs-Framework (",[131,243,244],{},"implementation_plan.md",") strikt eingehalten. Sobald die KI versucht hätte, eine Datenbankabfrage direkt in ein UI-Widget zu schreiben, wäre dies im Plan oder spätestens durch die automatisierten Architektur-Checks aufgefallen.",[207,247,249],{"id":248},"_2-implementierung-des-e2ee-dokumentensafes","2. Implementierung des E2EE Dokumentensafes",[14,251,252,253],{},"Die Verschlüsselung von Dokumenten erfordert höchste Sorgfalt. Hier konnte Antigravity seine Stärken ausspielen. Ich wies den Agenten an:\n",[109,254,255],{},"„Implementiere einen E2EE-Service für Dokumente. Verwende AES-GCM (256-Bit) zur Verschlüsselung der Dateien auf dem Gerät. Die Schlüssel dürfen niemals im Klartext gespeichert werden; nutze dafür den sicheren Schlüsselspeicher des Betriebssystems (Keychain\u002FKeystore).“",[14,257,258,259,262,263,265],{},"Antigravity suchte die passenden Flutter-Packages (z. B. ",[131,260,261],{},"flutter_secure_storage"," und Kryptografie-Bibliotheken), verankerte sie in der ",[131,264,195],{},", schrieb die Kapselung für Android\u002FiOS und erstellte eine Suite von Unit-Tests, die verifizierten, dass eine Datei nach der Verschlüsselung nicht mehr im Klartext lesbar war und sich fehlerfrei entschlüsseln ließ.",[207,267,269],{"id":268},"_3-offline-first-synchronisation-lokale-ki","3. Offline-First Synchronisation & Lokale KI",[14,271,272],{},"Die größte Herausforderung war die Synchronisation der lokalen Datenbank mit einem zentralen Sync-Server, ohne Race Conditions zu erzeugen.",[14,274,275,276,279],{},"Hier haben wir nach dem ",[21,277,278],{},"Offline-First","-Prinzip gearbeitet. Alle Änderungen werden als lokale Events in einer Outbox-Queue gespeichert. Antigravity hat den Synchronisations-Scheduler implementiert, der im Hintergrund läuft, Konflikte (z.B. wenn zwei Familienmitglieder denselben Termin offline geändert haben) erkennt und nach definierten Regeln auflöst.",[14,281,282,283,286],{},"Für den integrierten ",[21,284,285],{},"Gemma 4 KI-Assistenten"," hat der Agent die Kamera-Schnittstellen und die OCR-Bibliotheken angebunden, um gedruckte Elternbriefe lokal zu parsen. Die extrahierten Textdaten wurden dann an ein lokales On-Device LLM übergeben, das Termine (wie „Sommerfest am 24. Juni um 15 Uhr“) strukturiert als JSON ausgibt, damit sie direkt in den Familienkalender eingetragen werden können.",[51,288],{},[54,290,292],{"id":291},"fazit-die-neue-rolle-des-entwicklers","Fazit: Die neue Rolle des Entwicklers",[14,294,295,296,299],{},"Das Experiment zeigt: Man kann eine komplette, hochkomplexe Flutter-App mit einem KI-Agenten bauen, ",[21,297,298],{},"ohne"," dass die Code-Qualität leidet. Aber es erfordert ein Umdenken.",[14,301,302],{},"Meine Rolle als Entwickler hat sich während des Projekts verschoben:",[219,304,305,311,317],{},[68,306,307,310],{},[21,308,309],{},"Vom Codewriter zum Software-Architekten:"," Ich habe weniger Zeit mit Tippen und dem Suchen nach passenden API-Parametern verbracht. Stattdessen lag mein Fokus auf dem Design von Schnittstellen, Datenstrukturen und der Validierung des Systems.",[68,312,313,316],{},[21,314,315],{},"Fokus auf Qualitätssicherung:"," Da der Agent den Code schreibt, war meine Hauptaufgabe das Review der Implementierungspläne und das Schreiben von präzisen Akzeptanzkriterien.",[68,318,319,322],{},[21,320,321],{},"Unglaubliche Feature-Velocity:"," Features, für die ich normalerweise Tage gebraucht hätte (wie die fehlerfreie E2EE-Pipeline inklusive Plattform-spezifischem Key-Storage und Testabdeckung), wurden in wenigen Stunden stabil umgesetzt.",[14,324,325],{},"Der Schlüssel zum Erfolg war, dass Antigravity nicht einfach \"ins Blaue hinein\" codiert hat. Die enge Verzahnung aus klaren Spezifikationen, automatisierten Tests und dem kontinuierlichen Compiler-Feedback-Loop sorgt dafür, dass die Codebase auch nach Wochen intensiver Entwicklung extrem sauber und wartbar bleibt.",[14,327,328,330],{},[21,329,45],{}," zeigt, was heute schon möglich ist, wenn Mensch und agentische KI als echtes Team zusammenarbeiten.",[51,332],{},[14,334,335],{},[21,336,337],{},"Möchtet ihr erfahren, wie ihr KI-Agenten wie Antigravity sicher in eure Entwicklungs-Workflows integriert, ohne eure Code-Qualität zu gefährden?",[14,339,340],{},"In meinen Beratungsmandaten unterstütze ich Entwicklungs-Teams dabei, moderne Architekturen aufzubauen, technische Schulden abzubauen und die Produktivität durch den sinnvollen Einsatz von KI-Tools und klaren Leitplanken nachhaltig zu steigern.",[14,342,343,344],{},"👉 ",[40,345,348],{"href":346,"rel":347},"https:\u002F\u002Fapp.bookaslot.de\u002Fpublic\u002F4faazrcaixfp8w3\u002Flocations\u002Fiqacygtac8iy92q\u002Fservices\u002F82sfyiwg68wmk1q?employeeId=t0yolmqvytp4un8",[44],"Jetzt Architecture & Code Health Audit anfragen",[350,351,352],"style",{},"html pre.shiki code .sCdxs, html code.shiki .sCdxs{--shiki-default:#F8F8F2}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":129,"searchDepth":144,"depth":144,"links":354},[355,356,357,362],{"id":56,"depth":144,"text":57},{"id":103,"depth":144,"text":104},{"id":204,"depth":144,"text":205,"children":358},[359,360,361],{"id":209,"depth":150,"text":210},{"id":248,"depth":150,"text":249},{"id":268,"depth":150,"text":269},{"id":291,"depth":144,"text":292},"2026-06-09T00:00:00.000Z","Kann man eine komplexe, offline-first Flutter-App mit E2EE-Safe und lokaler KI komplett mit einem KI-Agenten bauen, ohne im Chaos zu versinken? Ein Erfahrungsbericht am Beispiel von Pack Planner.","md",{},true,"\u002Fblog\u002Fwie-ich-mit-antigravity-eine-komplette-flutter-app-gebaut-habe",{"title":5,"description":364},{"loc":368},"blog\u002Fwie-ich-mit-antigravity-eine-komplette-flutter-app-gebaut-habe","XiM8wEg5n8OgmDpOH1xfWsj2c6KSRJ-SIn8y_JaBufE",1782202486809]