Jak zbudowaliśmy OneLimit: poboczny projekt programisty i taty
OneLimit Team
Każdy poboczny projekt zaczyna się od problemu, o którym nie potrafisz przestać myśleć. W przypadku OneLimit problem brzmiał tak: moje dzieci miały dzienne limity czasu ekranowego. Przestrzegały ich. A mimo to spędzały przed ekranami znacznie więcej czasu, niż bym chciał.
Zajęło mi zawstydzająco dużo czasu, zanim zrozumiałem dlaczego. Miały 90 minut na Switchu. Godzinę na PS5. Półtorej godziny na iPhonie. Kolejną godzinę na Xboksie. I jeszcze czas na komputerze z Windows PC. Pięć osobnych limitów, pięć osobnych systemów - wszystkie skonfigurowane, wszystkie egzekwowane, wszystkie działające dokładnie tak, jak zaprojektowano. Suma była znacznie większa, niż zamierzałem. To ja je tak ustawiłem. Po prostu nie zrobiłem dodawania.
To był moment, w którym OneLimit narodził się jako pomysł. Minął kolejny rok, zanim stał się aplikacją.
Coś, czego ciągle szukałem, a co nie istniało
Mój pierwszy odruch był taki, że ktoś musiał już to rozwiązać. Jestem programistą - umiem szukać. Spędziłem kilka wieczorów, szukając aplikacji, która pozwoliłaby mi ustawić jeden dzienny limit czasu ekranowego obejmujący wiele urządzeń i platform. Znalazłem mnóstwo narzędzi działających na pojedynczej platformie. Znalazłem aplikacje monitorujące, które dawały raporty, ale niczego nie egzekwowały. Znalazłem rozwiązania sprzętowe, które w naszej sytuacji byłyby przesadą.
Czego nie mogłem znaleźć, to coś prostego: jedna liczba, wszystkie ekrany, automatycznie egzekwowane. Wydawało się to oczywistą potrzebą. A nie istniało.
Więc zacząłem się zastanawiać, czy mógłbym to zbudować.
Co sprawiało, że było to technicznie trudne
Pierwszą rzeczą, którą musiałem zrozumieć, było to, dlaczego nikt jeszcze tego nie zbudował. Odpowiedź: każda platforma ukrywa dane o kontroli rodzicielskiej za własnymi API, z własnym modelem uwierzytelniania i własnym zestawem ograniczeń dotyczących tego, co aplikacje zewnętrzne mogą robić.
Apple ScreenTimeKit jest najpotężniejszy, ale też najbardziej restrykcyjny. To natywny framework, który daje aplikacjom legalne, działające na poziomie systemu możliwości zarządzania czasem ekranowym. Aby z niego korzystać, aplikacja musi mieć odpowiednie uprawnienia (entitlements), a te nie są przyznawane automatycznie - Apple weryfikuje, do czego ich używasz. Egzekwowanie jest prawdziwe: działa na poziomie systemu operacyjnego i naprawdę trudno je obejść.
PlayStation Family Management udostępnia API poprzez PlayStation Network, które pozwala autoryzowanym aplikacjom odczytywać dane o czasie gry i zarządzać kontami rodzinnymi. Sony zbudowało je głównie pod własną aplikację, ale API jest dostępne. Wyzwaniem jest zbudowanie niezawodnej, opartej na odpytywaniu integracji, która utrzymuje synchronizację danych bez przeciążania serwera.
Nintendo Switch Online w podobny sposób udostępnia dane o koncie i kontroli rodzicielskiej poprzez API, z którego korzysta oficjalna aplikacja kontroli rodzicielskiej. Rozszyfrowanie, jak to działa (legalnie, poprzez obserwację ruchu sieciowego oficjalnej aplikacji), było jednym z ciekawszych problemów do rozwiązania.
Microsoft Family Safety udostępnia API do zarządzania czasem ekranowym na Xboksie i komputerze z Windows PC. Spośród wszystkich integracji z konsolami ta od Microsoftu jest najlepiej ustrukturyzowana - to udokumentowane API z prawidłowym OAuth, które obejmuje zarówno konsole Xbox, jak i komputery z Windows PC w ramach tego samego konta.
Żadne z tych API nie zostało zaprojektowane, by rozmawiać ze sobą nawzajem. Używają różnych przepływów uwierzytelniania, różnych formatów danych, różnych limitów zapytań. Zbudowanie OneLimit oznaczało stanie się mostem między nimi - pobieranie danych o czasie z każdej platformy, utrzymywanie jednolitego stanu budżetu i przekazywanie działań egzekwujących z powrotem do każdej platformy.
To, co mnie zaskoczyło
Spodziewałem się, że praca z API będzie trudna. Nie spodziewałem się, że UX okaże się trudniejszy.
Integracja techniczna jest naprawdę złożona, ale kiedy już zadziała, to działa. Interfejs - czyli to, jak właściwie zakomunikować "zostało ci 45 minut na wszystkich urządzeniach" dziewięciolatkowi w sposób, który wydaje się sprawiedliwy i zrozumiały - wymagał o wiele więcej iteracji, niż przewidywałem.
Wczesne wersje aplikacji były zbyt techniczne. Za dużo liczb, za dużo szczegółów. Moje dzieci patrzyły na to i wzruszały ramionami. Wersja, która naprawdę zmieniła zachowanie, była dużo prostsza: pierścień budżetu w aplikacji dla dziecka, który pokazuje pozostały czas jako wizualne odliczanie. Zielony oznacza dużo czasu. Żółty - że robi się ciasno. Czerwony - prawie koniec. I tyle. Dzieci rozumieją to natychmiast.
Innym zaskoczeniem było to, jak bardzo liczył się moment egzekwowania limitu. Kiedy czas się kończy, co się dzieje? I jak dziecko dowiaduje się o tym, zanim czas się skończy? Dopracowanie tych przejść - ostrzeżenie z odpowiednim wyprzedzeniem, by zdążyć skończyć, płynne zablokowanie, jasne wyjaśnienie - to właśnie tam poszła duża część pracy projektowej.
Funkcje, które wzięły się z prawdziwych sytuacji rodzicielskich
Poproś o więcej czasu wzięło się z konkretnej negocjacji: "Czy mogę dostać więcej czasu?". Zamiast za każdym razem podejmować doraźną decyzję rodzicielską, OneLimit pozwala dzieciom wysłać prośbę prosto ze swojego urządzenia. Rodzic zatwierdza lub odrzuca ją jednym dotknięciem. To usuwa kłótnię z pokoju.
Serie (streaki) wzięły się z chęci, by samoregulacja dawała poczucie nagrody. Dzieci, które mieszczą się w dziennym budżecie, budują serię. To prosta zachęta, ale zmienia limit z czegoś narzuconego w coś zasłużonego.
Blokada awaryjna wzięła się z sytuacji, którą podejrzewam, że zna wielu rodziców: moment, gdy dziecko nakręca się po przegranej w grze, a każda kolejna minuta przed ekranem tylko pogarsza sprawę. Możliwość natychmiastowego zablokowania wszystkich urządzeń z mojego telefonu - bez konieczności fizycznej interwencji i odbierania czegokolwiek - okazała się naprawdę przydatna.
Odliczanie do snu daje dzieciom jasny, widoczny okres wyciszenia, zanim ekrany zostaną zablokowane na noc. Żadnego nagłego odcięcia - widzą zbliżającą się porę i mogą naturalnie zakończyć.
Harmonogramy wzięły się z różnicy między dniem szkolnym a weekendem. Właściwy limit we wtorek to nie to samo, co właściwy limit w sobotę. OneLimit pozwala ustawić różne budżety na różne dni, więc weekendy mogą dawać więcej swobody, nie stając się przy tym normą.
Co zrobiliśmy źle (i naprawiliśmy)
Pierwsza wersja próbowała robić zbyt wiele. Analityka użycia urządzeń, szczegółowe zestawienia według aplikacji, raporty trendów w czasie. To wszystko ciekawe dane, ale nie tego większość rodziców tak naprawdę potrzebuje w danym momencie. Rodzic potrzebuje wiedzieć: ile czasu zostało i czy będzie z tym dziś problem? Cała reszta to szum.
Sporo z tego okroiliśmy. Obecna aplikacja jest prostsza niż wczesne wersje. To była właściwa decyzja.
Początkowo zrobiliśmy też zbyt trudne przyznawanie okazjonalnego dodatkowego czasu. System był sztywny w sposób, który wydawał się karzący - i dla dziecka, i dla nas. Prawdziwe życie nie jest sztywne. Niektóre dni zasługują na większą elastyczność. Wbudowanie łatwych, jednodniowych wyjątków (bez demontowania całej struktury) okazało się ważne.
Gdzie OneLimit jest teraz
OneLimit to prawdziwa aplikacja w App Store. Obsługuje iPhone, PS5, Nintendo Switch, Xbox i komputery z Windows PC. Jest darmowy plan, który obejmuje jedno dziecko i jedno urządzenie - wystarczająco, by wypróbować aplikację i sprawdzić, czy główna idea sprawdza się w twojej rodzinie. Plan Pro usuwa ograniczenia; aktualna cena jest podana w App Store.
To wciąż niewielkie przedsięwzięcie. Jesteśmy malutkim zespołem budującym coś, czego sami potrzebowaliśmy, dla problemu, który - jak sądzimy - dotyczy wielu rodzin. Hasło - "Jeden budżet. Wszystkie ekrany." - to naprawdę to, co zamierzaliśmy zbudować, i to właśnie robi ta aplikacja.
Jeśli jesteś rodzicem zarządzającym wieloma urządzeniami i czujesz tarcie limitów ustawianych osobno na każdym urządzeniu, bardzo chcielibyśmy, żebyś wypróbował naszą aplikację. A jeśli masz opinię - rzeczy, które nie działają, funkcje, które byłyby przydatne, sposoby, w jakie coś zrobiliśmy źle - naprawdę ją czytamy i naprawdę kształtuje to, co budujemy dalej.
Ta część bycia małym zespołem nie jest aż taka zła.
OneLimit jest dostępny na iOS z obsługą iPhone, PS5, Nintendo Switch, Xbox i komputerów z Windows PC. Zacznij na onelimit.app.