Przejdź do treści
juz-ide.pl blog
Wróć

Fundament: dlaczego pierwszy tydzień spędziłem na rzeczach niewidocznych

Paweł G.
Edytuj stronę
Fundament: dlaczego pierwszy tydzień spędziłem na rzeczach niewidocznych
Dziennik Technologia fundamenty

Sierpień 2025. Po kilku miesiącach planowania i prototypów, czas zacząć budować na poważnie. Platforma dla sąsiadów w małych miastach. I zamiast rzucić się do pisania funkcji, poświęcam cały tydzień na coś, czego żaden użytkownik nigdy nie zobaczy.

Skąd pomysł

Mieszkam w Starachowicach — miasto 50 tysięcy mieszkańców. Kiedy potrzebuję hydraulika, szukam na OLX. Ale OLX to ogłoszenia z całej Polski — facet z Gdańska nie przyjedzie do Starachowic naprawić kranu.

Pytam na grupach na Facebooku. Ktoś poleca, ktoś odradza, ale w 200 komentarzach pod postem trudno cokolwiek znaleźć. Nie wiem kto jest z mojego osiedla, kto jest sprawdzony, kto zrobi to uczciwie.

Sąsiadka z piętra niżej szukała kogoś do opieki nad psem na weekend. Napisała na trzech grupach, dostała 40 odpowiedzi od ludzi z całego województwa. Potrzebowała kogoś z najbliższej okolicy, komu może zaufać. Znalazła przez koleżankę z pracy — nie przez internet.

Małe miasta nie mają swojej platformy. OLX jest za duży, Facebook za chaotyczny, a ludzie nie ufają obcym w internecie. Pomysł: platforma tylko dla Twojego miasta, tylko zweryfikowani sąsiedzi, z systemem budowania zaufania.

Ale żeby ludzie zaczęli ufać platformie, najpierw platforma musi zadbać o ich dane. I tu zaczyna się problem.

Trzy prototypy, trzy porażki

Zanim zacząłem „na poważnie”, spędziłem kilka miesięcy na prototypach. Każdy nauczył mnie czegoś innego — głównie czego nie robić.

Prototyp pierwszy: szybki start, brak struktury. Po miesiącu każda zmiana psuła coś innego. Jak w domu bez fundamentów — dach wygląda ładnie, ale ściany się rozjeżdżają.

Prototyp drugi: „bezpieczeństwo dodamy później”. Później nigdy nie przyszło. A kiedy w końcu chciałem dodać porządne zabezpieczenia, okazało się że trzeba przepisać połowę kodu.

Prototyp trzeci: „uporządkujemy jak będzie potrzeba”. Potrzeba pojawiła się po tygodniu, ale bałagan był już tak głęboko wpleciony w kod, że porządkowanie zabrało więcej czasu niż pisanie nowych rzeczy.

Wniosek prosty: fundamenty trzeba zrobić dobrze od początku. Bezpieczeństwa nie da się „dodać później” — tak jak nie da się wstawić fundamentów pod dom, który już stoi.

Tydzień na niewidoczne rzeczy

Sierpień 2025, tydzień pierwszy. Zamiast pisać rejestrację czy stronę główną, poświęcam cały tydzień na rzeczy, których żaden użytkownik nigdy nie zobaczy.

Żeby sąsiadka mogła bezpiecznie podać swój adres komuś, kto zaopiekuje się psem. Żeby hydraulik mógł zostawić numer telefonu bez obaw. Żeby ludzie w małym mieście, gdzie wszyscy się znają, mogli zaufać platformie, że ich dane nie wyciekną.

Platforma będzie przechowywała adresy, telefony, informacje o tym komu ludzie ufają. To dane sąsiadów, nie liczby w bazie. Jeden wyciek — i plotka rozejdzie się po mieście szybciej niż pożar. Koniec platformy.

