Wszystkie wpisy

Better-T-Stack kontra płatny starter SaaS: uczciwie rozpisany rachunek

Darmowe CLI generuje stack. Płatny starter generuje produkt. To dwie różne roboty, a mylenie ich to najdroższy błąd w tej kategorii. Oto rachunek, pozycja po pozycji, wraz z uczciwą rekomendacją, żeby użyć tego darmowego.

Piotr J. Borowiecki10 min czytaniacomparison, boilerplate, architecture, typescript

Czym jest ten artykuł

Uczciwe porównanie darmowego narzędzia z płatnym, napisane przez osobę, która sprzedaje to płatne. Zawiera:

  1. Czym jest Better-T-Stack, zacytowane z jego własnego README, a nie scharakteryzowane.
  2. Różnicę między generowaniem stacku a generowaniem produktu.
  3. Rozpisany rachunek: co budujesz, gdy generator skończy, z szacunkami godzin i uzasadnieniem.
  4. Część, która nie jest godzinami, czyli powód istnienia całej tej kategorii.
  5. Kiedy Better-T-Stack jest właściwą odpowiedzią, powiedziane na początku i całkiem serio.

Ostatnia aktualizacja: 15 sierpnia 2026. Każde twierdzenie o Better-T-Stack pochodzi z jego README, strony oraz publicznych danych GitHuba i npm, wszystko z linkami na dole.

Zacznijmy stąd: jest bardzo dobry i prawdopodobnie powinieneś go użyć

Better-T-Stack to CLI do generowania bezpiecznie typowanych projektów TypeScript od końca do końca. Jest na licencji MIT, jego README obiecuje „free and open source: forever", ma 5636 gwiazdek na GitHubie i jest pobierany około 2476 razy tygodniowo z npm.

Macierz opcji jest najlepsza w ekosystemie i nie jest to bliski wyścig:

WarstwaCo oferuje
FrontendReact z TanStack Router, React Router albo TanStack Start, Next.js, Nuxt, Svelte, Solid, Astro, React Native albo nic
BackendHono, Express, Fastify, Elysia, samodzielna aplikacja fullstack, Convex albo nic
APItRPC, oRPC albo nic
ŚrodowiskoBun, Node.js, Cloudflare Workers
Baza danychSQLite, PostgreSQL, MySQL, MongoDB albo nic
ORMDrizzle, Prisma, Mongoose albo nic
AuthBetter Auth albo Clerk, opcjonalnie
Konfiguracja bazyTurso, Neon, Supabase, Prisma Postgres, MongoDB Atlas, Cloudflare D1, Docker
DodatkiTurborepo, Nx, PWA, Tauri, Electrobun, Biome, Lefthook, Husky, Starlight, Fumadocs, Ultracite, Oxlint, MCP, OpenTUI, WXT, Skills
PrzykładyTodo, AI

Doprowadzenie tylu kombinacji do projektu, który faktycznie przechodzi typowanie i się uruchamia, to naprawdę trudna inżynieria. Do tego całość jest wydana jako plugin do Claude Code z serwerem MCP, więc agent może zaplanować i wygenerować poprawny stack zamiast klepać boilerplate z ręki, co jest przemyślaną robotą.

Jeśli budujesz prototyp, narzędzie wewnętrzne, projekt do portfolio, aplikację, która nie jest SaaS-em, albo cokolwiek, przy czym chcesz nauczyć się hydrauliki, przestań czytać i uruchom bun create better-t-stack@latest. Jest darmowy, jest doskonały i nic poniżej nie argumentuje przeciwko niemu.

Reszta jest dla jednego konkretnego czytelnika: kogoś, kto próbuje zdecydować, czy darmowe CLI wystarczy do SaaS-a, za którego zamierza brać pieniądze.

Stack to nie produkt

README Better-T-Stack podaje swoją filozofię w czterech liniach, a druga z nich jest całym tym porównaniem:

