Naar inhoud gaan
Alle artikelen
4 min lezen

Een fundament waarop je kunt bouwen.

Het denken achter supastack: gedeelde infrastructuur, heldere grenzen en ruimte voor je product om zijn eigen ding te zijn.

het supastack-team

Het werk dat elk product herhaalt

Een nieuw product begint met een specifiek probleem. De eerste weken zien er vaak veel minder specifiek uit: sessies, workspacerecords, abonnementsstatus, achtergrondwerk en e-mailaflevering. Deze stukken moeten samenwerken voordat het product iets nuttigs kan doen.

supastack geeft dat herhaalde werk een thuis. Een Next.js-webapp en een Expo-mobiele app delen TypeScript-packages voor de infrastructuur eronder. Het doel is die grenzen begrijpelijk genoeg te maken dat een product ze kan configureren zonder andermans domeinmodel te erven.

Geen van de stukken is op zichzelf moeilijk. De kosten zitten in hun coördinatie — een betaling die een entitlement moet worden, een sessie die een workspacescope moet worden, een taak die een dichte laptop moet overleven. Producten falen zelden op een ontbrekende feature. Ze falen op een naad.

Waarom het één keer goed bouwen

Het argument voor gedeelde infrastructuur is niet dat het werk onder je niveau is — het is dat het herhaalde werk verdient om één keer, zorgvuldig, te worden gedaan. Een workspacegrens die goed is geïmplementeerd in een gedeelde module beschermt elk product dat erop bouwt. Dezelfde grens, per product geïmproviseerd, wordt een set bijna-missers die op interessante, gevaarlijke manieren verschillen.

Het concentreert ook het onderhoud. Provider-API's veranderen, auth-libraries evolueren, billingsemantiek drijft weg. Wanneer die veranderingen op één plek landen — de moduledocumentatie van de kit volgt ze — propageert een fix in plaats van per project opnieuw geleerd te worden. En wanneer je de afweging voor één product maakt, past starterkit of from scratch dezelfde redenering toe op de kopen-versus-bouwen-beslissing.

Gedeelde infrastructuur concentreert ook de review. Een grens die op één plek leeft kan één keer hard worden getest — negatieve gevallen, opnieuw afgespeelde events, cross-tenant-pogingen — in plaats van te hopen dat vijf herimplementaties het elk goed deden. Dat is deel van waarom de kit in zijn testsuite investeert: vertrouwen in gedeelde code onderhouden is goedkoper dan het per project opnieuw te verdienen.

Geef elke module één verantwoordelijkheid

Identiteit stelt vast wie een request doet. Workspaces bepalen welke records die persoon kan benaderen. Billing legt betaalstatus vast, terwijl entitlements beantwoorden of een capability beschikbaar is. Deze zaken gescheiden houden voorkomt dat een succesvolle betaalredirect een autorisatiebeslissing wordt.

Dezelfde discipline geldt voor achtergrondwerk. Het gedeelde JobRunner-contract belooft enqueue, status en cancel. Trigger.dev bezit het workflowgedrag. Een klein interface is waardevol wanneer zijn grenzen zichtbaar zijn; retries of scheduling achter een generieke methode verstoppen zou het systeem moeilijker te beredeneren maken.

Better Auth beantwoordt identiteit. Postgres en Drizzle houden de records vast. Stripe of Lemon Squeezy rapporteren betaalstatus. Van geen van hen wordt gevraagd slim te zijn over de taak van een andere module — de naden blijven smal genoeg om te beredeneren — en een fundament is slechts zo betrouwbaar als zijn naden.

Laat ruimte voor het product

Een prospectingworkflow, een documenteditor en een researchassistant kunnen dezelfde identiteits- en billingmodules gebruiken. Hun records, taal en workflows blijven verschillend. Productspecifieke logica hoort in de codebase van het consumerende product, met configuratie die het aan het fundament verbindt.

Deze scheiding is ook een praktische onderhoudsbeslissing. Een fix voor workspace-isolatie moet herbruikbaar zijn. Een wijziging in hoe één product een prospect scoort mag geen nieuwe eis worden voor elk ander product.

Dat is het verschil tussen een fundament en een thema. Een thema geeft je een uiterlijk om te houden of te vervangen. Een fundament geeft je dragende beslissingen — wie identiteit bezit, hoe records worden afgebakend, waar een betaling toegang wordt — waarop een product bouwt in plaats van eromheen werkt. De projectstructuurgids laat zien waar het ene eindigt en het andere begint.

Begin met één complete flow

Begin met het lokale referentiepad: log in, inspecteer toegang, dien een taak in en lees het resultaat. Fake en lokale adapters laten deterministische tests het pad oefenen zonder betaalde providerrequests — de vijf-minuten-quickstart draait het end-to-end. Configureer daarna de productie-integraties die je product echt nodig heeft.

Lokale acceptatie en productieacceptatie beantwoorden verschillende vragen. Een slagende lokale test stelt applicatiegedrag onder gecontroleerde condities vast. Echte authenticatiepersistentie, provideraflevering, deployment en apparaatgedrag hebben nog steeds hun eigen verificatie nodig. Houd dat onderscheid zichtbaar terwijl het product groeit.

