Taki use case, zabawa czymś tam nowym, niszowym. Wyboldowane punkty, w których posiłkowałem się AI
- Utworzyłem z ręki projekt, zbudowałem, sprawdziłem czy aplikacja działa na wszystkich platformach, czy chodzi serwer/
- Dopisałem jakieś tam potrzebne endpointy na serwerze, wyklepałem z ręki DTOs
- Podpiąłem bazę runtime (H2)
- Wygenerowałem klasę repozytorium (Junie)
- Jako, że całość serwera, to prosty CRUD, poprosiłem o wygenerowanie danych testowych na podstawie DTO
- Sprawdziłem enpointy
- Zrobiłem prosty UI
- Próbowałem podpiąć generowanie OpenAPI, ale ostatecznie i ja i AI ugrzęźliśmy w bałaganie różnych bibliotek o niezgodnych wersjach, więc dałem sobie spokój, bo zawsze coś nie działało.
- Na podstawie kontrolera po stronie serwera wygenerowałem klienta http po stronie UI
- Skonsumowałem endpointa, wypełniłem danymi z serwera UI, trochę się pobawiłem z poukładaniem tego (kolorki, layout itd)
- Zrobiłem kolejny widok UI, do wyświetlania detali
- Poprosiłem AI, żeby dorobiło nawigację (master/detail), zadziałało.
- Pozakładałem na Google Cloud potrzebne usługi, storage na pliki statyczne, cloud run, cloud build
- Wygenerowałem implementację repozytorium pod datastore (takie mongo)
- Wygenerowałem docker file dla serwera
- Odpaliłem z ręki
- Przygotowałem pipeline na cloud build. Budowanie klienta, serwera, pakowanie do dockera, deployment odpowiednio do bucket'a i repozytorium dockerowego, z repozytorium update na cloud run
- Zabrałem się za "upiększanie" UI, nie moja działka kompletnie, ale jakieś gotowe narzędzia do material themes pomogły
- Gemini poprosiłem o wygenerowanie jakiegoś logo aplikacji o podanym temacie, chwila mielenia i nano banana zrobił
- Wrzuciłem poprawki, commit, wszsytko poszło.
- Coś mnie podkusiło, żeby zrobić upgrade bibliotek, nawet udany, tylko pipelina się wywaliła, bo "coś"
- Poprosiłem Junie, żeby zrobiła fix pipeliny i konkretne kroki przeprowadziła w ten sa sposób jak mam to skonfigurowane lokalnie. Podmieniła obrazy na takie z pasującą wersją JDK i gradle'a, zadziałało
- Zauważyłem brak w postaci braku obsługi deeplinków do detali, poprosiłem Junie o dorobienie, zrobiła, parę razy musiałem jej zwrócić uwagę, że czegoś brakuje, coś nie działa, w jakimś tam wypadku wyskakuje błąd - poprawiła.
- Doczytałem, że jest nowa wersja biblioteki obsługującej deep linking, wywaliłem to, co Junie zrobiła w pocie czoła i zastąpiłem wywołaniem metody, która się pojawiła.
Job done.
Może nie jest to jakieś wielkie coś, chciałem głównie pobawić się tymi rozwiązaniami w chmurze + z rozpędu poszło przygotowanie serwra na Ktor, aplikacji w Compose. W sumie kilka wieczorów pracy, pomijalne koszty chmury (free tier), coś koło $5 na tokeny Junie. Miałem kiedyś trochę współnego z GCP, Kotlina znam, Ktor i Compose to były dla mnie nowości.
Starałem się zachować kontrolę nad tym co jest robione i prowadzić juniora za rączkę. Na koniec przygotowałem jeszcze trochę contentu do aplikacji (jakies tam quizy), tym razem z Gemini (bardzo dobrze sobie radzi z poleceniem typu "przygotuj quiz na 20 pytań wielokrotnego wyboru, na temat x, według załączonego wzorca".