LibrePass
Samodzielnie hostowany menedżer haseł stworzony jako pełne studium produktu obejmujące natywną aplikację mobilną na Androida, backend Spring Boot, szyfrowaną synchronizację i wczesnego klienta webowego.
Opis projektu
LibrePass był samodzielnie rozwijanym projektem open source obejmującym natywną aplikację mobilną na Androida, backend API, szyfrowane przechowywanie danych, synchronizację, dokumentację oraz wdrożenie kontenerowe.
Najważniejszą decyzją architektoniczną było rozdzielenie odpowiedzialności klienta i serwera. Operacje na wrażliwych danych sejfu miały odbywać się po stronie klienta. Backend obsługiwał uwierzytelnianie, komunikację API, synchronizację i przechowywanie zaszyfrowanych danych.
Główne obszary projektu
- Natywna aplikacja mobilna na Androida napisana w Kotlinie i Jetpack Compose.
- Dostęp biometryczny i automatyczne blokowanie sejfu.
- Lokalne przechowywanie danych i praca offline.
- Synchronizacja lokalnego sejfu z backendem.
- API Spring Boot z walidacją i ograniczaniem liczby zapytań.
- Obsługa PostgreSQL i MySQL.
- Wdrożenie z wykorzystaniem Dockera.
- Wczesna wersja klienta webowego w Svelte.
- Dokumentacja techniczna i wdrożeniowa.
Czego nauczył mnie projekt
Najważniejsze wnioski z LibrePass
LibrePass wymagał jednoczesnego myślenia o interfejsie, szyfrowaniu, synchronizacji, backendzie, wdrożeniu i realnym zakresie projektu.
Bezpieczeństwo jest procesem
Bezpieczeństwo menedżera haseł wynika z połączenia szyfrowania, hashowania haseł, obsługi tokenów, walidacji, blokowania sejfu i jasno określonych granic zaufania.
Synchronizacja jest częścią produktu
Tryb offline i synchronizacja wielu urządzeń muszą zachowywać się przewidywalnie przy braku internetu, oczekujących zmianach lokalnych i równoczesnej edycji danych.
Aplikacja mobilna potrzebuje architektury
Klient Android nauczył mnie oddzielania interfejsu Compose, stanu lokalnego, biometrii, bazy danych i synchronizacji od warstwy prezentacji.
Backend potrzebuje jasnych granic
Serwer odpowiadał za uwierzytelnianie, API, limity zapytań i przechowywanie zaszyfrowanych danych, natomiast operacje na sejfie pozostawały po stronie klienta.
Dokumentacja pomaga utrzymać projekt
Instrukcje konfiguracji i opisy architektury ułatwiły odtworzenie decyzji technicznych także po zakończeniu aktywnego rozwoju poszczególnych części.
Zakres projektu trzeba kiedyś zamknąć
Niedokończony klient webowy pokazał mi, kiedy lepiej pozostawić projekt jako udokumentowany materiał referencyjny zamiast rozwijać go bez realnego planu ukończenia.
Aplikacja mobilna
Natywny mobilny menedżer haseł
Aplikacja mobilna na Androida była głównym i najbardziej dopracowanym klientem LibrePass. Łączyła Kotlin, Jetpack Compose, Material 3, biometrię, lokalną bazę danych i synchronizację offline.
Aplikacja webowa
Prototyp klienta przeglądarkowego
Klient w Svelte pokazywał kierunek rozwoju LibrePass na większych ekranach. Pozostał niedokończonym prototypem i nie został wydany jako produkcyjna aplikacja.





