guest@vibe-coder:~$ ./vibe-coder.MY.sh --init

HELLO WORLD

A beginner-to-pro path for shipping your own app — fundamentals, vibe coding, and everything between.

Click the globe to enter

zsh — roadmap.sh — 80×24

guest@vibe-coder:~$ ./vibe-coder.MY.sh

Vibe-Coder.MY.sh_

A beginner's path to shipping your own app, paced for about 4-7 hours a week. Seven stages, in order — each one unblocks the next.

Master the fundamentals behind vibe coding — HTML, CSS, JavaScript, Git, APIs, databases, and deployment. Start free with freeCodeCamp, CS50, MDN, The Odin Project, roadmap.sh, and trusted YouTube channels. Choose Scrimba, Codecademy, Coursera, or selected Udemy courses when you need more structure.


      
0 / 0

Two separate, independently tracked paths — switching doesn't erase either one's progress.

Filters the reference sections below (tech stack, folder structure) to just this track.

tap once: done   tap again: shaky, revisit   tap a third time to clear

Reference

How vibe coding actually works

Not a checklist item — the actual mental model. Read this before you start the 100% vibe coding path.

The core loop

  1. Describe — say what you want in plain English, focused on behavior, not implementation
  2. Plan — ask for a plan before any code gets written, and actually read it
  3. Execute — approve the plan, let it build
  4. Verify — click through it yourself like a real user, don't take "done" on faith
  5. Refine — if it's not right, describe more precisely and repeat

Every level in the 100% vibe coding path is a different angle on this same five-step loop. There's no separate "then you learn to code" phase — the loop itself is the method.

Weak descriptions vs. strong ones

The single highest-leverage skill in vibe coding is writing the request, not reading the result.

Weak:   "Make a login thing."
Strong: "Add an email/password login form
         above the fold. Show an error if
         the password is wrong. Redirect
         to /dashboard on success."

Weak:   "Fix the button."
Strong: "The delete button works once, but
         clicking it a second time does
         nothing. Find out why."

What it's genuinely good for

  • Prototypes and proof-of-concepts you want to see fast
  • Personal tools and internal scripts nobody else depends on
  • A first draft of almost anything, including code you'll later read and learn from
  • Small, well-scoped client projects where you're honest about the method

What it's not good for yet

  • Anything handling real payment or personal data at scale, without someone who can read the security-relevant code
  • Production systems you're the only one responsible for fixing under time pressure
  • Long-lived codebases meant to survive years and multiple contributors
  • The moment Claude Code is wrong and you can't independently tell — this is the actual limit, not a hypothetical one

Reference

Fundamentals that outlast any framework

Frameworks churn every few years. These don't. Come back to this list once a month and be honest about which ones are still shaky.

Reference

Open source: what it is, and how to actually use it

Almost every tool in this entire roadmap — Next.js, React, PostgreSQL, Flutter, VS Code, even the fonts you're reading right now — is open source. Understanding it properly is a genuine unlock, not optional trivia.

What "open source" actually means

  • The source code is public — anyone can read exactly how it works, not just use a black box
  • A license explicitly grants you the legal right to use, modify, and (usually) redistribute it
  • Development often happens in the open too — you can watch decisions get made, not just receive finished releases
  • "Free" refers to freedom to use and modify, not always to price — though almost everything in this roadmap is also free of charge

Why it's genuinely powerful

  • You're standing on millions of hours of other people's work for free — a solo learner can ship things that used to need a whole team
  • Code that thousands of projects depend on gets far more scrutiny than anything you'd write alone — bugs and security holes get found faster
  • You can read the actual source when documentation falls short, instead of guessing
  • It compounds: this roadmap itself only exists because Next.js, Vercel's tooling, and dozens of other open projects exist to build on

Licenses — the part beginners skip, and shouldn't

Not all open source licenses let you do the same things. Two categories cover almost everything you'll encounter:

Permissive (MIT, Apache-2.0, BSD)
→ Use it in a commercial, closed-source
  product with almost no restrictions.
  Most JS/npm packages use this.

Copyleft (GPL, AGPL)
→ If you distribute software built on
  GPL code, you may have to open-source
  YOUR code too. AGPL extends this to
  software only used over a network.

