Naar inhoud gaan
Alle artikelen

Je stacklijst shippt je product niet

Ruim honderd ontwikkelaars bookmarkten mijn stacklijst — wat de lijst weglaat, is de plumbing waarmee een Windows-desktoptool in 48 uur kon shippen.

Noah Zixin Zhang4 min lezen

Helpt een langere stacklijst je sneller shippen?

Dat hangt af van wat de lijst weglaat. Een stacklijst noemt tools; hij installeert niet de grenzen ertussen — geverifieerde webhooks, tenantscoping, releasesignering — en juist die naden zijn waar projecten vastlopen. Een gekopieerde lijst reproduceert de tools zonder de integratie. Lijsten werken als een menu van dingen om te onderzoeken, maar de weg naar een shipbaar product is geteste plumbing, hoe je die ook verkrijgt. De eerlijke vraag is wat je avonden waard zijn.

De bookmarkval

Een paar dagen geleden beantwoordde ik een thread op X met de stack die ik echt draai — mijn “2026 indie dev stack”, een dozijn tools in één antwoord. Het antwoord verzamelde meer dan honderd bookmarks en stuurde meer dan honderd klikken naar deze site.

De analytics waren minder flatteus: de meeste bezoekers scanden een pagina en vertrokken. Een stacklijst leest als een kant-en-klaar plan; een gekopieerde lijst shippt niets. Elke tool moet nog steeds worden geïnstalleerd, met zijn buren verbonden en getest — aan de naden ertussen gaan de weken verloren.

Dit is het artikel waar de bookmarks naar op zoek waren: niet welke tools ik draai, maar welke plumbing al draagkrachtig was — en wat ik daarmee in achtenveertig uur kon shippen.

Waar projecten echt sterven

De meeste indieprojecten sterven niet aan hun kernfeature. Ze sterven in week één, aan infrastructuur die niets met het idee te maken heeft. Motivatie heeft een halfwaardetijd van ongeveer achtenveertig uur — elk uur weg van het product verbrandt de schaarsste hulpbron die een solobuild heeft.

Het verloop van de week is opvallend consistent:

  • Dag één: monorepo-layout, ESLint, tsconfig-paden, databasemigraties.
  • Dag drie: nog steeds in de documentatie van de betalingsprovider, bezig om webhook-idempotentie goed te krijgen.
  • Dag vijf: een desktop- of mobiele companion — een nieuwe buildpipeline, een nieuw auth-oppervlak, auto-updates vanaf nul.

Een 48-uurs build, van begin tot eind

Vorige week shippte ik SpinShare, een Windows-native desktoptool: sleep een bestand in Verkenner, tik Shift, en een radiaal menu opent onder de cursor; laat los om een lokale conversie of bewerking uit te voeren. Geen pop-ups, niets geüpload; het bestand verlaat de machine nooit.

De tijdlijn is het deel dat het bekijken waard is: een nieuwe repository, Rust-kernlogica, een offline licentiestroom op mijn bestaande billingrails en een Microsoft Store-inzending — achtenveertig uur kernontwikkeling, pair-programmeren met een agent en vrijwel geen prompt-tuning. De agent ontspoorde om een onglamoureuze reden: de architectuurgrenzen waar hij hallucineert, waren al afgedicht in supastack, mijn eigen kit.

Wat volgt is de afrekening: de plumbing die in die twee dagen niet gebouwd hoefde te worden.

Setup en vangrails

pnpm setup vat de bootstrap samen in één commando: preflight-checks, afstemming van omgevingsvariabelen, dependency-installaties, databasemigraties. Er is geen eerste avond waarop je een werkende omgeving in elkaar zet — de repository doorstaat zijn eigen checklist of noemt wat er ontbreekt.

De .ai/-spiegeldocumenten, AGENTS.md en .agents/skills/ zijn een contract geschreven voor de agent in plaats van de mens — de verantwoordelijkheidsgrens van elk package, zijn testregels, zijn rode lijnen (de desktop-app is een single-webview-shell die nooit product-UI forkt). De projectstructuurgids toont de indeling die hij leest; het artikel over de agentworkflow beschrijft het werkritme.

Grenzen die opgeschreven staan, kan een agent niet ongemerkt overschrijden.

Billing en releases kwamen kant-en-klaar mee

