Przejdź do treściARIKU://CV (PDF)

← Wszystkie projekty

cat ~/projects/companion/README

Companion

Aplikacja Android2026w rozwoju

Osobista aplikacja local-first do planowania dnia: zamiast długiej listy zadań pokazuje, co zrobić teraz, i synchronizuje się z API ariku.pl, kiedy jest sieć.

Cel

Ograniczyć wybór do bieżącej decyzji („co robić teraz”), pozwolić zamienić zadanie zależnie od energii i czasu i nie zgubić rozpoczętych wątków. Telefon ma działać także wtedy, gdy serwer w domu jest niedostępny.

Rozwiązanie

Aplikacja Android z widokiem „TERAZ” (zadania sztywne i elastyczne, akcje: zagraj, zamień, później, porzuć), widżetem na ekranie głównym, powiadomieniami i notatkami. Lokalny silnik decyzyjny liczy rekomendacje, a w tle WorkManager synchronizuje stan z serwerem.

Architektura

  1. Room jako lokalna baza zadań, stanu i notatek; aplikacja działa w pełni bez sieci.
  2. Silnik decyzyjny na urządzeniu liczy rekomendacje i postęp.
  3. WorkManager synchronizuje zdarzenia z serwerem i odświeża widżet.
  4. Kontrakt API po stronie ariku.pl: stan „teraz”, przyjmowanie raportów, podział zadań na kroki, podpowiedzi.

Decyzje techniczne

Local-first
Awaria serwera w domu nie blokuje telefonu. Zdarzenia czekają w Room i wysyłają się po powrocie połączenia.
Na serwer tylko kontekst zagregowany
Surowe położenie, nagrania i tytuły aplikacji zostają na telefonie; serwer dostaje tylko zagregowany kontekst i czas trwania.

Problemy i rozwiązania

Niestabilne testy Robolectric w pełnym pakiecie
Klasy testowe dzieliły wątki i zasoby. Każda klasa testowa działa teraz w osobnym procesie (forkEvery = 1).