Roll your own stack: you pick only the parts you need, nothing extra. Minimal templates: bare-bones scaffolds with zero bloat. Latest dependencies: always use current, stable versions by default. Free and open source: forever.

To nie jest ukrywane ograniczenie. To projekt, powiedziany wprost, i produkt dostarcza dokładnie to, co obiecuje. Dowód jest w ostatnim wierszu tabeli powyżej: dostarczane przykłady to Todo i AI. Lista zadań i czat. To kanoniczne demonstracje tego, że okablowanie działa, i są to właściwe przykłady dla narzędzia, którego robotą jest okablowanie.

Więc uczciwe ujęcie to nie „darmowe narzędzie, któremu brakuje funkcji". To:

Better-T-Stack generuje stack. Starter SaaS generuje produkt.

Oba są generatorami. Zatrzymują się na różnych liniach. Better-T-Stack zatrzymuje się, gdy frontend może wywołać backend, a backend sięgnąć do bazy, bezpiecznie typowo, przy dziewięciu frontendach i sześciu backendach do wyboru. To broniona linia i większość generatorów powinna zatrzymywać się właśnie tam.

Starter SaaS zatrzymuje się gdzie indziej: gdy człowiek może się zarejestrować, dołączyć do organizacji, dostać rolę, być obciążanym co miesiąc, dostać o tym maila i zostać obejrzanym przez Ciebie w panelu administracyjnym, gdy napisze zdezorientowany. Wszystko między tymi dwiema liniami to rachunek.

Rozpisany rachunek

Oto, co leży między bun create better-t-stack@latest a produktem, za który możesz brać pieniądze. Szacunki zakładają kompetentnego programistę budującego każdą pozycję na poziomie, który pokazałby płacącej firmie, i nie obejmują czasu spędzonego na decydowaniu, jak to zrobić, który dla kilku wierszy jest większy niż sama implementacja.

PozycjaBetter-T-StackCo „gotowe" naprawdę znaczyGodziny
Typowane okablowanie stackuTakFrontend, API, środowisko, baza i ORM zgadzające się na poziomie typów0
Skonfigurowana biblioteka authOpcjonalnieBetter Auth albo Clerk: logowanie, wylogowanie, sesje0
Organizacje i zaproszeniaNieSchemat, tokeny, wygasanie, liczenie stanowisk, przekazanie własności, przypadek odejścia25 do 40
Role i uprawnieniaNieWarstwa polityk konsultowana przez każde zapytanie i trasę, plus UI, które ją odbija20 do 30
Izolacja wielonajemcowaNieWymuszona na warstwie zapytań, nie widoku, i przetestowana wobec drugiego najemcy15 do 25
RozliczeniaNieNie checkout. Proraty, zmiany planu, dunning, faktury, idempotentne webhooki, uzgadnianie25 do 40
Maile transakcyjneNieSzablony, podglądy, teksty per lokalizacja, dostarczalność, wypisy, zgodność15 do 25
Panel administracyjnyNieDziesięć sekcji, których nikt nie widzi, a bez których nie da się działać40 do 60
Biblioteka komponentówNieDostępne, otematyzowane, przetestowane i Twoje do edycji, a nie zamknięte w paczce30 do 50
InternacjonalizacjaNieNie tłumaczenie. Routing, formatery, liczba mnoga i kontrola parzystości kluczy wywalająca build20 do 35
Testy z bramkąNieTesty, fikstury, CI i dyscyplina niemergowania na czerwono60 do 100
Przykładowy sklep albo kursNieDziałająca implementacja referencyjna tego, co sprzedajesz, z danymi startowymi30 do 60
Razem280 do 465

Przy 150 dolarach za godzinę daje to 42 000 do 69 750 dolarów. Podstaw własną stawkę, a liczba się zmieni, ale wniosek nie. Wobec ceny jednorazowej 249 dolarów porównanie nie jest bliskie dla nikogo, czyj czas ma cenę.

Ale godziny to nudny argument, a wolę postawić ten ciekawy.

Część, która nie jest godzinami

