05 - Entwicklung einer App mit KI per Spezifikation, Review und Korrekturen

Feb. 24, 2026·
Eugen [WebDucer] Richter
Eugen [WebDucer] Richter
· 11 Min Lesezeit
Implementierung der Spezifikation
blog Specification Driven Development
Hinweis

Die neuen Versionen von LLMs erscheinen sehr oft. Mit dem Teil 5 kommt nun Anthropic Sonnet 4.6 (statt 4.5) zum Einsatz.

Die App ist mit der Implementierung bereits lauffähig, aber noch nicht in einem Zustand, den ich als produktionsreif ansehen würde. Einige der Punkte haben wir bereits in dem vorherigen Artikel aufgegriffen. Beim Review des Codes (und auch beim Lauf der CI/CD Pipeline auf GitHub) sind noch ein paar weitere “Unschönheiten” aufgefallen. Diese wollen wir in der nächsten Spezifikation angehen.

Liste der geplanten Verbesserungen

  • Testprojekt referenziert nicht das MAUI Projekt direkt, sondern nur die Ordner (Hilfestellung für KI unter Microsoft Dokumentation verfügbar)
  • Testprojekt sollte xUnit in der Version 3 und die moderne Test Platform von Microsoft nutzen.
  • Neues Solution Format slnx sollte genutzt werden.
  • Die “Daten-Schicht” sollte statt CRUD-Namen domänenspezifische Bezeichnungen nutzen.
  • Registrierung von View und ViewModel kann in eine besser lesbare Extension ausgelagert werden, so dass beide auf einen “Schlag” registriert werden.
  • Microsoft.Extensions.Localization Bibliothek wird in unserer App nicht genutzt.
  • App-Erstellung für alle Betriebssysteme sollte nur auf main-Zweig passieren. Auf allen anderen reicht der Lauf von Test und Android (Bau auf Linux/Ubuntu), um Kosten zu sparen (macOS/iOS Build-Zeit kostet x10 von der Build-Zeit unter Linux).
  • Icons in der Shell für Chart und Statistiken sind “Rechtecke”.
  • Im Code finden sich noch “hard codierte” Texte, die übersetzt werden wollen.
  • Build erzeugt aktuell 26 Warnungen. Diese sollen, wenn möglich korrigiert werden.
  • In ViewModels sehe ich, dass man direkt auf UI Elemente zugreift (wie z.B. mit Application.Current!.MainPage!.DisplayAlert oder Shell.Current.GoToAsync): ViewModel sollte unabhängig davon sein, um testbar zu sein.
  • Ich sehe oft System.Diagnostics.Debug.WriteLine. Das sollte nicht in Produktiv-Code sein. Die App sollte durchgehend das vorgesehene ILogger dafür nutzen.

