Gabinet dentystyczny - prosta aplikacja webowa w Go
Wyzwanie na najbliższy miesiąc: zaprojektuję i zaimplementuję program do obsługi gabinetu dentystycznego. Napiszę go w go. Let’s go 😄!
Ćwiczenie
Dziś postanowiłam, że podejmę się pewnego wyzwania: chcę zaprojektować i zaimplementować prosty program do obsługi gabinetu dentystycznego. Będzie to tak naprawdę prototyp, choć całkiem możliwe, że jednak będę go dalej rozwijać.
Założenia
- prostota
- polski interfejs
- plikowa baza danych
- pacjenci, wizyty, panel “zębowy” (do oznaczania zabiegów)
Technologia
Czyli o tym, jak chcę to zrobić.
Opcje
- JPA w Spring Boot z javafx albo z interfejsem webowym (wtedy REST)
- Jeśli Bulma/Bootstrap, to może jednak baza będzie na SQLite i backend w Javascript/TypeScript?
- Jeśli Java to może warto rozważyć Kotlina i jego rozwiązania ORM-owe? Albo przynajmniej biblioteki do JDBC?
Najbliższa mi będzie jednak Java/Kotlin. No i GUI w JavaFX.
Aktualizacja 2021-08-20
Buhaha! No więc nie wybrałam żadnej opcji z powyższych. Ciągnie mnie do wypróbowywania Go.
Język jets prosty bardzo, prawie że prostacki, ale ta prostota trafia do mnie (chyba się starzeję), bo rzeczywiście czytanie kodu w Go jest dużo mniej stresujące, niż na przykład w Clojure (bardziej odpowiada mi kierunek czytania od góry do dołu a nie od środka na zewnątrz)
Ostatecznie (albo tymczasowo) postanowiłam, że zrobię projekt w Go. Dla fanu, jak mówią moje dzieci :)
Czego się nauczyłam
Całkiem sporo! Przejrzałam trochę stron, żeby uczyć się w trakcie pisania:
Framework webowy
Do zrobienia prostej strony z odrobiną webowej dynamiki potrzebowałam wybrać bibliotekę do tworzenia aplikacji webowych. W środowisku golangowym istnieje kilka Gin, Echo, fiber, Confetti, iris. Wybrałam pierwszy (z powodu gwiazdek na githubie).
Templejty
Templejty piszę w standardowym dla go html/emplate który ma API takie jak text/template.
CSS
Upiększam swojego htmla przy użyciu Bulma
Baza danych
Odpowiednikiem javowego jdbc jest API database/sql implementoane przez driver do sqlite3 go-sqlite3. Przydał mi się Tutorial about databases oraz Informacje nt. interfejsu
Co zrobiłam do tej pory
Po wielu ekperymentach z nowymi bibliotekami udało mi się stworzyć proste gui do prezentowania tabelki z pacjentami oraz formularza do dodawania oraz edycji wybranego pacjenta:

Uczę się też używania interfejsu wiersza poleceń do sqlite. Prosty, miły, szybki. Same zalety.

Co jest jeszcze do zrobienia
- Wizyty widoczne dla każdego pacjenta.
- Możliwość dodania nowej wizyty dla pacjenta.
- Wyszukiwanie pacjentów
- Widok “uzębienia” pacjenta (będzie częścią danych pacjenta). Wizyty mogą dodawać “zabiegi” do uzębienia w ramach pewnej wizyty.
Wyzwania
Jestem tak bardzo przyzwyczajona do JPA, że pisanie SQL-a ręcznie jest bardzo pouczającym doświadczeniem. Istnieje biblioteka do mapowania obiektowo-relacyjnego w Go, ale na razie chcę się trzymać blisko sql-a i zobaczyć, czy będę w stanie stworzyć w ten sposób używalny prototyp.
Życzcie mi powodzenia 😅
Ten wpis jest częścią serii gabinet.
- 2021-13-09 - Gabinet dentystyczny - zapis zmian i podsumowanie
- 2021-11-09 - Gabinet dentystyczny - Legenda
- 2021-07-09 - Gabinet dentystyczny - diagram
- 2021-27-08 - Gabinet dentystyczny - przygotowania do rysowania diagramu
- 2021-26-08 - Gabinet dentystyczny - usuwanie pacjentów i wizyt
- 2021-23-08 - Gabinet dentystyczny - dodanie wizyt
- 2021-15-08 - Gabinet dentystyczny - prosta aplikacja webowa w Go