Optimal over beginner-friendly: Choose modern, industry-standard tools that represent best practices. The goal is to learn the right way from the start, not to be limited by experience level.
- Free tier for experiments
- Easy PostgreSQL, Redis, and static site hosting
- Auto-deploy from GitHub
- Environment variable management
When to use:
- Web applications (Node.js, Python, etc.)
- Databases (PostgreSQL preferred)
- Background workers
- Static sites
Configuration:
Always include render.yaml in project root for infrastructure-as-code:
# Example render.yaml
services:
- type: web
name: my-app
env: node
buildCommand: npm install && npm run build
startCommand: npm start- Developer runs manual tests first
- Automated tests supplement, not replace manual testing
- Provide clear testing instructions for every feature
- Vitest: Modern, fast, TypeScript-native
- Playwright: E2E testing (better than Cypress for modern apps)
- React Testing Library: Component testing
Why:
- React: Industry standard, massive ecosystem, transferable skills
- TypeScript: Catches errors before runtime, great for learning proper patterns
Why over Create React App:
- Faster development server (instant HMR)
- Better build times
- Modern, actively maintained
- Native TypeScript support
Why:
- Utility-first = easier to reason about than custom CSS
- No naming conflicts (no BEM, no CSS modules confusion)
- Consistent design system built-in
- Great documentation for learning
When to use:
- Need server-side rendering (SEO, performance)
- Want built-in routing
- API routes + frontend in one project
Framework: Express or Fastify
- Express: More resources, simpler for learning
- Fastify: Better performance, modern TypeScript support
When to use:
- Data processing or ML features
- Team prefers Python
- Async operations are key
Why FastAPI:
- Automatic API docs (Swagger)
- Modern async support
- Great TypeScript-like type hints
- Fast (comparable to Node.js)
Why:
- Industry standard for production apps
- Free on render.com
- Powerful querying, JSON support
- Easy to learn, scales well
Prisma benefits:
- Type-safe database queries
- Automatic migrations
- Great TypeScript integration
- Visual database browser
Why over npm/yarn:
- Faster installs
- Better disk space usage (shared dependencies)
- Stricter (prevents phantom dependencies)
- Drop-in replacement for npm
Fallback: npm Use npm if:
- Project already uses it
- Team is unfamiliar with pnpm
- Deployment platform doesn't support pnpm well
Why:
- Simple configuration
- Fast parallel builds
- Great with pnpm workspaces
- Caching reduces rebuild times
.env.example - Template for required variables:
# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/db
# API Keys
API_KEY=your_key_here.env - Actual secrets (never commit):
# This file is gitignored
DATABASE_URL=postgresql://real_connection_string
API_KEY=real_api_key- Catch errors before runtime
- Enforce consistent style
- Learn best practices through warnings
- No debates about formatting
- Consistent code style
- Auto-fix on save
- Run
tsc --noEmitbefore commits - Catch type errors early
Use conventional commits:
feat: add user authentication
fix: resolve database connection timeout
docs: update README with deployment steps
refactor: simplify user validation logic
main: Production-ready codedev: Development branch (optional)feature/*: Feature branchesfix/*: Bug fix branches
Every project must have:
- README.md: What it does, how to run it, how to deploy
- AGENTS.md: AI agent instructions (commands, testing, conventions)
- .env.example: Required environment variables
- CHANGELOG.md: Track major changes (optional but recommended)
It's okay to use different tools when:
- Project already has established stack
- Specific requirement demands it (e.g., Svelte for specific use case)
- Learning opportunity (trying new framework)
But: Document why you deviated in the project README.
When starting a new project:
- Ask about specific requirements that might change tech choices
- Default to this stack unless there's a good reason to deviate
- Explain why each technology was chosen
- Provide learning resources for unfamiliar tools
- Always include render.com deployment configuration