Languages, frameworks & choosing a stack
Seven services for a to-do list
Alice, a bookkeeper, asked an AI for a simple to-do app for her family. Ten minutes later the plan listed a database service, an auth service, an email service, a queue, a hosting platform, a file store and a monitoring tool. Each needed its own account and its own card. Her wife looked over her shoulder and asked why a shopping list needed seven companies. Alice had no answer, and the AI had already started creating the first account.
- JavaScript and TypeScript dominate web and many AI tools. Python leads data and automation. Java and C# are common on servers and in large companies. Go fits simple network services.
- A library is a toolbox you call. A framework such as Next.js, Django or Spring decides where things go and calls your code.
- Stick to common tools that many people use. Every extra service is another account, bill and thing that can go down.
- This course's Lab uses TypeScript and Next.js. Your app can use another stack — write the choice and the reason into AGENTS.md.
Each extra service needs A named purpose
Dos and don'ts
- Ask what problem each new service solves here before it's added.
- Write your stack choices and reasons into AGENTS.md, including the language.
- If the AI picks a language you did not ask for, stop and choose on purpose.
- Let the AI add a service you can't name a purpose for.
- Assume every AI-built app must be JavaScript.
The main languages
Apps are written in many languages: JavaScript and TypeScript for web and many AI tools, Python for data and automation, Java or Kotlin for Android and many servers, C# for .NET servers and Windows apps, Swift for iPhone, Go for simple network services. The ideas in this lesson — language, framework, stack — are the same whichever you pick. This course's Lab and most examples use TypeScript (.ts files) because every browser runs JavaScript and most vibe-coding tools default there. That is a teaching choice, not a rule for your product. If you want Python, Java or C#, say so before the AI scaffolds the app.
Library or framework
A library is a toolbox your code reaches into. A framework is the opposite: it decides where things go and calls your code. Example: import { format } from "date-fns" is a library call; Next.js deciding that app/page.tsx is a route is a framework. React is a framework for building the parts of a page; Next.js builds on React and adds pages, server code and routing in one project. Django and Flask play that role in Python, Spring in Java, ASP.NET in C#. When this course says Next.js, it means that skeleton. A framework is fast on day one. It can become a fight later, when you want something its skeleton wasn't built for.
Keep it boring
Pick popular, boring tools. Example: before adding Redis "because we might need a queue," ask which broken screen it fixes today. Every extra service is another account, another bill and another thing that can go down. Before the AI adds one, ask what problem it solves here, and write the answer into AGENTS.md.
Regex
Regex is a tiny language for describing the shape of text (for example: "exactly five digits"). When the AI writes one, ask for a short list of inputs it should accept and inputs it should reject — you do not need to read the pattern itself.
Read my project root and say which language it uses, naming the file that told you. Then write the Stack section of AGENTS.md: one line each for language, framework, data, hosting and sign-in, each with the reason. Add a Not in this stack list for things we deliberately skipped. Don't add any new tool without asking. Ask me questions about anything I didn't decide.
Example
Look only at my project root and tell me which language the app uses, naming the file that proved it. Then tell me the command that starts the app in development, and whether that matches the language you found.
Paste into your agent inside a project folder. Prompts that say "this project" are for the app you build in the Lab, or any app you already have. No project yet? Read them now and paste them later, in the Lab.
Before you build anything, propose two stacks for this app — one may be TypeScript and one may be Python, Java or C#. For each give the language, framework, data storage, host and rented services, the monthly cost at 100 users, and one thing it makes hard. Then recommend one.
List every service and library this project uses. For each one, say in one sentence what problem it solves for this app. Flag any you cannot justify and what removing it would take.
Explain this regex piece by piece in plain words, then list five inputs it accepts and five it rejects that I might not expect. Write a test for them and run it.