The Lovable Stack Starter Kit: Vite, React, Tailwind, shadcn/ui, Supabase
Search GitHub for "Lovable" and you will mostly find small experiments, tutorial forks, and repos whose last commit was six months ago — not a deep plugin ecosystem like WordPress or VS Code. That is an editorial finding from surveying the niche: the durable companion repos are stack-level starters that mirror what Lovable, Bolt, v0, and similar builders emit when you click export.
If you understand the stack, you can rebaseline a messy generated repo in an afternoon. If you do not, every builder feels like magic until the first bug in a file you never wrote.
The shared stack
- React — component model every AI coding tool trained on
- Vite — fast dev server and ESM-native builds; lighter than Next for many SPA prototypes
- Next.js — appears when builders assume SSR, API routes, or Vercel deploy; know which you actually need
- Tailwind CSS — utility classes the model can patch without inventing new stylesheets every turn
- shadcn/ui — copy-paste Radix-based components, not an opaque npm design system
- Supabase — auth, Postgres, storage for demos that need login on minute two
- TypeScript — increasingly default; keep strict mode on after eject
None of this is proprietary to Lovable. It is the 2025–2026 consensus stack for AI-generated front ends.
Why builders converge on this combo
LLMs produce better diffs when the ecosystem is predictable: Tailwind classes in JSX, components in a components/ui folder, and a single Supabase client module. shadcn/ui is especially agent-friendly because the source lives in your repo — the model edits Button.tsx like any other file instead of hallucinating props on a black-box library.
Vite keeps feedback loops fast. When an agent runs dev-server hot reload, you see mistakes immediately. That tight loop is why workshops pair Vite with agents even when production will eventually move to Next.
How to use this angle in a real project
- Prototype in Lovable, Bolt, or v0 for speed — optimize for learning and stakeholder demos, not clean Git history.
- Eject to Git early — before data models, env secrets, and component names accrue debt.
- Audit the export — delete unused shadcn components, dead routes, and duplicate utility files builders love to spawn.
- Rebase onto a clean starter if the generated repo is chaotic — see starter commands below.
- Keep building with Aider, Cline, or Cursor using project rules that match your stack.
- Wire CI — typecheck, lint, and test on every push before the agent can merge another sweeping change.
npm create vite@latest my-app -- --template react-ts
cd my-app
npm install
npx shadcn@latest init
# Add Supabase client + env vars
npm install @supabase/supabase-jsOfficial shadcn init flags change — follow current docs when you scaffold.
Folder layout agents handle well
After rebaseline, aim for:
src/components/ui/— shadcn primitivessrc/components/— feature componentssrc/lib/— Supabase client, helpers, constantssrc/pages/orsrc/routes/— one obvious place for routessrc/types/— generated DB types if using Supabase
Document this layout in AGENTS.md or .cursorrules. Agents follow explicit paths better than implied conventions.
Vite vs Next: when to switch
Stay on Vite when you are building a client-heavy SPA, an internal tool behind auth, or a demo that deploys to static hosting plus Supabase. Move to Next when you need SEO-critical server rendering, incremental static regeneration, or image optimization at scale without wiring it yourself.
Many Lovable exports default to Vite + React Router. Do not migrate to Next solely because it sounds more "professional" — migration cost is real and agents will rewrite half your data fetching in the process.
shadcn/ui maintenance tips
- Upgrade components deliberately — diff
components/uiwhen CLI updates - Customize tokens in
tailwind.configand CSS variables, not by forking every button - Wrap shadcn primitives in your own
AppButtonif brand styles diverge widely - Do not install every component up front — add on demand to keep bundle size sane
Supabase on the same stack
Once the front end is clean, pair it with the backend practices in our Supabase for Lovable projects post: RLS first, migrations in Git, typed client, staging project. The stack is incomplete if auth works in demo but leaks data under inspection.
Open-source builders nearby
- Open Lovable — scrape and clone sites into React with Firecrawl
- bolt.diy — self-hostable Bolt.new-style browser builder
- gpt-engineer — historical lineage toward Lovable-style codegen
- System prompts collection — research how builders instruct models (handle ethically)
WordPress still in the mix?
Many agencies prototype the marketing app or customer portal in a builder, then keep the CMS on WordPress because editors already know it, SEO plugins are mature, and ACF field groups encode ten years of business logic.
That hybrid split works when roles are clear: developers own the Vite + Supabase product; marketers own WordPress pages. The friction appears during content sprints — forty location pages need new hero copy in an ACF field, and nobody wants forty admin tabs.
For ACF bulk edits on those pages, ship editors Quickfields Bulk Editor for ACF — spreadsheet-style editing with autosave while the React app stays on the modern stack.
When this stack is the wrong choice
- Team is PHP-only WordPress plugin shop with no React capacity — do not force Vite because a builder demo looked cool
- Mobile-first product that should be React Native or Flutter from day one
- Hard real-time gaming or media pipelines — you need purpose-built infra, not a Supabase todo demo grown up
- Strict design system in another framework (SvelteKit, Angular) — rebaseline onto that stack instead of fighting agent defaults
FAQ
Is there an official Lovable starter repo? Not one with long-term maintenance guarantees. Fork vetted Vite + shadcn templates instead.
How do I stop agents from breaking Tailwind config? Lock critical theme extensions in rules; review tailwind.config in CI.
Can I use pnpm throughout? Yes — match lockfile choice across devs; builders sometimes emit npm — standardize after export.