Check a package's license before depending on it for anything commercial — it's usually one line in its README or a LICENSE file.

How to evaluate a package before depending on it

  • Check the license first (see above) — this can be a genuine legal blocker, not just a preference
  • Look at recent commit/release activity — an unmaintained package is a future liability
  • Check weekly downloads and open issues on npmjs.com as a rough health signal, not gospel
  • Read the README before installing — if it can't explain itself clearly, that's a signal too
  • Remember: every dependency you add is something you're now trusting to keep working, stay secure, and not disappear

How to actually use one, day to day

npm install package-name
# then read its README for the import syntax

import { thing } from "package-name";
  • Claude Code can usually tell you what a package does and how to use it — ask it before digging through docs yourself
  • Pin versions in production (avoid blindly auto-updating major versions) — a breaking change in a dependency shouldn't break your app without warning
  • If something's broken or confusing, check the project's GitHub Issues — someone has almost always hit it before you

Giving back, even as a complete beginner

  • Star a repo you actually use — it's a real, if small, signal that helps maintainers gauge usage
  • File a clear bug report when you find one — a good bug report is a genuine contribution, no code required
  • Read a project's CONTRIBUTING.md before your first pull request — most projects have specific expectations
  • Sponsor a maintainer of a tool you rely on, if you're able to — most open source maintainers are unpaid volunteers

Reference

What a real project folder looks like

Not abstract — this is roughly what you'd see after running the standard starter command for each track.

Website

$ mkdir my-site && cd my-site

my-site/
  index.html
  about.html
  css/
    styles.css
  js/
    main.js
  assets/
    logo.svg
    photos/
  README.md
Web app (Next.js)

$ npx create-next-app@latest my-app --typescript --tailwind --eslint --app

my-app/
  app/
    page.tsx
    layout.tsx
    api/
      users/route.ts
  components/
    Button.tsx
    Navbar.tsx
  lib/
    db.ts
  public/
  .env.local
  package.json
Mobile (Expo, cross-platform)

$ npx create-expo-app@latest my-mobile-app

my-mobile-app/
  app/
    (tabs)/
      index.tsx
      profile.tsx
    _layout.tsx
  components/
    Card.tsx
  constants/
    Colors.ts
  assets/
    images/
  app.json
  package.json
Android (native, Kotlin)

Android Studio → New Project → Empty Activity

MyApp/
  app/                        # module folder
    src/main/
      java/com/example/myapp/
        MainActivity.kt
        ui/
          HomeScreen.kt
          theme/
            Theme.kt
        data/
          UserRepository.kt
      res/
        values/
          strings.xml
          colors.xml
      AndroidManifest.xml
    build.gradle.kts          # module-level build file
  build.gradle.kts            # project-level build file
  settings.gradle.kts
iOS (native, Swift)

Xcode → File → New → Project → App (SwiftUI)

MyApp/
  MyApp/
    MyAppApp.swift
    ContentView.swift
    Views/
      HomeView.swift
      ProfileView.swift
    Models/
      User.swift
    Assets.xcassets/
  MyApp.xcodeproj/
E-commerce (headless)

$ npm create @shopify/hydrogen@latest

my-store/
  app/
    root.tsx
    routes/
      _index.tsx
      products.$handle.tsx
      collections.$handle.tsx
      cart.tsx
    components/
      ProductCard.tsx
      CartDrawer.tsx
    lib/
      fragments.ts
  public/
  server.ts
  package.json
  vite.config.ts

Reference

Your first project, step by step

One concrete beginner project per track — not just a name, the actual commands to get it running.

Website

A one-page portfolio: your name, a short bio, 3 project cards, a contact link.

Stack: plain HTML/CSS/JS

  1. mkdir portfolio && cd portfolio
  2. touch index.html styles.css
  3. Write the HTML: header, a section with 3 project cards, a footer with your contact link
  4. Style it with Flexbox — one row on desktop, stacked on mobile
  5. Preview with the VS Code Live Server extension
  6. Deploy: drag the folder onto Netlify's dashboard, or netlify deploy --prod
Website (alt)

An event landing page: date, location, a live countdown, an RSVP form.