Spójrz na cztery wiersze tej tabeli: izolacja wielonajemcowa, role i uprawnienia, idempotencja webhooków i unieważnianie sesji.

Łączy je cecha, której nie ma żaden inny wiersz. Błędna implementacja przechodzi recenzję, działa w środowisku deweloperskim i poprawnie wygląda na demie.

Filtr najemcy nałożony w warstwie widoku zamiast w zapytaniu działa doskonale przy jednym najemcy. Działa doskonale w Twoich testach, bo Twoje fikstury mają jednego najemcę. Psuje się w dniu, w którym dane drugiego klienta pojawiają się w panelu pierwszego, a to nie jest zgłoszenie błędu, tylko telefon.

Obsługa webhooka bez klucza idempotencji działa za każdym razem, gdy ją testujesz, bo nigdy nie wysyłasz tego samego zdarzenia dwa razy. Stripe wysyła, przy ponowieniu, i wtedy ktoś został obciążony dwa razy albo dostał plan dwa razy.

Sprawdzenie uprawnień czytające rolę z sesji zamiast z bazy działa, dopóki ktoś nie zostanie zdegradowany i nie zachowa starej sesji.

To nie są trudne problemy. To problemy, w których bycie w błędzie jest niewidoczne, dopóki nie zrobi się drogie, a to zupełnie inny profil ryzyka niż „to zajmie 40 godzin". Nie wykupisz się z nich większą liczbą godzin, bo nie wiesz, że ich potrzebujesz. Unikasz ich, startując z fundamentu, w którym ktoś popełnił już ten błąd i go naprawił, i gdzie istnieje teraz test, który wywala się, jeśli błąd wróci.

To, a nie liczba godzin, jest tym, do czego naprawdę służy płatny starter.

Jak wygląda konkretnie strona płatna

Żeby być konkretnym zamiast abstrakcyjnym, oto co znaczy „już rozwiązane" w tej bazie kodu, z liczbami odczytanymi z przebiegu testów, a nie wpisanymi do pliku marketingowego.

Bramka pokrycia, a nie plakietka pokrycia. 141 plików testowych, 472 testy i cztery progi w konfiguracji:

coverage: {
  thresholds: { branches: 100, functions: 100, lines: 100, statements: 100 },
}

Gałęzie błędów z poprzedniej sekcji to dokładnie to, co bramka pokrycia gałęzi na 100 zmusza Cię przetestować. To jest mechanizm, a nie liczba.

Architektura, z którą zgadza się kompilator. Trzy reguły lintera czynią granice modułów wykonywalnymi:

{
  files: ["src/modules/*/domain/**/*.{ts,tsx}"],
  rules: {
    "no-restricted-imports": ["error", { patterns: [{
      group: ["react", "react/**", "next", "next/**", "drizzle-orm", "drizzle-orm/**",
              "~/src/app/**", "~/src/presentation/**", "~/src/platform/**",
              "~/src/integrations/**", "~/src/modules/*/infrastructure/**"],
      message: "Domain may only import shared-kernel domain and same-context domain code.",
    }] }],
  },
}

Nie możesz wstawić zapytania do bazy w komponencie Reacta. Build się wywala i mówi dlaczego.

Ścisłość bez furtki. strict, plus exactOptionalPropertyTypes, noUncheckedIndexedAccess, noPropertyAccessFromIndexSignature i verbatimModuleSyntax. typescript/no-explicit-any jest błędem, a linter działa z denyWarnings: true, więc nie ma ostrzeżenia, które można nauczyć się ignorować.

Funkcje opcjonalne, a nie sztywny szablon. Konfigurator zadaje dwanaście pytań i oferuje cztery dodatki: sklep z przykładowymi produktami, kurs w subskrypcji, wizualny kreator stron i wizualny edytor wpisów. Włączenie jednego dodaje moduł. Pozostawienie wyłączonym znaczy, że tego kodu nie ma w Twoim repozytorium.