Warstwy zabezpieczeń platformy
Każde żądanie przechodzi przez kilka warstw ochrony — niewidocznych dla użytkownika.

Dlatego zbudowałem zabezpieczenia zgodne ze standardami, które stosują banki i duże serwisy. Ochrona przed typowymi atakami, szyfrowanie danych, anonimizacja informacji osobowych. Zgodność z RODO od pierwszego dnia — bo platforma działająca w Polsce nie może sobie pozwolić na „kiedyś to ogarnę”.

Oprócz bezpieczeństwa uporządkowałem strukturę kodu i wprowadziłem coś, co większość startupów pomija: zapisuję każdą ważną decyzję. Jaki był problem, jakie miałem opcje, co wybrałem i dlaczego, czym ryzykuję.

Dylemat: czy to nie strata czasu?

Tydzień na fundamenty to dużo. Mógłbym w tym czasie zrobić działający prototyp z rejestracją, logowaniem i listą ogłoszeń. Coś do pokazania.

Ale byłem tu już trzy razy. Za każdym razem „szybki prototyp” kończył się tak samo — po miesiącu trzeba przepisywać od zera.

Znajomy prowadzący mały sklep internetowy powiedział mi kiedyś: „Pół roku po starcie musieliśmy zamknąć na dwa tygodnie żeby dodać RODO. Straciliśmy klientów i nerwy. Gdybym zrobił to od początku, nikt by nie zauważył”. To zdanie siedzi mi w głowie od tamtej pory.

Niewidoczny tydzień

Siedzę w niedzielę wieczorem i patrzę na to, co zrobiłem. Nie ma co pokazać. Nie ma ekranu z listą ogłoszeń, nie ma formularza rejestracji z ładnym designem.

Jest za to coś, czego nie widać. Sąsiadka, która za kilka miesięcy poda swój adres na platformie, nie będzie wiedziała, że jej dane przechodzą przez kilka warstw ochrony. I o to chodzi — bezpieczeństwo działa najlepiej, kiedy nikt go nie zauważa.

Starachowice, 10 sierpnia 2025

Jak to działa od środka (dla ciekawych)

Kod zorganizowany wokół biznesu, nie technologii

Wybrałem podejście zwane Domain-Driven Design (DDD). Zamiast organizować kod według technologii, organizuję go według tego, co aplikacja robi z perspektywy użytkownika.

  • Reguły biznesowe żyją w jednym miejscu. Każda reguła zapisana raz, w jednym pliku. Zmieniam regułę — w jednym miejscu i działa wszędzie.
  • Konteksty są od siebie oddzielone. Mogę zmienić sposób logowania bez ryzyka, że zepsuję marketplace.
  • Zapis i odczyt danych są rozdzielone. Rejestracja musi być bezpieczna, podgląd profilu musi być szybki.

Bezpieczeństwo — kilka warstw, nie jedna

  • Ochrona przed atakami z zewnątrz. Każde żądanie przechodzi przez filtr blokujący typowe ataki — standard stosowany przez banki.
  • Hasła nigdy nie są przechowywane w oryginalnej formie. Przechodzą przez hashowanie — proces jednokierunkowy, jak mielenie kawy.
  • Dane osobowe są anonimizowane w logach. Email „jan@example.com” w logu wygląda jak „j***@e***.com”.

Dokumentacja decyzji

Każda istotna decyzja ma swój plik — podejście znane jako Architecture Decision Records: kontekst, opcje, decyzja, konsekwencje.

Narzędzia

  • NestJS — framework do budowy aplikacji serwerowych (TypeScript)
  • PostgreSQL — baza danych sprawdzona w milionach aplikacji
  • PostGIS — rozszerzenie bazy o dane geograficzne

Edytuj stronę

Poprzedni wpis
Od 21 kontekstów do 6: lekcja o over-engineeringu
Następny wpis
Świadoma pauza: zatrzymałem produkt, żeby zbudować bibliotekę