vibe-stack

skill
Guvenlik Denetimi
Gecti
Health Gecti
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 31 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

The SaaS starter where Claude writes the rest. AI-first, full-stack: Next.js 16, Better Auth, Drizzle/Postgres, tRPC, Polar billing, R2, Dokploy. Every Claude Code skill vendored. Zero-key boot.

README.md
vibestack

vibestack

The SaaS starter where Claude writes the rest.

An opinionated, AI-first SaaS starter. Full stack pre-wired, every infra decision pre-made, every Claude Code skill vendored in the repo. You bring the business logic; Claude does the plumbing.

Repo
Stars
CI
License: MIT

Repository · Quickstart · Workflow · Deploy


npx create-vibestack my-saas

One command, both crowds:

  • Devs — clone, pnpm dev, ship.
  • Vibe-coders — open Claude Code, run /setup, describe your idea, let the workflow drive.

Same repo. Same skills. Same outcome.

What's in the box

  • Next.js 16 + React 19 + App Router — three apps: web, marketing, admin
  • Better Auth — email/password, magic-link, Google, passkeys, 2FA, orgs, admin role, rate-limit
  • Postgres + Drizzle, tRPC v11 + TanStack Query, Zod v4
  • Tailwind v4 + shadcn + dark mode
  • Polar.sh billing wired end-to-end (sandbox + prod)
  • Resend + React Email, Cloudflare R2 storage + nightly pg_dump → R2
  • PostHog + GA4 analytics, Sentry errors, next-intl (EN + FR)
  • Dokploy + docker-compose deploy, GitHub Actions CI
  • Biome v2, Vitest + Playwright + a11y suite

Full ADR set under docs/adr/ — decisions you don't have to re-make.

What's not in the box

  • App-level AI features. The stack is AI-native dev, not an AI SaaS template. Add the ai SDK or any model wrapper when you build your features.
  • A name. npx create-vibestack asks for one, or run pnpm rename after cloning.
  • A wall of required keys. Zero-key boot: the app runs with just a database and an auth secret. Every third-party integration is optional and degrades gracefully until you add its key.

Quickstart

npx create-vibestack my-saas

The wizard clones the template and walks you through:

  1. Product name — renames the @vibestack/* scope and every brand string (lockfile-safe).
  2. Feature toggles — email, billing, storage, Google sign-in, analytics, Sentry, French locale, video swarm. Pick what you want; skip the rest.
  3. API keys for what you enabled — every one skippable, signup URL printed next to it.
  4. Writes .env with a generated BETTER_AUTH_SECRET.
  5. Offers to run pnpm install, start Postgres (Docker), and push the schema.

Then pnpm dev gives you three apps:

URL App
http://localhost:3001 your authed product
http://localhost:3000 marketing site + docs + blog
http://localhost:3002 admin dashboard

No keys? No problem. Auth emails (magic links, verification, password reset) print to your terminal until you add a Resend key. Billing UI stays hidden until you add Polar. File storage only complains if you actually use it. /api/health reports unconfigured optional services as disabled.

Manual path (dev track)

git clone https://github.com/f-amine/vibe-stack.git my-saas
cd my-saas
pnpm install
pnpm db:start
cp .env.example .env          # only core vars needed to boot
pnpm db:push
pnpm dev

Core vars: DATABASE_URL (matches pnpm db:start), BETTER_AUTH_SECRET (openssl rand -base64 32), and the localhost URL vars. That's a fully working app — sign-up, sessions, orgs, the lot. Add other keys whenever the feature matters.

Prefer the wizard inside an existing clone? pnpm init:app runs the same flow. Full env reference: .claude/skills/setup/env-reference.md.

The vibestack workflow

Open Claude Code in the repo. Skills come vendored, no install step:

new feature   /grill-with-docs  →  /to-prd  →  /to-issues  →  /tdd  →  /review
bug           /diagnose  →  /tdd
refactor      /improve-codebase-architecture  →  ADR draft  →  /to-issues
new idea      /prototype  (throwaway, to flush out the design)
UI / design   /impeccable  (mandatory for anything visual)
content       /blog-writer  ·  /video-writer

Each skill is a short, opinionated playbook. They share a domain model (CONTEXT.md) and a decision log (docs/adr/) so multiple Claude sessions stay coherent. Full catalogue: .claude/skills/README.md.

Common commands

pnpm dev            # turbo dev across all apps  (dev:web / dev:marketing / dev:admin for one)
pnpm build          # turbo build
pnpm check          # biome format + lint
pnpm typecheck      # tsc across packages
pnpm test           # vitest
pnpm test:e2e       # playwright

pnpm db:start       # docker postgres
pnpm db:push        # apply schema directly (dev)
pnpm db:generate    # generate SQL migration
pnpm db:migrate     # apply migrations (prod)
pnpm db:studio      # drizzle studio
pnpm db:seed        # seed demo data
pnpm auth:generate  # regen auth schema after editing packages/auth plugins
pnpm email:dev      # react-email preview at :3010

pnpm init:app       # interactive first-run wizard (name, features, keys, .env)
pnpm rename <name>  # rename the @vibestack scope + brand strings only
pnpm skills:update  # pull latest upstream skills

Renaming

npx create-vibestack and pnpm init:app do this first. To rename only:

pnpm rename my-product
pnpm install   # regenerates the lockfile for the new scope

Unlike a raw sed, pnpm rename never touches pnpm-lock.yaml, skips node_modules / build output / binaries, and handles case variants. Review the diff before committing.

Deploying with Dokploy

  1. Provision a small VPS (Hetzner / DigitalOcean / Vultr) and install Dokploy.
  2. Point a Compose service at docker-compose.prod.yml.
  3. Set env in the Dokploy Environment tab — see docs/deploy/production-env.md for required vs optional.
  4. Map a domain to each app (container ports: marketing 3000, web 3001, admin 3002) and enable Let's Encrypt.

The stack runs migrations on deploy (a healthcheck-gated migrate service) and ships a nightly pg_dump → R2 backup (backup container, 30-day retention; restore with ./scripts/restore-r2.sh).

Behind Cloudflare? Its free SSL covers one subdomain level (*.example.com). Keep app hosts one level deep (e.g. app.example.com, not app.x.example.com) or grey-cloud the deep ones. Details in docs/deploy/production-env.md.

Power-user: 24/7 autonomous loop

Optional. A long-running Claude swarm that picks up triaged issues, implements them, and opens PRs. Runbook and risks: .ruflo/README.md.

Hard rules

  • Don't touch .env, .env.*, *.key, *.pem, secrets/*.
  • Don't bump major dep versions without an ADR.
  • Branch → PR → CI → squash merge. Never push to master, never --no-verify.

Credits

Initial scaffold via Better-T-Stack. Workflow skills vendored from mattpocock/skills. Logos via svgl.app. Extended into vibestack with marketing/admin apps, Fumadocs, Resend, R2, PostHog/GA, Sentry, next-intl, Dokploy compose + R2 backup, and the full Claude Code skill set.

Yorumlar (0)

Sonuc bulunamadi