Liste der gefundenen Fehler

  • App stürzt beim Touch auf “Edit” ab.

    Stack Trace aus Debug Console
    2026-02-17 07:39:21.213606+0100 BodyMeasurement[37086:1654967] 
    Unhandled Exception:
    System.InvalidCastException: Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int32, System.Private.CoreLib,     Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'.
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType)
    2
       at Microsoft.Maui.Controls.ShellContent.ApplyQueryAttributes(Object content, ShellRouteParameters query,     ShellRouteParameters oldQuery)
       at Microsoft.Maui.Controls.ShellContent.OnQueryAttributesPropertyChanged(BindableObject bindable, Object oldValue, Object     newValue)
       at Microsoft.Maui.Controls.BindableObject.OnBindablePropertySet(BindableProperty property, Object original, Object value,     Boolean didChange, Boolean willFirePropertyChanged)
       at Microsoft.Maui.Controls.Element.OnBindablePropertySet(BindableProperty property, Object original, Object value,     Boolean changed, Boolean willFirePropertyChanged)
       at Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty property, BindablePropertyContext context,     Object value, Boolean currentlyApplying, SetValueFlags attributes, SetterSpecificity specificity, Boolean silent)    
    
       at Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty property, Object value, SetValueFlags attributes,     SetValuePrivateFlags privateAttributes, SetterSpecificity specificity)
       at Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty property, Object value)
       at Microsoft.Maui.Controls.ShellNavigationManager.ApplyQueryAttributes(Element element, ShellRouteParameters query,     Boolean isLastItem, Boolean isPopping)
       at Microsoft.Maui.Controls.ShellSection.GetOrCreateFromRoute(String route, ShellRouteParameters queryData,     IServiceProvider services, Boolean isLast, Boolean isPopping)
       at Microsoft.Maui.Controls.ShellSection.GoToAsync(ShellNavigationRequest request, ShellRouteParameters queryData,     IServiceProvider services, Nullable`1 animate, Boolean isRelativePopping)
       at Microsoft.Maui.Controls.ShellNavigationManager.GoToAsync(ShellNavigationParameters shellNavigationParameters,     ShellNavigationRequest navigationRequest)
       at BodyMeasurement.ViewModels.MainViewModel.NavigateToEditWeightAsync(Int32 entryId) in /Users/eugen/src    /ai-body-measurement/BodyMeasurement/ViewModels/MainViewModel.cs:line 146
       at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
       at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__124_0(Object state)
       at Foundation.NSAsyncSynchronizationContextDispatcher.Apply() in /Users/builder/azdo/_work/2/s/macios/src/Foundation    /NSAction.cs:line 165
    --- End of stack trace from previous location ---
       at ObjCRuntime.Runtime.ThrowException(IntPtr gchandle) in /Users/builder/azdo/_work/2/s/macios/src/ObjCRuntime/Runtime    .cs:line 2665
       at UIKit.UIApplication.UIApplicationMain(Int32 argc, String[] argv, IntPtr principalClassName, IntPtr delegateClassName)     in /Users/builder/azdo/_work/2/s/macios/src/UIKit/UIApplication.cs:line 68
       at UIKit.UIApplication.Main(String[] args, Type principalClass, Type delegateClass) in /Users/builder/azdo/_work/2/s    /macios/src/UIKit/UIApplication.cs:line 100
       at BodyMeasurement.Program.Main(String[] args) in /Users/eugen/src/ai-body-measurement/BodyMeasurement/Platforms/iOS    /Program.cs:line 13    
    
    2026-02-17 07:39:21.218836+0100 BodyMeasurement[37086:1654967] Unhandled managed exception: Invalid cast from 'System.    String' to 'System.Nullable`1[[System.Int32, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral,     PublicKeyToken=7cec85d7bea7798e]]'. (System.InvalidCastException)
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType)
    2
       at Microsoft.Maui.Controls.ShellContent.ApplyQueryAttributes(Object content, ShellRouteParameters query,     ShellRouteParameters oldQuery)
       at Microsoft.Maui.Controls.ShellContent.OnQueryAttributesPropertyChanged(BindableObject bindable, Object oldValue, Object     newValue)
       at Microsoft.Maui.Controls.BindableObject.OnBindablePropertySet(BindableProperty property, Object original, Object value,     Boolean didChange, Boolean willFirePropertyChanged)
       at Microsoft.Maui.Controls.Element.OnBindablePropertySet(BindableProperty property, Object original, Object value,     Boolean changed, Boolean willFirePropertyChanged)
       at Microsoft.Maui.Controls.BindableObject.SetValueActual(BindableProperty property, BindablePropertyContext context,     Object value, Boolean currentlyApplying, SetValueFlags attributes, SetterSpecificity specificity, Boolean silent)
       at Microsoft.Maui.Controls.BindableObject.SetValueCore(BindableProperty property, Object value, SetValueFlags attributes,     SetValuePrivateFlags privateAttributes, SetterSpecificity specificity)
       at Microsoft.Maui.Controls.BindableObject.SetValue(BindableProperty property, Object value)
       at Microsoft.Maui.Controls.ShellNavigationManager.ApplyQueryAttributes(Element element, ShellRouteParameters query,     Boolean isLastItem, Boolean isPopping)
       at Microsoft.Maui.Controls.ShellSection.GetOrCreateFromRoute(String route, ShellRouteParameters queryData,     IServiceProvider services, Boolean isLast, Boolean isPopping)
       at Microsoft.Maui.Controls.ShellSection.GoToAsync(ShellNavigationRequest request, ShellRouteParameters queryData,     IServiceProvider services, Nullable`1 animate, Boolean isRelativePopping)
       at Microsoft.Maui.Controls.ShellNavigationManager.GoToAsync(ShellNavigationParameters shellNavigationParameters,     ShellNavigationRequest navigationRequest)
       at BodyMeasurement.ViewModels.MainViewModel.NavigateToEditWeightAsync(Int32 entryId) in /Users/eugen/src    /ai-body-measurement/BodyMeasurement/ViewModels/MainViewModel.cs:line 146
       at CommunityToolkit.Mvvm.Input.AsyncRelayCommand.AwaitAndThrowIfFailed(Task executionTask)
       at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__124_0(Object state)
       at Foundation.NSAsyncSynchronizationContextDispatcher.Apply() in /Users/builder/azdo/_work/2/s/macios/src/Foundation    /NSAction.cs:line 165
    --- End of stack trace from previous location ---
       at ObjCRuntime.Runtime.ThrowException(IntPtr gchandle) in /Users/builder/azdo/_work/2/s/macios/src/ObjCRuntime/Runtime    .cs:line 2665
       at UIKit.UIApplication.UIApplicationMain(Int32 argc, String[] argv, IntPtr principalClassName, IntPtr delegateClassName)     in /Users/builder/azdo/_work/2/s/macios/src/UIKit/UIApplication.cs:line 68
       at UIKit.UIApplication.Main(String[] args, Type principalClass, Type delegateClass) in /Users/builder/azdo/_work/2/s    /macios/src/UIKit/UIApplication.cs:line 100
       at BodyMeasurement.Program.Main(String[] args) in /Users/eugen/src/ai-body-measurement/BodyMeasurement/Platforms/iOS    /Program.cs:line 13
    

  • CI / CD Pipeline auf GitHub funktioniert nicht

    Fehlermeldungen aus der GitHub Pipeline
    ## Test (Ubuntu)
    Run dotnet workload install maui
      dotnet workload install maui
      shell: /usr/bin/bash -e {0}
      env:
        DOTNET_VERSION: 10.0.x
        DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
        DOTNET_CLI_TELEMETRY_OPTOUT: true
        DOTNET_ROOT: /usr/share/dotnet
    Workload installation failed: Workload ID maui isn't supported on this platform.
    Error: Process completed with exit code 1.
    
    ## Windows
    Run dotnet build BodyMeasurement/BodyMeasurement.csproj -f net10.0-windows10.0.19041.0 --configuration Release --no-restore
      dotnet build BodyMeasurement/BodyMeasurement.csproj -f net10.0-windows10.0.19041.0 --configuration Release --no-restore
      shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'"
      env:
        DOTNET_VERSION: 10.0.x
        DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
        DOTNET_CLI_TELEMETRY_OPTOUT: true
        DOTNET_ROOT: C:\Program Files\dotnet
    Error: C:\Program Files\dotnet\sdk\10.0.103\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.    targets(544,5): error NETSDK1112: The runtime pack for Microsoft.NETCore.App.Runtime.win-x64 was not downloaded. Try running     a NuGet restore with the RuntimeIdentifier 'win-x64'.     [D:\a\ai-body-measurement\ai-body-measurement\BodyMeasurement\BodyMeasurement.csproj::TargetFramework=net10.0-windows10.0.    19041.0]
    
    Build FAILED.
    
    Error: C:\Program Files\dotnet\sdk\10.0.103\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.    targets(544,5): error NETSDK1112: The runtime pack for Microsoft.NETCore.App.Runtime.win-x64 was not downloaded. Try running     a NuGet restore with the RuntimeIdentifier 'win-x64'.     [D:\a\ai-body-measurement\ai-body-measurement\BodyMeasurement\BodyMeasurement.csproj::TargetFramework=net10.0-windows10.0.    19041.0]
        0 Warning(s)
        1 Error(s)
    
    Time Elapsed 00:00:00.78
    Error: Process completed with exit code 1.
    
    ## iOS
    Run dotnet build BodyMeasurement/BodyMeasurement.csproj -f net10.0-ios --configuration Release --no-restore
    /Users/runner/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.2/26.2.10197/targets/Xamarin.Shared.Sdk.targets(2374,3): error :     This version of .NET for iOS (26.2.10197) requires Xcode 26.2. The current version of Xcode is 16.4. Either install Xcode 26.    2, or use a different version of .NET for iOS. See https://aka.ms/xcode-requirement for more information. [/Users/runner/    work/ai-body-measurement/ai-body-measurement/BodyMeasurement/BodyMeasurement.csproj::TargetFramework=net10.0-ios]
    
    Build FAILED.
    
    /Users/runner/.dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.2/26.2.10197/targets/Xamarin.Shared.Sdk.targets(2374,3): error :     This version of .NET for iOS (26.2.10197) requires Xcode 26.2. The current version of Xcode is 16.4. Either install Xcode 26.    2, or use a different version of .NET for iOS. See https://aka.ms/xcode-requirement for more information. [/Users/runner/    work/ai-body-measurement/ai-body-measurement/BodyMeasurement/BodyMeasurement.csproj::TargetFramework=net10.0-ios]
        0 Warning(s)
        1 Error(s)
    
    Time Elapsed 00:00:01.05
    Error: Process completed with exit code 1.
    

    Das sollte für die Überarbeitung und Production Ready ausreichen.

Erstellen der neuen Spezifikation

/opsx:new Korrekturen im Design und Fehlerbehebung

Erstellen des Vorschlages

Change design-korrekturen-und-fehlerbehebung wurde erstellt.
Schema: spec-driven | Fortschritt: 0/4 Artefakte
Artefakt-Reihenfolge:
1. proposal ← aktuell bereit
2. design (blockiert bis proposal fertig)
3. specs (blockiert bis proposal fertig)
4. tasks (blockiert bis design + specs fertig)
---
Nächster Schritt: Das proposal-Artefakt erstellen.
Beschreibe bitte konkret, welche Design-Korrekturen und Fehlerbehebungen du durchführen möchtest:
- Welche UI/Design-Probleme gibt es?
- Welche Bugs oder Fehler sollen behoben werden?
Dann entwerfe ich das Proposal-Dokument für dich.

Der KI übergebe ich nun die beiden Listen mit den gewünschten Änderungen und gefundenen Fehlern.

Im Anschluss an die Analyse und den Vorschlag erweitere ich die gefundenen Fehler um ein weiteres, visuelles Problem. Sie erinnern sich, der + Button sah unter Android ein wenig schief aus, im Vergleich zu iOS. Ich will sehen, ob die KI aus den beiden Screenshots den Fehler erkennen kann. Die Bilder können zu OpenCode zwar nicht per Drag & Drop übergeben werden, aber man kann diese aus der Zwischenablage einfach reinkopieren.

Kopieren der Bilder in OpenCode

Leider hat OpenCode gleich mit der Korrektur des Buttons angefangen. Dieses Verhalten musste ich sofort stoppen und den Fehler in die Spezifikation aufnehmen:

Bitte keine Änderung machen, sondern zu der aktuellen Spezifikation hinzufügen.

Erstellen des Design-Dokuments

Nach dem Review des Vorschlages, ließ ich die KI das Design-Dokument erstellen.

Das Design-Dokument enthält 13 Entscheidungen mit Begründungen:
| # | Entscheidung |
|---|---|
| D1 | Edit-Absturz: [QueryProperty] muss string? verwenden, Konvertierung manuell |
| D2 | INavigationService + IAlertService als dünne Abstraktionen über Shell/Application |
| D3 | Testprojekt: <ProjectReference> + net10.0 TFM im Haupt-Projekt |
| D4 | xUnit v3 + Microsoft Testing Platform |
| D5 | CI/CD: MAUI-Workload für Tests entfernen, Branch-Strategie (Tests+Android überall, Windows/iOS nur auf main) |
| D6 | Domänenspezifische Methodennamen in IDatabaseService |
| D7 | Shell-Icons: Material Icons Font statt Emoji |
| D8 | FAB: Padding="0" + LineHeight="1" für Android |
| D9 | AddViewWithViewModel<TView,TViewModel>() Extension |
| D10 | Microsoft.Extensions.Localization entfernen |
| D11 | 15 hard-codierte Strings mit neuen Resx-Keys |
| D12 | .slnx-Migration |
| D13 | ILogger<T> statt Debug.WriteLine |
Nächster Schritt: specs-Artefakte erstellen. Soll ich weitermachen?

Beim Review, ist mir folgendes aufgefallen:

- ViewModels durch `INavigationService` und `IAlertService` von MAUI-UI-APIs entkoppeln

Es macht in unserem Fall nicht wirklich Sinn, Navigation und Alert (Dialoge) Services zu trennen. Diese sollen zusammengefasst werden.

Bitte fasse INavigationService und IAlertService zusammen in INavigationService

Ein weiterer Punkt, der mir beim Design nicht gefällt, ist folgender:

**Entscheidung:** `[QueryProperty(nameof(EntryId), "id")]` im `AddEditWeightViewModel` muss `EntryId` als `string?` deklarieren. Die Konvertierung zu `int?` erfolgt manuell in `OnEntryIdChanged`.

MAUI unterstützt auch typsichere Übergabe der Parameter, nicht nur als String.

Bitte nutze typsichere Parameterübergabe bei Navigation (D1). Dokumentation dazu findest du unter https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/shell/navigation?view=net-maui-10.0#pass-multiple-use-object-based-navigation-data

Auch die Umsetzung des nun neuen Navigations-Interfaces gefällt mir nicht wirklich. Es ist zu generisch. Sprechende Navigationsnamen wären schöner.

Bitte mach das Navigations-Interface mehr explizit- Beispiel, statt Task GoToAsync(string route, ShellNavigationQueryParameters parameters); ist es sinnvoller Task OpenEditMeasurementAsync(int measurementId);

Die vorgesehene Extension für View / ViewModel Registrierung ist zu lasch bei den generischen Parametern (class). Das können wir deutlich konkreter haben, damit der Compiler bei “falschen” Parametern bereits helfen kann. Für die View können wir auf Page (Basisklasse für alle Seitentypen in MAUI) und für ViewModel auf ObservableObject aus dem MVVM Toolkit einschränken.

    public static IServiceCollection AddViewWithViewModel<TView, TViewModel>(
        this IServiceCollection services,
        ServiceLifetime lifetime = ServiceLifetime.Transient)
        where TView : class
        where TViewModel : class

Bitte mach die AddViewWithViewModel eingeschränkter. Es reichen Page und ObservableObject.

Am Ende des Design-Dokumentes standen noch offene Frage, die wir beantworten sollen:

## Open Questions

- Welche exakte Version von xUnit v3 und xunit.runner.visualstudio v3 soll genutzt werden? (Aktuelle Stable-Versionen zum Zeitpunkt der Implementierung)
- Soll die `.sln`-Datei nach der `.slnx`-Migration im Repository verbleiben (für Kompatibilität mit älteren Tools) oder vollständig entfernt werden?
- Welche Material Icons sollen für Chart und Statistik genutzt werden? (`bar_chart`/`show_chart` oder andere Symbole)

Offene Fragen klären:

  • xUnit Version: nutze die aktuelle stabile Version
  • SLN-Datei: Nach Migration bitte löschen
  • Material Icons: Suche die passenden Icons aus

Ein letzter “Stupser” hat das Design-Dokument noch ein wenig verbessert:

Nutze Context7 MCP für die Recherche der Bibliotheken

Sehr aufschlussreich. Context7 liefert zwei wichtige Korrekturen für D4:
1. Microsoft.NET.Test.Sdk bleibt — es wird weiterhin benötigt (laut offiziellem xUnit v3 Getting-Started-Template)
2. OutputType>Exe ist in xUnit v3 Pflicht (da MTP-Runner eine ausführbare Datei erzeugt)
3. IAsyncLifetime: Task → ValueTask ist ein echter Breaking Change

Erstellen der Spezifikation und Aufgabenlist

Mit diesem Review konnte die KI nun eine gut Spezifikation mit Aufgabenliste erstellen, die hoffentlich für eine bessere Umsetzung sorgt.

Vorsicht

Kontextfenster im Auge behalten
Behalten Sie das Kontext-Fenster im Auge bei Anthropic Modellen. Unter 200k gilt ein Preis, über 200k verdoppelt sich dieser. Das habe ich bei dem Teil 4 leider nicht beachtet. Die Kosten für die Implementierung könnten also geringer sein, wenn man es im Blick behält und rechtzeitig den Kontext komprimiert. Die einzige Möglichkeit es zu steuern, war die Konfiguration des Modells anzupassen (in opencode.json).

Die Analyse und Erstellung der Spezifikation haben bei mir jetzt $4.02 verbraucht.

Implementierung

Nach der Umsetzung ließ sich die App leider nicht mehr kompilieren. Die KI musste also “nachsitzen” und die Korrekturen abschließen.

Die Solution lässt sich nicht kompilieren. dotnet build -f net10.0-android endet mit 3 Fehlern und 12 Warnungen.

Auch das half leider nicht. Nach dem Review, konnte ich sehen, dass die KI in der MAUI-Projektdatei, statt nur net10.0 hinzuzufügen, wie in der Dokumentation beschrieben, fast alle Dateien für net10.0 herausgenommen hat. Mit der Anweisung, die Dokumentation bitte noch Mal zu lesen und die Fehler zu korrigieren, wurde es ein wenig besser, aber immer noch nicht gut. Erst explizite Angaben, dass man in MAUI Projekt keine Dateien herausnehmen muss und nur die Änderung der “Ausgabe” zu exe für net10.0 ausreichen, um mit einen Testprojekt kompatibel zu sein, hat zum Erfolg geführt.

Zusätzlich wurde statt ResourceManager mit statischen Eigenschaften (typsichere Lokalisierung) mit einem “LocalizationService” gearbeitet, der mit “magischen” Strings die Übersetzungen gezogen hat. Unter VS Code ist ein wenig mehr Aufwand notwendig, da die “Design”-Datei nicht automatisch erstellt wird, wie unter dem großen Visual Studio, aber Microsoft liefert in seiner Dokumentation eine Anleitung, wie das einzurichten ist. Nach der Umsetzung konnte die KI auch gleich feststellen, dass viele “Keys”, die mit dem Service bisher genutzt wurden, gar keine Übersetzungen in den Resx-Dateien hatten. Das zeigt einmal mehr, wie wichtig “Tests”, egal ob als Compiler oder reale UnitTests, für die Steuerung der KI sind.

Wichtig

Die App bis hierher hat insgesamt $58,20 für die KI gekostet. Die “klassische” Entwicklung würde zwar deutlich mehr kosten, die Kosten sind aber trotzdem (mit Anthropic Sonnet) zu hoch. Hier würde sich ein Abo bei Anthropic bereits lohnen. Mit anderen Modellen kann es aber anders aussehen.

Das bringt die Abrechnung nach Token (nach Verbrauch) mit sich. Claude Code kann die Kosten aber auch weiter optimieren, da sein Agent abhängig von der Aufgabe auch oft zu dem kleineren Modell, Haiku, greift. Diese Erfahrung habe ich beruflich gemacht, wo Haiku ca. 60-80% der Arbeit erledigt. Bei OpenCode ist das nicht eingebaut, das müsste ich für mich selbst mit eigenen Agents nachbauen.

Nacharbeiten

Wenn man die App komplett in Deutsch durchspielt (siehe das Video), sieht man noch einige Stellen, an denen die Übersetzungen fehlen. Das muss noch korrigiert werden.

Die fehlenden Übersetzungen versuche ich mit einem kostenlosen Modell bei OpenCode (der Vorteil bei OpenCode ist ist, dass ich freie Wahl an Modellen habe) zu korrigieren.

Es sind noch nicht alle Texte mit Übersetzungen versehen, in Views, ViewModels. Bitte korrigiere das.

Das “Kimi K2.5” Modell hat die Übersetzungen ziemlich gut erkannt und übersetzt. Nur die Texte für die On-Boarding Seite wurden nicht erkannt.

Das “OnboardingPage” hat noch fehlende Übersetzungen.

Damit wurden alle Übersetzungen nun abgedeckt.

Hinzufügen Seite übersetzt

Xing
Eugen [WebDucer] Richter
Autoren
Software Ingenieur
Software Ingenieur, Ausbilder, Dozent. In dem Startup arbeite ich an der Authentifizierung für die gesamte Platform, primär mit TypeScript. In meiner Freizeit folge ich meiner Leidenschaft für das Lernen und Lehren und verwirkliche diese als Dozent an der Münchner Volkshochschule und als IHK-Prüfer.