Stack: plain HTML/CSS/JS

  1. mkdir event-landing && cd event-landing
  2. touch index.html styles.css script.js
  3. Write the HTML: hero with event name and date, a details section, an RSVP form
  4. In script.js, write a countdown timer that ticks down to the event's date/time
  5. Style the details section with CSS Grid instead of Flexbox, for practice
  6. Deploy: same Netlify flow as the portfolio
E-commerce

A single-product store — one item, real checkout, no code required for v1.

Stack: Shopify (Basic plan)

  1. Sign up at shopify.com, choose the Basic plan
  2. Add your one product: photos, price, description
  3. Pick the free Dawn theme, customize colors and logo in the theme editor
  4. Turn on Shopify Payments in settings
  5. Place a test order using Shopify's test payment mode
  6. Remove the storefront password and you're live
E-commerce (alt)

A small catalog store — 3 to 5 products with a proper collection page, not just one.

Stack: Shopify (Basic plan)

  1. Same Shopify setup as the single-product store
  2. Add 3-5 products across at least two price points
  3. Create a Collection, add all products to it
  4. Set the Collection as a menu item so it's actually reachable from the homepage
  5. Add filters (price, availability) in the theme editor's collection settings
  6. Test a checkout that adds two different products to the same cart
Web app

A habit tracker — log in, add habits, check them off daily, see a streak.

Stack: Next.js + Supabase + Vercel

  1. npx create-next-app@latest habit-tracker --typescript --tailwind --eslint --app
  2. Create a Supabase project, add a habits table
  3. Turn on Supabase email/password auth
  4. Build the list page: fetch the logged-in user's habits, checkbox to mark today done
  5. Test locally: npm run dev
  6. Deploy: vercel --prod
Web app (alt)

A shared reading list — save links, tag them, mark as read, visible to anyone with the link.

Stack: Next.js + Supabase + Vercel

  1. npx create-next-app@latest reading-list --typescript --tailwind --eslint --app
  2. Create a Supabase project, add a links table: url, title, tag, read boolean
  3. Build an "add link" form that fetches the page title automatically from the URL
  4. Build the list view: filter by tag, toggle read/unread
  5. Test locally: npm run dev
  6. Deploy: vercel --prod
Mobile app

A photo journal — snap a photo, add a caption, pin it to a map of where you took it.

Stack: Expo (camera + location) + Supabase Storage

  1. npx create-expo-app@latest photo-journal
  2. npx expo install expo-camera expo-location
  3. Create a Supabase project: a journal_entries table plus a storage bucket for photos
  4. Build the capture screen: take a photo, grab the device's current location
  5. Upload the photo to Supabase Storage, save the entry with its caption and coordinates
  6. Ship it: eas build --platform all, then eas submit
Mobile app (alt)

Or: port the web app's habit tracker to your own phone, sharing the same backend.

Stack: Expo, same Supabase backend as the web app

  1. npx create-expo-app@latest habit-tracker-mobile
  2. cd habit-tracker-mobile && npx expo start
  3. Scan the QR code with the Expo Go app on your phone
  4. Point it at the same Supabase project as your web app, if you built both
  5. Build the same habit list screen with React Native components
  6. Ship it: eas build --platform all, then eas submit

Reference

Tech stacks by project type

You don't need all of this — just the column that matches what you're building. Rows are in the order you'd typically adopt them.

Layer Website E-commerce Web app Mobile app

Why so many "not needed" cells: complexity roughly stacks in this order — website (no per-user data) < e-commerce (products + checkout, but the platform runs the hard parts) < web app (your own accounts, data, and logic) < mobile (a web app plus app-store rules). Pick the row for the layer you're wondering about; if a column says "not needed," that project type genuinely skips it — that's not a gap in the plan.

Reference

The picks, by experience level

Opinionated, not exhaustive — chosen for being fast, well-maintained, and pleasant to work with, not just popular. Every name links to its official site or docs.

Goal: get something live fast, with as little config as possible.

