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.

Czym jest ten artykuł
Uczciwe porównanie darmowego narzędzia z płatnym, napisane przez osobę, która sprzedaje to płatne. Zawiera:
- Czym jest Better-T-Stack, zacytowane z jego własnego README, a nie scharakteryzowane.
- Różnicę między generowaniem stacku a generowaniem produktu.
- Rozpisany rachunek: co budujesz, gdy generator skończy, z szacunkami godzin i uzasadnieniem.
- Część, która nie jest godzinami, czyli powód istnienia całej tej kategorii.
- 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:
| Warstwa | Co oferuje |
|---|---|
| Frontend | React z TanStack Router, React Router albo TanStack Start, Next.js, Nuxt, Svelte, Solid, Astro, React Native albo nic |
| Backend | Hono, Express, Fastify, Elysia, samodzielna aplikacja fullstack, Convex albo nic |
| API | tRPC, oRPC albo nic |
| Środowisko | Bun, Node.js, Cloudflare Workers |
| Baza danych | SQLite, PostgreSQL, MySQL, MongoDB albo nic |
| ORM | Drizzle, Prisma, Mongoose albo nic |
| Auth | Better Auth albo Clerk, opcjonalnie |
| Konfiguracja bazy | Turso, Neon, Supabase, Prisma Postgres, MongoDB Atlas, Cloudflare D1, Docker |
| Dodatki | Turborepo, Nx, PWA, Tauri, Electrobun, Biome, Lefthook, Husky, Starlight, Fumadocs, Ultracite, Oxlint, MCP, OpenTUI, WXT, Skills |
| Przykłady | Todo, 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.
| Pozycja | Better-T-Stack | Co „gotowe" naprawdę znaczy | Godziny |
|---|---|---|---|
| Typowane okablowanie stacku | Tak | Frontend, API, środowisko, baza i ORM zgadzające się na poziomie typów | 0 |
| Skonfigurowana biblioteka auth | Opcjonalnie | Better Auth albo Clerk: logowanie, wylogowanie, sesje | 0 |
| Organizacje i zaproszenia | Nie | Schemat, tokeny, wygasanie, liczenie stanowisk, przekazanie własności, przypadek odejścia | 25 do 40 |
| Role i uprawnienia | Nie | Warstwa polityk konsultowana przez każde zapytanie i trasę, plus UI, które ją odbija | 20 do 30 |
| Izolacja wielonajemcowa | Nie | Wymuszona na warstwie zapytań, nie widoku, i przetestowana wobec drugiego najemcy | 15 do 25 |
| Rozliczenia | Nie | Nie checkout. Proraty, zmiany planu, dunning, faktury, idempotentne webhooki, uzgadnianie | 25 do 40 |
| Maile transakcyjne | Nie | Szablony, podglądy, teksty per lokalizacja, dostarczalność, wypisy, zgodność | 15 do 25 |
| Panel administracyjny | Nie | Dziesięć sekcji, których nikt nie widzi, a bez których nie da się działać | 40 do 60 |
| Biblioteka komponentów | Nie | Dostępne, otematyzowane, przetestowane i Twoje do edycji, a nie zamknięte w paczce | 30 do 50 |
| Internacjonalizacja | Nie | Nie tłumaczenie. Routing, formatery, liczba mnoga i kontrola parzystości kluczy wywalająca build | 20 do 35 |
| Testy z bramką | Nie | Testy, fikstury, CI i dyscyplina niemergowania na czerwono | 60 do 100 |
| Przykładowy sklep albo kurs | Nie | Działająca implementacja referencyjna tego, co sprzedajesz, z danymi startowymi | 30 do 60 |
| Razem | 280 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
Alternatywa dla ShipFast
Drugi koniec rynku: ile kosztuje w godzinie 300 te 22 zaoszczędzone godziny.
Supastarter kontra SaaSy Land
Najbliższy płatny konkurent, porównany na decyzji zapadającej przed pierwszą komendą.
Jak wybrać stack SaaS pod agenty AI
Czteropytaniowy test dla dowolnej zależności, zastosowany warstwa po warstwie do produkcyjnego stacku.
Gotowość repozytorium pod agenty AI
Dlaczego agenty uczą się Twojej architektury z tego, co się wywala, a nie z readme.
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
Tak. Jest na licencji MIT, a jego README deklaruje „free and open source: forever". W chwili pisania ma 5636 gwiazdek na GitHubie i około 2476 pobrań tygodniowo z npm. Nic w tym artykule nie argumentuje, że nie powinieneś go używać, a dla sporej części czytelników jest to właściwy wybór.
Stack. Frontend z Reacta, Next.js, Nuxta, Svelte, Solid, Astro albo React Native; backend z Hono, Express, Fastify, Elysii albo Convex; tRPC albo oRPC; Bun, Node albo Cloudflare Workers; SQLite, Postgres, MySQL albo MongoDB; Drizzle, Prismę albo Mongoose; opcjonalnie Better Auth albo Clerk. Spina to poprawnie i bezpiecznie typowo, co jest realną i trudną robotą.
Płatności, maili transakcyjnych, panelu administracyjnego, ról i uprawnień, multi-tenancy, internacjonalizacji, biblioteki komponentów i zestawu testów. Jest to zamierzone, a nie przeoczone: deklarowana filozofia projektu to „minimal templates: bare-bones scaffolds with zero bloat", a jedyne dostarczane przykłady to aplikacja Todo i czat AI.
Tylko jeśli praca, którą usuwa, to praca, którą i tak byś wykonał. Jeśli lubisz budować przepływy auth, albo Twój produkt nie potrzebuje płatności, albo masz już wewnętrzną bibliotekę do tego wszystkiego, darmowe CLI jest ściśle lepsze. Jeśli miałbyś budować organizacje, role, webhooki i panel administracyjny po raz trzeci, kilkaset dolarów wobec 200 i więcej godzin nie jest trudnym wyborem.
Checkout to jedno popołudnie. Rozliczenia to 25 do 40 godzin, bo checkout jest łatwą jedną dziesiątą: reszta to proraty, zmiany planu w górę i w dół, dunning, historia faktur, idempotentna obsługa webhooków i zadanie uzgadniające, które łapie webhook, którego nigdy nie dostałeś. Pierwsza płatność to nie to samo, co umiejętność niezawodnego rozliczania.
Nie w tym samym projekcie w sensowny sposób, bo oba generują fundament, a fundament masz jeden. Pasują do różnych projektów. Wielu programistów używa darmowego generatora do prototypów i narzędzi wewnętrznych, a płatnego fundamentu do produktu, który ma zarabiać. To rozsądny podział, a nie sprzeczność.
Opcjonalnie, jako krok konfiguracyjny: potrafi ustawić Better Auth albo Clerk. Daje Ci to poprawnie skonfigurowane logowanie i wylogowanie. Nie daje Ci organizacji, zaproszeń, liczenia stanowisk, akcji bramkowanych rolami, wymuszonego 2FA, impersonacji dla wsparcia ani unieważniania sesji, a to wszystko są osobne funkcje nadbudowane nad biblioteką.
Oba są dobrymi punktami startu, z różnych powodów. Minimalny szkielet daje agentowi mały kontekst i nic, co mogłoby go zmylić. Większy fundament z egzekwowanymi granicami daje mu działające przykłady i build, który wywala się, gdy agent zbacza. Najgorszą opcją jest ta, której nie oferuje żaden z nich: duża baza kodu, której zasady istnieją tylko w readme.
Dla wielonajemcowego SaaS-a z płatnościami, rolami i panelem administracyjnym rozpisany zakres w tym artykule to 280 do 465 godzin kompetentnej pracy. Dla jednoosobowego narzędzia z jednym checkoutem Stripe to bliżej 20. Uczciwa liczba zależy w całości od tego, co budujesz, i dlatego tabela jest rozpisana, a nie zsumowana za Ciebie.
Buduj sam, gdy hydraulika jest tym, czego chcesz się nauczyć, gdy Twój produkt jest na tyle nietypowy, że założenia startera będą Ci przeszkadzać, albo gdy Twój czas naprawdę nie ma kosztu alternatywnego. Kup, gdy zbudowałeś to już raz i pamiętasz dokładnie, ile trwały te nudne trzy czwarte.
Źródła
- Better-T-Stack, dla opisu produktu i komendy instalacyjnej
- create-better-t-stack na GitHubie, dla README, cytowanej filozofii, pełnej listy opcji, licencji MIT i liczby gwiazdek
- create-better-t-stack na npm, dla tygodniowej liczby pobrań
- Dokumentacja SaaSy Land i konfigurator, dla listy modułów i pytań generatora
- Pliki
vite.config.tsitsconfig.jsonw tym repozytorium, dla cytowanych progów pokrycia, reguł lintera i flag kompilatora
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.