Een fundament verdient zijn naam langzaam: in het tweede product dat sneller shipt dan het eerste, en in de onderhoudsdag die één module fixt in plaats van vijf codebases. Dat is de weddenschap achter supastack — en het is de lat waaraan elke module wordt gehouden.

Vragen achter de aanpak

Onder deze aanpak zitten een paar vragen, en die verdienen een eerlijk antwoord.

  • Is supastack een template of een framework? — Een fundament van modules met contracten ertussen. Productcode leeft buiten Starter Core en verbindt via configuratie, zodat het platform kan worden geüpdatet zonder je features te forken.
  • Maakt gedeelde infrastructuur producten niet generiek? — Alleen de plumbing is gedeeld. Records, workflows en taal blijven in de codebase van het product — de delen die klanten echt zien blijven van jou.
  • Waar begint de eigen code van het product? — Bij de records en workflows die alleen het product heeft. Het fundament authenticeert de gebruiker en bakt de data af; het weet niet wat een prospect is.
  • Waarom een monorepo? — Zodat de web-, mobiele en desktop-apps samen veranderen met de packages eronder: één typesysteem, één testgate, geen drift tussen repositories.
  • Wat als ik alleen de webapp nodig heb? — Het fundament is de aankoop; mobiel en desktop zijn oppervlakken om te adopteren of te negeren. Niets dwingt je een app te shippen die je niet nodig hebt.

Veelgestelde vragen

14 vragen

Wat is supastack?

supastack is een modulair fundament voor het bouwen van SaaS-producten met AI. Het brengt gemeenschappelijke infrastructuur samen zodat jij je kunt richten op productspecifieke functies.

Ondersteunt het web en mobiel?

Ja. supastack bevat Next.js- en Expo-apps als startpunten voor web- en mobiele ervaringen.

Welke authenticatie is inbegrepen?

Better Auth dekt e-mail/wachtwoord, OTP en sociale login. Persoonlijke workspaces worden bij het account geprovisioneerd zodat productrecords vanaf dag één afgebakend blijven.

Hoe ondersteunt het AI?

supastack bevat configureerbare multi-provider AI, usage-tracking, budgetten en versleutelde bring-your-own-key-ondersteuning.

Hoe worden abonnementen afgehandeld?

Voor producten op de kit vormen Stripe-billing, abonnementen en entitlements het fundament voor betaalde toegang. Providersecrets blijven server-only.

Waar leeft mijn productspecifieke code?

Productspecifieke functies blijven in een aparte codebase terwijl het product de fundamentmodules van supastack configureert en integreert.

Hoe werkt de prijs van supastack?

De kit is een eenmalige aankoop met lifetime updates: One Framework voor $249 (tijdelijke lanceringsprijs — $100 korting op de normale prijs van $349) of All Frameworks (Next.js, iOS, Android) voor $499 (tijdelijke lanceringsprijs — $100 korting op de normale prijs van $599), plus $75 per extra developer seat. Geen kit-abonnement. Checkout op deze site levert je licentiesleutel per e-mail, met repositorytoegang via een GitHub-uitnodiging.

Hoe bakens workspaces mijn data af?

Records van gebruikers worden afgebakend per workspaceId. Identiteit, entitlements, AI-gebruik, billing-events en auditentries blijven binnen de grens van de persoonlijke workspace.

Hoe werken achtergrondjobs?

Trigger.dev is de expliciete jobruntime. Het JobRunner-contract belooft alleen enqueue, status en cancel — workflowsemantiek blijft Trigger.dev-specifiek en expliciet.

Hoe verschilt e-mail van outreach?

Transactionele e-mail dekt productworkflows zoals voltooiingsnotices. Koude outreach en campagnes zijn productzaken buiten de e-mailmodule van deze kit.

Hoe werken mobiele aankopen?

Mobiel bevat native aankopen en herstel via RevenueCat, met toegang die je server verifieert. Configureer de winkelaccounts en rond apparaattests af vóór publicatie. Webfacturatie blijft afzonderlijk.

Waar leven de AI-providerkeys?

Bring-your-own-key-credentials zijn versleuteld en blijven server-only. Keys worden uit logs gefilterd; gebruik en budgetten blijven zichtbaar op workspaceniveau.

Welke betaalmethoden accepteert de checkout?

De door Stripe gehoste checkout accepteert kaarten en kan ook Alipay en WeChat Pay aanbieden zodra die wallets op het Stripe-account zijn geactiveerd — handig voor kopers in China. Wallet-autorisaties worden asynchroon bevestigd, dus de licentiepagina wordt bijgewerkt zodra de betaling is afgerond.

Kan ik een terugbetaling krijgen?

Zodra je toegang hebt gekregen tot de repository, is supastack voor altijd van jou en kan er dus geen terugbetaling plaatsvinden. Maar wees gerust: je krijgt de volledige broncode met levenslange updates om onbeperkt producten voor jezelf of je klanten te bouwen en te lanceren. Je mag de code alleen niet doorverkopen of de repository herdistribueren als starterkit of template.

NL