Wybrane realizacje Privacy-focused PWA / Secure Messaging
Szyfrowane wiadomości jednorazowe i prototyp pokoi 1:1
Produkt autorski w Preview Produkt autorski — Preview / private beta; niezależny audyt w przygotowaniu 2026
BeSafe to dwujęzyczna aplikacja PWA do szyfrowanego przekazywania jednorazowych wiadomości i prowadzenia tymczasowych rozmów 1:1. Łączy szyfrowanie po stronie klienta, TTL, jednorazowy odczyt, React, TypeScript, API Node.js i MariaDB.
Rola
Projektant i developer produktu — od protokołu klienta i PWA po API, magazyn ciphertextu, testy i rozdzielone środowiska.
Problem
Udostępnienie sekretu albo krótkiej wymiany 1:1 bez oddawania plaintextu serwerowi. Wersja publiczna musiała oddzielić to, co działa na Preview, od roadmapy Pro — bez twierdzeń o audycie, o anonimowości albo o komunikatorze poza obecnym zakresem.
Rozwiązanie
Klient w React i TypeScript szyfruje treść w przeglądarce. Osobne API Node.js/TypeScript (Fastify) i MariaDB przechowują ciphertext oraz metadane TTL, odczytu i pokoju. Wiadomości jednorazowe działają na Preview API. Pokój 1:1 jest prototypem koperty; rozmowy na żywo nie są jeszcze publicznym produktem. Live Demo prowadzi do Preview.
Opis projektu
BeSafe to dwujęzyczna aplikacja PWA w React i TypeScript do szyfrowanych wiadomości jednorazowych oraz prototypu tymczasowych pokoi dwuosobowych. Szyfrowanie odbywa się w przeglądarce. API i magazyn MariaDB przyjmują ciphertext oraz minimalne metadane potrzebne do wygasania, jednorazowego odczytu i operacji pokoju. Publiczne demo to środowisko Preview. Niezależny audyt bezpieczeństwa nie został jeszcze wykonany.
Kontekst projektu
Potrzebny był ostrożny produkt prywatności: jednorazowe sekrety i szkic pokoju 1:1, bez udawania komunikatora z audytowanym E2EE, Double Ratchet ani odpornością na każde kompromitowanie.
Proces
Najpierw lokalny generator i protokół sekretu w przeglądarce, potem Preview API z ciphertextem w MariaDB, rozdzielenie Preview i Production oraz jawny rejestr możliwości. Transport WebSocket i Double Ratchet pozostają etapem planowanym.
Zakres prac
- Frontend React / TypeScript z interfejsem PL/EN i instalowalną PWA.
- Szyfrowanie po stronie klienta; serwer nie otrzymuje plaintextu wiadomości.
- API Node.js/TypeScript z CORS na allowliście i endpointem diagnostycznym.
- Trwały magazyn ciphertextu w MariaDB na Preview API.
- Rozdzielenie Preview i Production; produkcja nie jest celem portfolio.
Zakres funkcjonalny
- Szyfrowane wiadomości jednorazowe (Preview · working): link albo fraza.
- TTL i jednorazowy odczyt (wypalenie po przeczytaniu) w zakresie 1 min–7 dni, 1–10 odczytów.
- Lokalny generator haseł i fraz (Active) — wyłącznie w przeglądarce.
- Dwujęzyczny interfejs PL/EN oraz układ desktop / tablet / telefon.
- Instalowalna PWA z service workerem (powłoka i generator lokalny).
- Tymczasowy pokój 1:1 jako prototyp koperty — rozmowy na żywo nie są jeszcze publicznym produktem.
- QR transfer (Preview) dla generatora i linków; nie jest to weryfikacja tożsamości.
Technologie wykorzystane
- React
- TypeScript
- PWA
- Client-side encryption
- Node.js
- MariaDB
- REST API
- Fastify
- PL/EN
- TTL
- Vitest
Kierunek rozwoju
Poniższe pozycje nie są wdrożone w obecnej wersji.
- HTTPS polling (Preview / flaga; nie publiczny komunikator)
- WebSocket / WSS
- Authenticated session establishment
- Double Ratchet
- Forward secrecy
- Post-compromise recovery
- Safety numbers
- Identity-verification QR
- Encrypted ratchet-state storage
- Independent security audit
Niezawodność
- Preview API przechowuje wyłącznie ciphertext i minimalne metadane TTL / odczytu / pokoju.
- Rozdzielenie hosta PWA Preview od originu API Preview.
- Limity TTL, liczby odczytów i rozmiaru plaintextu zapisane w rejestrze możliwości.
- Brak automatycznego fallbacku magazynu Preview/Production do pamięci.
Bezpieczeństwo
- Architektura bezpieczeństwa zaimplementowana i testowana w bieżącym zakresie projektu; niezależny audyt w przygotowaniu.
- Szyfrowanie w przeglądarce; serwer nie dostaje plaintextu wiadomości, haseł ani kluczy deszyfrujących.
- CORS z dokładną listą Origin; sekrety środowiskowe poza frontendem.
- To nie jest audytowany komunikator E2EE ani obietnica anonimowości.
Dostępność
- Interfejs responsywny na pulpicie, tablecie i telefonie.
- Dwujęzyczny UI PL/EN.
- Preferencja ruchu w ustawieniach aplikacji BeSafe.
Testy
- Vitest w pakietach monorepo.
- Typecheck i lint w repozytorium BeSafe.
- Wersjonowanie kompilacji UTC w aplikacji BeSafe.
CI/CD i wdrożenie
- Git i GitHub (`hoody1333/besafe`) — repozytorium na razie prywatne.
- Osobne środowiska LOCAL, PREVIEW i PRODUCTION.
- Publiczne demo portfolio: https://preview.besafe.lukjohn.com/
- Produkcja BeSafe nie jest przyciskiem portfolio bez osobnej zgody.
Potwierdzone rezultaty
- Działające Preview: jednorazowe wiadomości z ciphertextem w MariaDB.
- Lokalny generator haseł bez wysyłania sekretu na serwer.
- Jawny rejestr możliwości: Active, Preview · working, Planned, Unavailable.
- PWA z osobnym API Preview i produkcją jako osobnym środowiskiem.
Aktualny status
Produkt autorski — Preview / private beta; niezależny audyt w przygotowaniu
Preview: https://preview.besafe.lukjohn.com/
Publiczne repozytorium GitHub jest w przygotowaniu — przycisk kodu źródłowego pojawi się po publikacji.