Nic z tego nie jest krytyką Better-T-Stack. To opis tego, gdzie oba produkty się zatrzymują.

Kiedy Better-T-Stack jest właściwą odpowiedzią

Powiedziane porządnie, bo porównanie, które zawsze rekomenduje opcję płatną, jest reklamą, a nie porównaniem.

Użyj Better-T-Stack, jeśli:

  • Prototypujesz, a ta rzecz może za miesiąc nie istnieć.
  • Uczysz się, a hydraulika jest sensem. Zbudowanie auth raz to naprawdę wartościowa edukacja i nikogo nie należy z tego odwodzić.
  • Twój produkt nie jest SaaS-em. Bez organizacji, bez subskrypcji, bez panelu. Narzędzie, gra, wewnętrzny dashboard, strona kliencka.
  • Masz już wewnętrzną bibliotekę na te nudne trzy czwarte, co wiele agencji i doświadczonych zespołów ma.
  • Twój stack jest poza tym, co oferuje jakikolwiek płatny starter. Nuxt, Svelte, Solid, Astro, React Native, Convex, tRPC. Better-T-Stack obsługuje je wszystkie, a żaden płatny starter nie obsługuje większości z nich.
  • Twój budżet naprawdę wynosi zero. To uzasadnione ograniczenie i nie ma w tym wstydu. Better-T-Stack jest lepszą darmową opcją niż darmowy plan któregokolwiek płatnego produktu.

Rozważ zapłacenie, jeśli:

  • Budujesz jeden produkt, za który zamierzasz brać pieniądze od firm, ze stanowiskami, rolami, fakturami i ankietą bezpieczeństwa w przyszłości.
  • Zbudowałeś już raz organizacje i płatności i pamiętasz dokładnie, ile trwały te nudne części.
  • Chcesz bramkę testową, której nie musiałeś pisać, bo napisanie zestawu pokrycia od zera to pozycja, do której nikt nigdy nie dochodzi.
  • Chcesz granice architektury egzekwowane, a nie zamierzone.
  • Twój czas ma cenę, a 280 do 465 godzin kosztuje więcej niż kilkaset dolarów.

Tak naprawdę nie są konkurentami

Najbardziej użyteczna rzecz, jaką mogę Ci powiedzieć, brzmi: to nie jest wyścig dwóch koni.

Better-T-Stack to generator do dowolnego projektu TypeScript, przez dziewięć frontendów i sześć backendów. Starter SaaS to fundament pod jeden rodzaj biznesu. Nakładają się na dziesięć minut na starcie, gdy oba zapisują projekt. Potem robią różne rzeczy.

Błąd, którego trzeba uniknąć, to nie „wybranie darmowego". To wybranie któregokolwiek z nich bez wiedzy, którą z dwóch robót trzeba było zrobić. Założyciel, który wygeneruje piękny, bezpiecznie typowany stack, a potem spędzi pół roku budując organizacje i płatności, nie zaoszczędził pieniędzy. Zapłacił rachunek w walucie, która nie pojawia się na fakturze.

Powiązane teksty

Sprawdź, zanim zapłacisz

Najpierw uruchom ten darmowy. Potem, jeśli rachunek powyżej jest rachunkiem, którego wolałbyś nie płacić, dokumentacja jest publiczna, a konfigurator działa na żywo na stronie głównej. Każda liczba tutaj pochodzi z zestawu testów, a nie z pliku marketingowego. Zobacz cenę: jedna płatność od 249 dolarów, nieograniczone projekty, dożywotnie aktualizacje rdzenia, bez opłat od użytkownika.

Najczęstsze pytania

Źródła

Napisał Piotr J. Borowiecki, który buduje SaaSy Land i ma w związku z tym oczywisty interes w tym porównaniu. Dane o Better-T-Stack odczytano z jego publicznego repozytorium i npm 15 sierpnia 2026. Rekomendacja użycia go do prototypów, projektów edukacyjnych i pracy poza SaaS-em jest dosłowna.

Udostępnij