Z jakich warstw składa się aplikacja dla firmy i co robi każda z nich?
Cztery warstwy: front (to, co widzi użytkownik), logika po stronie serwera w funkcjach brzegowych, jedna baza Postgres z politykami dostępu i logowaniem, usługi zewnętrzne — płatności, poczta, SMS, modele AI. Do kilku tysięcy kont ten układ wystarcza. Piątą warstwę, kolejkę albo cache, dokłada się po pomiarze, nie na zapas.
Cztery warstwy — co robi każda z nich?
Aplikacja dla firmy w pierwszej wersji ma cztery warstwy, nie kilkanaście modułów. Front, czyli to, co widzi użytkownik. Logika po stronie serwera w funkcjach brzegowych. Jedna baza Postgres z politykami dostępu na poziomie wierszy. Usługi zewnętrzne: płatności, poczta, SMS, modele AI.
Front to strony sprzedażowe, panel klienta i panel administratora. Pierwsza wersja zawiera zwykle logowanie i konta, jedną funkcję główną oraz jedną albo dwie wspierające, płatności, stronę zapisu pod markę klienta, automatyzacje i statystyki. Front niczego nie rozstrzyga o pieniądzach — pokazuje dane i przyjmuje decyzje użytkownika.
Druga warstwa to logika po stronie serwera, u nas w postaci funkcji brzegowych: odbiór powiadomień od operatora płatności, integracje, wysyłki, zadania cykliczne. Tam zostają klucze do usług, których nie wolno pokazywać w przeglądarce. Konfigurację produkcyjną trzymamy w ustawieniach dostawcy, nigdy w repozytorium kodu.
Trzecia warstwa to jedna baza Postgres z politykami dostępu na poziomie wierszy i wbudowanym logowaniem użytkowników. Baza rozstrzyga, kto które wiersze widzi — nie front i nie kod ekranu. To jedyne miejsce, w którym uprawnienia da się wyegzekwować.
Ma to konsekwencję, która zaskakuje przy pierwszej dłuższej liście. Domyślne ustawienie api.max_rows w konfiguracji Supabase to 1 000 wierszy (dokumentacja, odczyt 31 sierpnia 2026), a sam PostgREST nie ogranicza niczego — jego db-max-rows ma domyślnie wartość nieskończoną. Limit stawia dostawca, więc pobranie „wszystkich” rekordów cicho się ucina.
Czwarta warstwa to usługi, których nie ma sensu pisać samodzielnie: operator płatności, poczta transakcyjna, bramka SMS, modele AI przez API. Obowiązuje przy nich zasada, od której nie robimy wyjątków: powiadomienie od operatora płatności jest jedynym źródłem prawdy o wpłacie. Kwota i status zapisują się z tego powiadomienia, nie z przekierowania po zapłacie.
Podział na te cztery warstwy nie jest teorią z diagramu: tak zbudowanych jest kilkanaście aplikacji i serwisów, które utrzymujemy na co dzień. Skala, przy której ten układ się broni, to setki kont w aplikacji B2B i tysiące wizyt miesięcznie na serwis (stan: sierpień 2026).
| Warstwa | Co robi | Typowy wybór | Limit albo cena (odczyt 31.08.2026) | Co się psuje, gdy tego brak |
|---|---|---|---|---|
| Front: strony, panel klienta, panel administratora | pokazuje dane, przyjmuje decyzje użytkownika; nie rozstrzyga o pieniądzach | build statyczny na hostingu z CDN (Vercel) | Hobby: 100 GB transferu miesięcznie, tylko użytek niekomercyjny; Pro: 20 USD miesięcznie za użytkownika, 1 TB | bez panelu administratora obsługa poprawia dane ręcznie w bazie — bez śladu, kto i kiedy |
| Logika po stronie serwera: funkcje brzegowe | webhooki płatności, integracje, wysyłki, zadania cykliczne | funkcje brzegowe u dostawcy bazy (Supabase) | plan darmowy: 500 000 wywołań miesięcznie; Pro: 2 mln, potem 2 USD za 1 mln | klucze do usług trafiają do przeglądarki, a wpłata „zalicza się” z przekierowania zamiast z powiadomienia operatora |
| Baza danych z politykami dostępu i logowaniem | trzyma dane i rozstrzyga, kto które wiersze widzi | jeden Postgres z politykami na wiersze (Supabase) | plan darmowy: 500 MB bazy, 1 GB plików, 5 GB transferu wychodzącego, 50 000 aktywnych użytkowników, projekt pauzowany po tygodniu bez ruchu; Pro od 25 USD miesięcznie | każdy zalogowany widzi cudze dane; lista „wszystkiego” ucina się po 1 000 wierszy bez komunikatu |
| Usługi zewnętrzne: płatności, poczta, SMS, AI | przyjmują pieniądze i dowożą wiadomości | Stripe, Resend, bramka SMS, modele przez API | Stripe w Polsce: 1,5% + 1,00 zł od kart z EOG, 1,6% + 1,00 zł za BLIK; Resend w planie darmowym: 3 000 e-maili miesięcznie i 100 dziennie | wpłaty sprawdzane ręcznie w bankowości, a powiadomienia wysyłane z firmowej skrzynki lądują w spamie |
Dlaczego jedna baza, a nie kilka osobnych usług?
Bo do skali tysięcy kont rozdzielenie kosztuje więcej, niż daje. Jedna baza to jedna kopia zapasowa, jeden model uprawnień i jedno miejsce, w którym sprawdza się spójność danych. Każda kolejna usługa z własnym magazynem dokłada pracę, której nie widać w wycenie: synchronizację i rozjazd stanów.
Alternatywy wyglądają rozsądnie na diagramie. Osobna baza dla rozliczeń, osobna dla katalogu, integrator sklejający całość. W praktyce to trzy zestawy uprawnień, trzy kopie do testowania i pytanie, która wersja rekordu jest prawdziwa, gdy dwie usługi zapiszą go w tej samej sekundzie.
Kiedy zmienić tę decyzję? Gdy pomiar pokazuje, że baza czeka na zasoby, a nie na sieć, albo gdy nad aplikacją pracuje tyle osób, że blokują sobie nawzajem zmiany w schemacie. Jedno i drugie widać w liczbach, zanim stanie się awarią.
Jedna baza ma jeszcze jedną zaletę, o której łatwo zapomnieć przy rysowaniu architektury: kopia zapasowa jest jedna i da się ją odtworzyć w całości. Kopie sprawdzamy odtworzeniem, nie obecnością pliku.
Co zmienia skala: 10, 1 000 i 10 000 użytkowników?
Zmienia trzy rzeczy, w innej kolejności, niż podpowiada intuicja. Z darmowych planów pierwsza wychodzi zwykle nie baza, tylko poczta. A pierwszą przeszkodą bywa regulamin hostingu, nie jego limity techniczne.
Przy dziesięciu kontach pilotażowych limity są bez znaczenia. Znaczenie ma zapis, który firmy pomijają: plan Hobby w Vercel jest zastrzeżony do użytku niekomercyjnego, a każde zastosowanie komercyjne wymaga planu Pro albo Enterprise (wytyczne fair use, odczyt 31 sierpnia 2026). Aplikacja, która przyjmuje płatności, jest zastosowaniem komercyjnym od pierwszego dnia.
Przy tysiącu kont kończy się poczta. Darmowy plan Resend to 3 000 wiadomości miesięcznie i 100 dziennie (cennik, odczyt 31 sierpnia 2026). Jedno powiadomienie wysłane do tysiąca kont w ciągu jednego dnia przekracza limit dzienny dziesięciokrotnie.
Rozmiaru bazy nie szacujemy z liczby kont. 500 MB w darmowym planie Supabase to limit rozmiaru bazy, a nie obietnica, że zmieści się w nim tysiąc firm z historią. Tę wartość odczytuje się z panelu dostawcy w konkretnej aplikacji i dopiero wtedy planuje plan płatny.
Przy dziesięciu tysiącach kont zaczyna się rachunek za nadwyżki. Plan Pro Supabase kosztuje od 25 USD miesięcznie i zawiera 8 GB dysku (potem 0,125 USD za GB), 250 GB transferu wychodzącego (potem 0,09 USD za GB) oraz 100 000 aktywnych użytkowników miesięcznie (cennik, odczyt 31 sierpnia 2026).
Dopiero w tym miejscu pomiar może uzasadnić piątą warstwę: kolejkę zadań albo cache. Wcześniej jedna baza z sensownymi indeksami i jawnym stronicowaniem obsługuje ten ruch. Ile taka aplikacja kosztuje w rachunku trzyletnim, liczy inny serwis: ile realnie kosztuje aplikacja w trzy lata.
| Skala | Co się zmienia w warstwach | Próg z cennika albo regulaminu (odczyt 31.08.2026) |
|---|---|---|
| 10 kont — pilot | nie dokładasz niczego; decyduje regulamin hostingu, nie jego limity | Vercel: plan Hobby zastrzeżony do użytku niekomercyjnego, komercja wymaga Pro (20 USD miesięcznie za użytkownika) |
| 1 000 kont | z darmowego planu wychodzi poczta; baza i front bez zmian | Resend: 3 000 e-maili miesięcznie i 100 dziennie w planie darmowym, Pro od 20 USD miesięcznie |
| 10 000 kont | płatny plan bazy i nadwyżki liczone za GB; tu pomiar może uzasadnić kolejkę albo cache | Supabase Pro: od 25 USD miesięcznie, 8 GB dysku (potem 0,125 USD za GB), 250 GB transferu wychodzącego (potem 0,09 USD za GB), 100 000 aktywnych użytkowników |
Czego w pierwszej wersji nie budujemy?
Pięciu rzeczy, z których każda wygląda na „zróbmy od razu”, a każda dokłada warstwę do utrzymania i drugie miejsce, w którym coś może zniknąć.
- Kolejki zadań — dopóki wysyłki mieszczą się w czasie działania funkcji, kolejka dokłada tylko drugi magazyn stanu.
- Cache — to drugie źródło prawdy. Wchodzi, gdy pomiar wskaże zapytanie, które realnie boli; wcześniej ukrywa błędy w zapytaniach.
- Mikroserwisy — dzielą jeden problem na kilka, a każdy dostaje własne uprawnienia, własne wdrożenie i własną kopię zapasową.
- Własny serwer poczty — dostarczalność zależy od reputacji adresu IP i konfiguracji domeny; to praca na lata, nie na tydzień.
- Własne logowanie — reset hasła, blokady, drugi składnik, sesje. Mechanizm wbudowany w bazę robi to samo i jest sprawdzony szerzej niż jakikolwiek kod pisany na jeden projekt.
Płatności są osobnym przypadkiem: nie budujemy ich sami, ale też nie odkładamy na koniec. Testujemy je w trybie testowym operatora i sprawdzamy, co zapisało powiadomienie o wpłacie, zanim aplikacja zacznie przyjmować pieniądze. Który operator ma sens w pierwszej wersji, rozstrzyga porównanie płatności w MVP.
Po czym poznać, że warstwy są ustawione dobrze?
Pięć pytań, które właściciel firmy może zadać bez znajomości kodu. Odpowiedź „sprawdzimy” na którekolwiek z nich znaczy, że warstwa nie jest gotowa.
- Czy wpłata zapisuje się z powiadomienia operatora, a nie z powrotu użytkownika na stronę?
- Czy po wylogowaniu link do rekordu innego użytkownika przestaje działać?
- Czy listy w panelu mają jawne stronicowanie, czy ucinają się po 1 000 wierszy bez komunikatu?
- Kiedy odtworzono kopię zapasową po raz ostatni i ile to trwało?
- Czy klucze do usług zewnętrznych są w ustawieniach dostawcy, a nie w repozytorium kodu?
Wszystkie pięć pytań dotyczy styków między warstwami. Najdroższe awarie nie zdarzają się w środku warstwy, tylko na granicy: front zalicza płatność, której baza nie widzi, funkcja wysyła wiadomość, którą operator odrzucił. Co z tego wynika dla zabezpieczeń, zbieramy w dziale Jak nie zgubić danych i pieniędzy.
Jak zrobić aplikację prowadzi zespół tomekniedzwiecki.pl. Jeśli chcesz sprawdzić własny pomysł na aplikację: pierwszy krok jest bezpłatny — rozmowa z agentem AI, po której masz kartę projektu, pierwsze ekrany, badanie rynku i wstępny plan przychodu; bez karty płatniczej i bez zobowiązań.
Budowę wyceniamy zawsze indywidualnie (cena zamknięta, płatna przy zawarciu umowy), a po starcie rozliczamy się 10% od przychodu netto aplikacji — zamiast udziałów w firmie, tylko za miesiące z przychodem, do wykupu. Sprawdź swój pomysł za darmo: tomekniedzwiecki.pl.
Najczęstsze pytania
Czy do aplikacji dla firmy potrzebuję własnego serwera?
W pierwszej wersji zwykle nie. Front stoi jako build statyczny na hostingu z siecią CDN, logika mieści się w funkcjach brzegowych, a baza działa jako usługa. Własny serwer dokłada system operacyjny do aktualizowania, monitoring i dyżur przy awarii. Sens ma tam, gdzie wymaga tego prawo albo integracja z urządzeniem w siedzibie firmy.
Czym różni się funkcja brzegowa od zwykłego serwera?
Funkcja uruchamia się na żądanie i kończy po wykonaniu zadania, więc płaci się za wywołania, a nie za czas czuwania — w planie darmowym Supabase mieści się 500 000 wywołań miesięcznie (cennik, odczyt 31 sierpnia 2026). Nie trzyma stanu między wywołaniami i ma ograniczony czas działania, dlatego długie zadania trzeba dzielić albo przenieść do kolejki.
Czy trzymanie wszystkiego w jednej bazie to ryzyko?
Ryzykiem jest kopia zapasowa, której nikt nie odtworzył, a nie liczba baz. Jedna baza upraszcza odtworzenie: jeden punkt w czasie, jedna procedura, jeden model uprawnień. Warunek jest taki sam niezależnie od architektury — kopie testuje się odtworzeniem, a czas i punkt odtworzenia zapisuje się, zanim będą potrzebne.
Czy darmowe plany wystarczą na start aplikacji firmowej?
Technicznie często tak, formalnie nie. Plan Hobby w Vercel jest zastrzeżony do użytku niekomercyjnego, a każde zastosowanie komercyjne wymaga planu Pro albo Enterprise (wytyczne fair use, odczyt 31 sierpnia 2026). Projekt w darmowym planie Supabase zostaje wstrzymany po tygodniu bez ruchu (cennik, odczyt 31 sierpnia 2026), co przy aplikacji z prawdziwymi klientami jest awarią, nie oszczędnością.
Ile warstw ma sklep internetowy?
Sklepami internetowymi w tym serwisie się nie zajmujemy — to inna kategoria oprogramowania, z gotowymi platformami i własnymi regułami. Opisany tu podział dotyczy aplikacji dla firm: paneli, systemów obsługi zleceń, rezerwacji, rozliczeń i pracy zespołu.
Źródła
- Supabase — Pricing (limity planów Free i Pro) — https://supabase.com/pricing (odczyt 31.08.2026)
- Supabase — CLI configuration, ustawienie api.max_rows (domyślnie 1 000) — https://supabase.com/docs/guides/local-development/cli/config (odczyt 31.08.2026)
- PostgREST — Configuration, db-max-rows (domyślnie bez limitu) — https://docs.postgrest.org/en/v12/references/configuration.html (odczyt 31.08.2026)
- Vercel — Pricing (Hobby: 100 GB Fast Data Transfer; Pro: 20 USD miesięcznie za użytkownika, 1 TB) — https://vercel.com/pricing (odczyt 31.08.2026)
- Vercel — Fair Use Guidelines, sekcja Commercial usage — https://vercel.com/docs/limits/fair-use-guidelines (aktualizacja strony 29.07.2026, odczyt 31.08.2026)
- Vercel — Limits (limity ogólne planów Hobby i Pro) — https://vercel.com/docs/limits (aktualizacja strony 25.08.2026, odczyt 31.08.2026)
- Resend — Pricing (plan darmowy: 3 000 e-maili miesięcznie, 100 dziennie) — https://resend.com/pricing (odczyt 31.08.2026)
- Stripe — cennik dla Polski (karty z EOG, BLIK) — https://stripe.com/pl/pricing (odczyt 31.08.2026)
- Zasady odbioru, gwarancji i rozruchu w naszych wdrożeniach — praktyka zespołu — https://jakzrobicaplikacje.pl/o-serwisie/#skad (2026-08-31)
Tekst przygotował Agent AI Tomka Niedźwieckiego — treść wygenerowana przez sztuczną inteligencję na podstawie własnych wdrożeń zespołu, dokumentacji dostawców i źródeł podanych wyżej, sprawdzona w osobnym przebiegu weryfikacji faktów i zredagowana. Za fakty odpowiada Tomek Niedźwiecki. Ostatnia weryfikacja: 31 sierpnia 2026.