Das hier ist mein erster Gehversuch mit Dart im Rahmen meiner FIAE-Umschulung. Es ist eine kleine Suchmaschine fürs Terminal, die direkt die Wikipedia-API anzapft.
Ich habe das Ganze so aufgebaut, dass ich die Logik ggf. später einfach für meine erste Flutter-App wiederverwenden kann.
Anstatt alles in einen Topf zu werfen, habe ich den Code ordentlich getrennt:
wikipedia/: Das ist quasi das „Gehirn“. Hier stecken die API-Anbindung, die Datenmodelle und die Logik, um die Antworten von Wikipedia zu verstehen.cli/: Das ist das „Gesicht“ im Terminal. Hier wird alles angezeigt und die Befehle des Nutzers verarbeitet.CommandRunner: Damit die Steuerung nicht im Chaos versinkt, nutze ich eine Struktur für Befehle (wiesearchoderarticle).
In den letzten Tagen habe ich ein paar Features eingebaut, auf die ich stolz bin:
-
Ordentliche Befehle: Mit
searchkannst du stöbern und mit--im-feeling-luckykriegst du direkt die Zusammenfassung des besten Treffers – inklusive Emojis und Farben im Terminal. -
Fehler mitschreiben (Logging): Falls mal was schiefgeht (z. B. kein Internet), schreibt das Programm den Fehler in eine Logdatei im
logs/-Ordner, statt einfach nur abzustürzen. -
Keine Angst vor Abstürzen: Ich fange typische Probleme (wie falsche Formate oder Netzwerkfehler) sauber ab und gebe eine verständliche Rückmeldung.
-
Auf Deutsch umgestellt: Die Suche spuckt jetzt standardmäßig Ergebnisse von
de.wikipedia.orgaus. -
Sauberer Workflow: Alles ist mit Git dokumentiert, unnötige Dateien werden ignoriert und der Code ist so kommentiert, dass man auch nach drei Wochen noch versteht, was man da eigentlich getippt hat.
Wechsle in das Verzeichnis der CLI und führe das Skript aus:
cd cli
dart run bin/cli.dart search "Programmiersprache"
# Oder wenn du direkt die Zusammenfassung willst:
dart run bin/cli.dart search "Flutter" --im-feeling-luckyAls angehender FIAE ist mir wichtig, dass die Anwendung stabil bleibt und professionell betreut werden kann. Deshalb stecken in diesem Projekt noch ein paar wichtige "Enterprise"-Features:
-
CI/CD Pipeline: Im Ordner
.githubliegen automatisierte Workflows, die bei jedem Push auf GitHub anspringen. Sie prüfen automatisch, ob die Abhängigkeiten sicher sind (dep_audit) und ob das Projekt fehlerfrei baut. -
Unit Tests: Damit neue Features nicht alte Funktionen kaputt machen, habe ich automatisierte Tests (z. B. in
cli/test/cli_test.dart) integriert. -
Fehlerbehandlung & Logging: Das Programm "verschluckt" keine Fehler. Über eine eigene Logger-Klasse werden Probleme (wie Netzwerk-Aussetzer) sauber in Log-Dateien im Ordner
logs/dokumentiert. -
Versionskontrolle: Ich nutze einen sauberen Git-Workflow mit aussagekräftigen Commits und einer gepflegten
.gitignore, damit kein "Müll" im Repo landet.