Kształt całości
DiPAgE to jednostronicowa aplikacja Angular działająca w całości w przeglądarce. Nie ma serwera aplikacyjnego, bazy danych do przygotowania ani systemu kont. Jedyny zaangażowany serwer serwuje statyczny pakiet i na tym jego rola się kończy. Wszystko, co aplikacja wie, znajduje się w IndexedDB na urządzeniu, na którym to wprowadzono.
Wybory technologiczne warte poznania
- Angular 22 z komponentami standalone i sygnałami wszędzie. Wykrywanie zmian jest zoneless, każdy komponent
OnPush. - TypeScript w trybie strict, łącznie ze
strictTemplates. Zwróć uwagę na lukę:tscnie sprawdza szablonów, więc nieaktualne powiązanie ujawnia się dopiero przy budowaniu AOT. - Tailwind CSS 4 z DaisyUI 5. Własny CSS wyłącznie tam, gdzie klasa narzędziowa nie wyraża reguły.
- UUIDv7 dla każdego generowanego ID, dzięki czemu identyfikatory sortują się według czasu utworzenia.
Co kosztuje zoneless
Jeśli piszesz testy dla tej bazy kodu, warto poznać jedną pułapkę od razu: przy wykrywaniu zmian zoneless subskrypcji debounceTime lub delay utworzonej w konstruktorze komponentu nie da się przepchnąć przez tick() wewnątrz fakeAsync. Asercja przechodzi wtedy, w ogóle nie wykonując opóźnienia. Twórz subskrypcję w ciele testu.
Co kosztuje lokalne przechowywanie danych
Brak synchronizacji, brak scalania między urządzeniami, brak kopii zapasowej po stronie serwera. Przeniesienie danych między urządzeniami to jawny eksport i import, a towarzyszące temu rozwiązywanie konfliktów jest widocznym przepływem, a nie algorytmem działającym w tle. To świadomy kompromis na rzecz pracy bez łączności i nieprzechowywania danych osobowych centralnie.