Acht billingadapters zitten achter één contract — Stripe, Creem, Polar, Dodo, Lemon Squeezy, Paddle, Whop en PayPal — en een webhook_event-ledger maakt elke afwikkeling handtekening-geverifieerd en idempotent voordat die een licentie of een e-mail wordt. Mijn werk begon stroomafwaarts: Early-Bird-niveaus die schakelen op bestelaantal en Ed25519-ondertekende offline licentiesleutels — een desktoptool moet zonder netwerkcall kunnen activeren. De handleiding voor de facturatiemodule documenteert de stroom die ik uitbreidde.

De releasekant was even oninteressant — en dat is de bedoeling. De Tauri 2-pipeline — desktop-release.yml — bouwt ondertekende bundels en genereert latest.json via minisign voor stable- en beta-kanalen op Windows (NSIS en msi), macOS (dmg) en Linux (AppImage). Het enige packaging-werk dat ik zelf deed was een MSIX-build voor de Microsoft Store; de desktop-quickstart dekt de rest.

De tien procent die gebruikers echt voelen

Hier is de rekensom die een stacklijst verbergt. Grofweg negentig procent van wat een product nodig heeft is plumbing die de gebruiker nooit ziet. Onzichtbare plumbing is het werk dat een fundament zou moeten dragen — het is het deel dat gedragen kan worden. De rest is het product.

Omdat de mijne al draagkrachtig was, ging vrijwel al mijn achtenveertig uur naar de tien procent die gebruikers voelen — werk dat nooit in een stackcommentaar past en nooit gebeurt zolang de week naar webhooks en ondertekening gaat:

  • Windows OLE-draghooks in Rust, zodat het menu alleen scherp is terwijl een echte bestandsdrag met Shift wordt vastgehouden — nooit tijdens het typen.
  • Een multi-window trayflow, zodat de tool één toetsaanslag verwijderd blijft zonder taakbalkvenster.
  • De radiaalmenu-animatie, afgestemd tot het menu direct aanvoelt in plaats van geanimeerd.
  • Meer dan dertig lokale formaatconverters, elk met eigen unittests.

Het praktische deel: prijzen en transparantie

Het eerlijke bezwaar: “Ik heb Cursor — waarom betalen voor een stacklijst?” Het houdt stand tot je eigen tijd een prijs heeft. Twee avonden webhook-idempotentie kosten je een feature die je niet hebt geshippt.

Over transparantie: de documentatie is volledig openbaar — directorystructuur, twee webengines, cross-platform sync, alle acht billingadapters, AI-routing. Ik zie liever dat een scepticus hem van begin tot eind leest en wegloopt dan dat iemand op een kop koopt; starterkit of from scratch is de eerlijke versie van de beslissing.

Twee praktische notities: de getoonde prijzen bevatten al $100 launchkorting, en de checkout ondersteunt Alipay. En een 50% builder-cashback — ship binnen zestig dagen een echt product, deel het buildverhaal openbaar (5.000 organische views of 50 organische likes op X, Reddit, YouTube of vergelijkbaar) en mail me de link: de helft komt terug en de licentie blijft van jou. De regels staan in de launch-cashback-voorwaarden.

Veelgestelde vragen over stacklijsten

Dezelfde bezwaren komen naar boven wanneer de kit opkomt. Ze verdienen directe antwoorden.

  • Kan een agent dit niet allemaal voor me scaffolden? — Hij kan iets aannemelijks produceren; hij kan de naden niet in één doorgang verifiëren. Een idempotente webhook is getest, niet gegenereerd — scaffolding geeft je opnieuw dezelfde lijst.
  • Maakt een boilerplate producten niet generiek? — De plumbing is gedeeld; het product niet. SpinShare's draghooks, traygedrag en converters bestaan nergens in de kit — de tien procent die klanten zien blijft van jou.
  • Wat als ik alleen een webapp nodig heb? — De kit is hoe dan ook de aankoop; mobiel en desktop zijn oppervlakken om over te nemen of te negeren, geen vereisten. SpinShare bestaat omdat het desktopoppervlak al gebouwd was.
  • Is een desktoptool echt het kopersverhaal? — Het is het kortste eerlijke voorbeeld dat ik heb: twee dagen van een lege repository naar een store-inzending. Dezelfde plumbing dient ook een SaaS — de launchchecklist is de langere versie.
  • Waarom niet gewoon de stacklijst publiceren? — Al gedaan: de tech-stackgids noemt elke keuze en zijn reden. Een lijst is een menu, geen plan — het argument hier is om het plan al gebouwd te kopen.