Every time I start a new project, I follow one rule:
Get to production as early as possible.
Not perfect code. Not perfect architecture. Just something live.
Most people wait until things are "ready" to deploy.
That's a mistake.
I prefer to:
# initialize repo
git init
# create main branch
git checkout -b main
# push initial commit
git add .
git commit -m "initial commit"
git remote add origin <your-repo-url>
git push -u origin main
# create dev branch
git checkout -b dev
git push -u origin dev
Rule:
main → always production-readydev → active workBefore writing real code, I write a README.
Yes — before anything else.
# Project Name
## What is this?
Short description of the product.
## Problem
What problem are we solving?
## Tech Stack
- Next.js
- tRPC
- Prisma
- PostgreSQL
## Features (v1)
- Auth
- Dashboard
- API
## Setup
npm install
npm run dev
This helps you:
I default to the T3 Stack because it removes decision fatigue.
npx create-t3-app@latest my-app
Follow prompts:
cd my-app
npm install
npm run dev
Once it runs locally → deploy.
npm i -g vercel
vercel
Follow prompts → done.
Now you have:
When scaffolding:
Just ship something small.
Boring code that ships > clever code that doesn't.
# 1. create app
npx create-t3-app@latest my-app
# 2. enter project
cd my-app
# 3. git setup
git init
git checkout -b main
# 4. first commit
git add .
git commit -m "initial scaffold"
# 5. push
git remote add origin <repo>
git push -u origin main
# 6. deploy
vercel
# 7. create dev branch
git checkout -b dev
git push -u origin dev
Scaffolding isn't about structure.
It's about momentum.
If you can:
You're already ahead.
This is how I start. Everything else evolves.
I've used this approach across startup environments where shipping fast mattered more than perfect architecture.