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.

BeSafe Preview — ekran główny PWA z wiadomościami jednorazowymi, generatorem haseł i prototypem pokoju 1:1

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.

Welcome to my world! What can I do for you?