starting-a-project
Two questions when someone wants to build something new: what to build it with, and how to
get it online. Answer the first from what they're building, not from a favourite framework —
then pick the simplest option that fits. They can always grow into something bigger later.
Pick a stack — what are you building?
| What you're building |
Start with |
| A content website (blog, portfolio, docs, landing page) |
Astro |
| An interactive app (dashboard, editor, tool) |
React + Vite — Next.js if it needs a server |
| A database-backed web app (sign up, log in, CRUD your stuff) |
Rails (or Django) |
| An API / backend service |
FastAPI |
| A script, tool, or automation |
Python + uv (or whatever's lightest) |
| A phone app |
Expo (React Native) |
| A data app or dashboard |
Streamlit |
| A desktop app, game, browser extension, or chat bot |
see the catch-all in the full guide |
The full guide — scaffold command for each, plus styling (Tailwind, shadcn/ui),
databases (start with SQLite), auth, and every option's deploy target — is in
references/starter-stacks.md. Read it before recommending one;
don't reconstruct it from memory.
Ship it — how to put it online
Once it works locally and they ask "how do people actually put this on the internet?", use
references/deploy.md: a decision guide from static sites (GitHub
Pages is the free starting point) through full-app hosts and containers, each with a
one-command path.
Stack and deploy target are linked, so the two halves connect: anything that builds to static
files (Astro, a Vite build) goes almost anywhere; anything that runs a server (Next.js,
Rails/Django, FastAPI, Streamlit) needs a host that runs servers (Railway, Render, Fly.io); a
phone app ships through the app stores via EAS.
Notes
- Recommend the simplest thing that fits — a beginner shipping a static Astro site beats one
stalled on a Next.js + database setup they don't need yet. Suggest growing into more only when
the project actually calls for it.
- This skill is about choosing and shipping. Setting up the machine it runs on (toolchain,
editor, Git identity, Claude config) is the separate [[getting-started]] skill.
1---2name: starting-a-project3description: Use when someone is starting a new project and unsure what stack or framework to build it with — "what should I use to build X?", "how do I start a new project?" — or asks how to deploy / put a project online. Covers the common beginner goals: a content website, an interactive app, a database-backed web app, an API, a script or automation, a phone app, a data dashboard.4---56# starting-a-project78Two questions when someone wants to build something new: **what to build it with**, and **how to9get it online**. Answer the first from *what they're building*, not from a favourite framework —10then pick the simplest option that fits. They can always grow into something bigger later.1112## Pick a stack — what are you building?1314| What you're building | Start with |15|----------------------|-----------|16| A content website (blog, portfolio, docs, landing page) | **Astro** |17| An interactive app (dashboard, editor, tool) | **React + Vite** — Next.js if it needs a server |18| A database-backed web app (sign up, log in, CRUD your stuff) | **Rails** (or **Django**) |19| An API / backend service | **FastAPI** |20| A script, tool, or automation | **Python + uv** (or whatever's lightest) |21| A phone app | **Expo** (React Native) |22| A data app or dashboard | **Streamlit** |23| A desktop app, game, browser extension, or chat bot | see the catch-all in the full guide |2425The full guide — scaffold command for each, plus styling (**Tailwind**, **shadcn/ui**),26databases (start with **SQLite**), auth, and every option's deploy target — is in27[`references/starter-stacks.md`](references/starter-stacks.md). Read it before recommending one;28don't reconstruct it from memory.2930## Ship it — how to put it online3132Once it works locally and they ask "how do people actually put this on the internet?", use33[`references/deploy.md`](references/deploy.md): a decision guide from static sites (**GitHub34Pages** is the free starting point) through full-app hosts and containers, each with a35one-command path.3637Stack and deploy target are linked, so the two halves connect: anything that builds to **static38files** (Astro, a Vite build) goes almost anywhere; anything that **runs a server** (Next.js,39Rails/Django, FastAPI, Streamlit) needs a host that runs servers (Railway, Render, Fly.io); a40**phone app** ships through the app stores via EAS.4142## Notes4344- Recommend the *simplest* thing that fits — a beginner shipping a static Astro site beats one45 stalled on a Next.js + database setup they don't need yet. Suggest growing into more only when46 the project actually calls for it.47- This skill is about choosing and shipping. Setting up the *machine* it runs on (toolchain,48 editor, Git identity, Claude config) is the separate [[getting-started]] skill.