De meeste React-chatbottutorials stoppen bij een demo. Het antwoord komt na acht seconden in één keer binnen, de volledige conversatie wordt bij elke beurt opnieuw naar het model gestuurd en de sleutel staat in een NEXT_PUBLIC_-variabele die Next rechtstreeks in de browserbundel opneemt. Op een screenshot ziet het er prima uit, maar in de eerste week van echt gebruik gaat het mis.
Dit is een bouwgids, geen systeemprompt. Je zet het bestand in je project, opent het met Claude Code of Cursor en werkt samen de architectuur uit: streamen met de Fetch ReadableStream-reader, een AbortController die is gekoppeld aan stoppen, een optimistisch gebruikersbericht waaraan tokens worden toegevoegd, een lijst die niet bij elke token elk bericht opnieuw rendert, autoscroll die niet blijft vechten met een lezer die omhoog heeft gescrold, markdown en codeblokken, de sleutel achter een route-handler, geschiedenis in localStorage en daarna in een echte backend, en een tokenbudget voor de dag waarop de conversatie lang wordt.
Je koopt het één keer en mag het houden. Geen abonnement, geen runtime-afhankelijkheid en niets dat je ervan weerhoudt het in het volgende project opnieuw te gebruiken of aan te passen terwijl je codebase zich verder ontwikkelt.