Layer Website E-commerce Web app Mobile
Framework Plain HTML/CSS/JS Shopify Next.js Expo
Hosting Netlify — drag-and-drop, free HTTPS Built into Shopify Vercel — one command to deploy Expo Go for testing, EAS for store builds
Database Not needed Managed by Shopify Supabase — managed Postgres, included Same Supabase project, via API
Security Nothing to protect — static files only PCI compliance handled by Shopify Supabase Auth handles passwords & sessions for you Same Supabase Auth, via its mobile SDK
Payments Not needed Shopify Payments — toggle it on, no integration work Stripe Checkout — hosted page, a few lines of code Same Stripe Checkout, opened via WebView
Testing & CI/CD Click through it yourself before you deploy Shopify's built-in test-mode checkout Manual testing; Vercel auto-deploys on every push Manual testing on your own phone via Expo Go

Goal: more control over the result, still fast to build.

Layer Website E-commerce Web app Mobile
Framework Astro + Tailwind Shopify Hydrogen Next.js + TypeScript + Prisma Expo + EAS
Hosting Vercel or Netlify Shopify Oxygen (Hydrogen's built-in host) Railway — app + database together EAS Build + Submit to both app stores
Database Not needed Still managed by Shopify's backend Postgres via Railway Same Postgres, via your API
Security HTTPS automatic via host Storefront API tokens, scoped read-only Clerk for auth, secrets in env vars, parameterized queries via Prisma Same Clerk auth via SDK — never store tokens in plain storage
Payments Not needed Shopify Payments, or Stripe as a secondary gateway Stripe Elements — embedded, styled to match your app Stripe's React Native SDK, plus native Apple/Google Pay buttons
Testing & CI/CD Still mostly manual — low risk, low payoff to automate Manual checkout runs in Shopify's test mode Vitest for unit tests + GitHub Actions on every push EAS Build preview builds + manual device testing

Goal: performance and scale, full control over every layer.

Layer Website E-commerce Web app Mobile
Framework Astro or static Next.js export Medusa (self-hostable) or Hydrogen at scale Next.js App Router + tRPC React Native (bare) or native Swift/Kotlin
Hosting Cloudflare Pages — edge network, sub-100ms globally Self-hosted on Fly.io/Railway, or Shopify Oxygen Vercel or AWS, with a Redis caching layer Fastlane-driven CI/CD to both stores
Database Not needed Self-managed Postgres (Medusa) with backups Postgres + Redis, read replicas at scale Same backend, offline-first local cache on-device
Security CSP headers, Subresource Integrity PCI scope minimized via Stripe tokenization, signed webhooks Rate limiting, CSRF protection, dependency scanning (Dependabot or Snyk), secrets in a vault Certificate pinning, secure keychain storage for tokens
Payments Not needed Direct Stripe integration, bypassing platform fees, with webhook reconciliation Stripe with subscription billing and usage-based metering Native Apple Pay / Google Pay + Stripe, PCI SAQ A compliance scope
Testing & CI/CD Lighthouse CI gating every deploy Automated checkout-flow tests (Playwright) against a staging store Vitest/Jest + Playwright end-to-end, GitHub Actions gating every merge Detox end-to-end + Fastlane CI, TestFlight/internal test tracks

Reference

Tech Stack Explorer by Category

Explore what each technology category is responsible for, the recommended default, strong alternatives, and when each option makes sense. You do not need to use every tool.

Choose one primary tool for each responsibility. Alternatives are shown for learning and comparison — not as an installation checklist.

New here and don't know what applies to you? Filter by your project type first:

Reference

Beyond Pro: one excellent pick per category

For genuinely large-scale needs — most solo projects never reach this table, and that's correct, not a gap. One real answer per row, not five options to weigh, plus when it's actually worth reaching for.

CategoryExcellent pickReach for this when...
Backend framework NestJS Your Node backend outgrows a handful of API routes and needs real structure — modules, dependency injection, a shape bigger than one file
Analytics database TimescaleDB or ClickHouse You're storing time-series or event data at real volume — regular Postgres starts to strain on that specific shape of query
Search at scale OpenSearch Meilisearch's own limits show up — for most projects that's a long way off, so start there first
High-throughput queue Kafka You're processing well over a million events a day — below that, QStash or BullMQ is simpler and considerably cheaper
Container orchestration Docker always; Kubernetes only with a dedicated platform team You have multiple services and multiple people deploying them independently
Infrastructure as code Terraform Manually clicking through cloud consoles has become error-prone or you're managing more than one environment by hand
Monorepo tooling Turborepo You're maintaining a website, an app, and an API in one repository and builds are starting to feel slow
Observability at scale OpenTelemetry + Prometheus + Grafana + Loki Sentry alone stops answering "why is this slow," and you need "what's actually happening right now" too
Security scanning GitHub CodeQL or Snyk, alongside Dependabot You want automated vulnerability scanning on your own code, not just dependency version bumps
AI features Anthropic or OpenAI API + pgvector + LangGraph You're building retrieval or multi-step agent behavior, not just a single chat completion call
Regional payments Stripe/PayPal globally, plus a local gateway where it matters Your customers are concentrated in one region with a strongly preferred local payment method (e.g. FPX and DuitNow in Malaysia)

Reference

Head-to-head: the debates people actually search for

Short, opinionated verdicts for the comparisons beginners get stuck on most — not "it depends," an actual answer for where you're starting from.

DebateVerdict for a beginnerWhen the other choice actually wins
React vs Vue vs Svelte React — biggest ecosystem, most tutorials, and it's what Next.js is built on Vue if your team already knows it; Svelte if you want less boilerplate and don't need React's ecosystem
Next.js vs Remix vs Astro Next.js — most mature, most documented, default choice in this roadmap Astro if your site is mostly static content; Remix if you prefer its nested-routing model specifically
Supabase vs Firebase Supabase — real PostgreSQL underneath, easier to move off later if you outgrow it Firebase if you're mobile-first and want deep integration with Google's mobile SDKs
Cursor vs Windsurf vs Copilot None of these — start with Claude Code (terminal-based, works with any editor, most capable at multi-file changes) Windsurf or Cursor if you want the AI built into a full editor rather than a separate terminal tool
Vercel vs Cloudflare vs Netlify Vercel — built by the Next.js team, zero-config deploys for this stack Cloudflare Pages if you want the lowest cost at scale; Netlify if you're not using Next.js at all

Reference

System Workflows: Overview + All Four Journeys

A node-based diagram system covering Website, E-commerce, Web App, and Mobile App — rounded nodes, dotted grid, colored branches, moving data particles, and a plain-English + technology label on every node.

Part 1

Complete system overview

How the four systems connect to the shared backend, database, and external services. In beginner terms: your Website brings people in, your E-commerce system sells to them, your Web App is where your team manages everything, and your Mobile App gives customers the same experience on their phone — all four talk to the same backend, so nothing is duplicated.

Frontend Backend Database External service Automation

Part 2

Website workflow

A visitor lands on the site, browses, and fills out a contact form. The diagram follows what happens the instant they click submit — including what happens if the form has a mistake, and what happens if they leave without finishing.

Trigger Decision Success (true) path Error (false) path Abandonment path

Part 8 — Website

Step-by-step, in plain language

Every step from the diagram above, explained without assuming you already know what any of the technical words mean.

Part 3

E-commerce order flow

A customer browses, adds a product to cart, and pays. The diagram covers the full journey plus what happens when payment fails, the product is out of stock, or a refund is needed.

Trigger Decision Success (true) path Error / failure path

Part 6 — E-commerce

Step-by-step, in plain language

Part 4

Web app workflow

A user logs in, creates a record, and — if the record needs sign-off — a manager approves or rejects it. Covers login failure with account lockout, and the full approval branch.

Trigger Decision Success / approved path Error / rejected path

Part 6 — Web app

Step-by-step, in plain language

Part 5

Mobile app workflow (Flutter, Android + iOS)

Install through first action taken in the app, plus the four failure paths every mobile app needs: permission denied, offline, session expired, and request failure.

Trigger Decision Success path Error path Offline / permission / session path

Part 6 — Mobile app

Step-by-step, in plain language

Part 6

Automation table

Every automated step across all four systems, in the exact format requested: trigger, input, technology, action, database update, notification, success/failure result, retry behavior, and the security consideration that matters for it.

Part 7

Animation storyboard

The intended choreography for each workflow, mapped onto the actual nodes built above — written as a spec here rather than fully hand-animated frame-by-frame, since that's a real, separate engineering task beyond what the current particle-and-highlight system does automatically.

Part 15

Recommended learning order

Three different starting points depending on what you're building — the order matters more than the pace.

Glossary

Words used above