Rails + Tailwind + Docker rules for AI coding agents
Full stack: Ruby on Rails + Tailwind CSS v4 + Docker
Ready-to-commit rules for Ruby on Rails + Tailwind CSS v4 + Docker in every major format: AGENTS.md (Codex, Cursor, Copilot), CLAUDE.md (Claude Code), Cursor .mdc project rules, legacy .cursorrules, Copilot instructions, Windsurf rules and GEMINI.md. Ruby on Rails 8 with Hotwire and Tailwind.
Last reviewed 2026-10-21 · Customise in the generator · Raw: AGENTS.md, CLAUDE.md
Agents reach for React when Turbo and Stimulus would do, and edit schema.rb directly.
Generated files
# AGENTS.md - this project
Instructions for AI coding agents working in this repository.
## Project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
## Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
## Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
## Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
## Reference docs
- [Rails guides](https://guides.rubyonrails.org)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Dockerfile best practices](https://docs.docker.com/build/building/best-practices/)
# CLAUDE.md - this project
Project instructions for Claude Code.
## Project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
## Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
## Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
## Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
## Reference docs
- [Rails guides](https://guides.rubyonrails.org)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Dockerfile best practices](https://docs.docker.com/build/building/best-practices/)
---
description: "Core rules for this project"
alwaysApply: true
---
# this project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
---
description: "Ruby on Rails conventions: Ruby on Rails app with Hotwire."
globs: app/**/*.rb, app/**/*.erb, config/**/*.rb, db/**/*.rb
alwaysApply: false
---
# Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
Docs: https://guides.rubyonrails.org
---
description: "Tailwind CSS v4 conventions: Utility-first styling with Tailwind CSS v4."
globs: **/*.css, **/*.tsx, **/*.vue, **/*.svelte, **/*.astro, **/*.html, **/*.blade.php, **/*.erb
alwaysApply: false
---
# Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
Docs: https://tailwindcss.com/docs
---
description: "Docker conventions: Containerised builds and local services with Docker."
globs: Dockerfile, **/Dockerfile, compose.yaml, docker-compose.yml, .dockerignore
alwaysApply: false
---
# Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
Docs: https://docs.docker.com/build/building/best-practices/
# Cursor rules - this project
You are an expert Ruby on Rails, Tailwind CSS v4, Docker engineer working on this codebase. Follow these rules.
## Project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
## Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
## Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
## Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
## Reference docs
- [Rails guides](https://guides.rubyonrails.org)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Dockerfile best practices](https://docs.docker.com/build/building/best-practices/)
# Copilot instructions - this project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
---
applyTo: "app/**/*.rb,app/**/*.erb,config/**/*.rb,db/**/*.rb"
---
# Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
---
applyTo: "**/*.css,**/*.tsx,**/*.vue,**/*.svelte,**/*.astro,**/*.html,**/*.blade.php,**/*.erb"
---
# Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
---
applyTo: "Dockerfile,**/Dockerfile,compose.yaml,docker-compose.yml,.dockerignore"
---
# Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
---
trigger: always_on
---
# this project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
---
trigger: glob
globs: app/**/*.rb, app/**/*.erb, config/**/*.rb, db/**/*.rb
---
# Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
---
trigger: glob
globs: **/*.css, **/*.tsx, **/*.vue, **/*.svelte, **/*.astro, **/*.html, **/*.blade.php, **/*.erb
---
# Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
---
trigger: glob
globs: Dockerfile, **/Dockerfile, compose.yaml, docker-compose.yml, .dockerignore
---
# Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
# GEMINI.md - this project
Project context for Gemini CLI.
## Project
A Ruby on Rails + Tailwind CSS v4 + Docker project.
Stack: Ruby on Rails, Tailwind CSS v4, Docker.
## Commands
- Dev server: `bin/dev`
- Generate migration: `bin/rails generate migration <Name>`
- Migrate: `bin/rails db:migrate`
- Tests: `bin/rails test`
- Lint: `bin/rubocop`
- Local services: `docker compose up -d`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
## Ruby on Rails
- Follow Rails conventions (naming, RESTful routes, `resources`) before inventing structure.
- Use strong parameters (`params.expect` in Rails 8, `params.require(...).permit(...)` before) in every controller that writes data.
- Put validations on the model; keep controllers thin.
- Avoid N+1 queries with `includes` / `preload`.
- Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit `db/schema.rb` by hand.
- Background work goes in Active Job (Solid Queue by default in Rails 8).
## Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
## Docker
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a `.dockerignore` that excludes `.git`, `node_modules`, `.env` and build output.
- Never bake secrets into images; pass them at runtime.
## Reference docs
- [Rails guides](https://guides.rubyonrails.org)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Dockerfile best practices](https://docs.docker.com/build/building/best-practices/)
Commands your agent should run
| Task | Command |
|---|---|
| Dev server | bin/dev |
| Generate migration | bin/rails generate migration <Name> |
| Migrate | bin/rails db:migrate |
| Tests | bin/rails test |
| Lint | bin/rubocop |
| Local services | docker compose up -d |
What the rules cover
Ruby on Rails
Ruby on Rails app with Hotwire. Scoped to app/**/*.rb, app/**/*.erb, config/**/*.rb, db/**/*.rb in Cursor, Copilot and Windsurf.
- Follow Rails conventions (naming, RESTful routes,
resources) before inventing structure. - Use strong parameters (
params.expectin Rails 8,params.require(...).permit(...)before) in every controller that writes data. - Put validations on the model; keep controllers thin.
- Avoid N+1 queries with
includes/preload. - Use Hotwire (Turbo + Stimulus) for interactivity before adding a JS framework.
- Generate schema changes with migrations; never edit
db/schema.rbby hand. - Background work goes in Active Job (Solid Queue by default in Rails 8).
Source docs: Rails guides
Tailwind CSS v4
Utility-first styling with Tailwind CSS v4. Scoped to **/*.css, **/*.tsx, **/*.vue, **/*.svelte, **/*.astro, **/*.html, **/*.blade.php, **/*.erb in Cursor, Copilot and Windsurf.
- Tailwind v4 is configured in CSS:
@import "tailwindcss";plus@theme { ... }for design tokens. Do not create atailwind.config.jsunless the project already has one. - Use theme tokens (colors, spacing) instead of arbitrary values like
w-[37px]. - Build responsive layouts mobile-first with
sm:,md:,lg:prefixes. - Extract repeated class lists into components, not
@applychains. - Support dark mode with the
dark:variant when the project uses it.
Source docs: Tailwind CSS docs
Docker
Containerised builds and local services with Docker. Scoped to Dockerfile, **/Dockerfile, compose.yaml, docker-compose.yml, .dockerignore in Cursor, Copilot and Windsurf.
- Use multi-stage builds and slim, pinned base images.
- Run the app as a non-root user in the final image.
- Keep a
.dockerignorethat excludes.git,node_modules,.envand build output. - Never bake secrets into images; pass them at runtime.
Source docs: Dockerfile best practices
How to install
- Copy
AGENTS.mdto your repo root. That covers Codex, Cursor, GitHub Copilot and most other agents. - Using Claude Code? Add a
CLAUDE.mdwith the single line@AGENTS.md, or use the standalone CLAUDE.md tab above. - Want rules that only load for certain files in Cursor? Add the
.cursor/rules/*.mdcfiles. - Commit the files so your whole team (and every agent) shares them.
FAQ
Where do I put the AGENTS.md for Ruby on Rails + Tailwind CSS v4 + Docker?
Save it as AGENTS.md in the root of your repository, next to your main config file. Codex, Cursor and GitHub Copilot pick it up automatically. For Claude Code, add a CLAUDE.md containing @AGENTS.md (or use the standalone CLAUDE.md on this page).
What is the most common mistake AI agents make with Ruby on Rails?
Agents reach for React when Turbo and Stimulus would do, and edit schema.rb directly.
Which commands should the agent run to check its work?
For this stack: bin/dev, bin/rails generate migration <Name>, bin/rails db:migrate, bin/rails test. They are listed in the generated files so the agent runs them before finishing a task.
Do these Ruby on Rails + Tailwind CSS v4 + Docker rules work with Cursor and Claude Code?
Yes. This page includes the same rules as AGENTS.md, CLAUDE.md, Cursor .mdc project rules, a legacy .cursorrules file, GitHub Copilot instructions, Windsurf rules and GEMINI.md.
Can I customise these rules?
Yes. Open this stack in the generator to add or remove libraries, set your project name and package manager, switch beginner explanations on, and download everything as a zip.
Related stacks
Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Supabase + Zod validation
The default vibe-coding SaaS stack: Next.js App Router, Supabase for auth and Postgres, Tailwind and shadcn/ui for the interface.
Next.js (App Router) + Tailwind CSS v4
A plain Next.js + TypeScript + Tailwind v4 starter, the most common front-end setup in 2026.
Next.js (App Router) + Tailwind CSS v4 + Prisma + Stripe payments + Zod validation
A paid SaaS on Next.js with Prisma and Stripe subscriptions.
Next.js (App Router) + Tailwind CSS v4 + Drizzle ORM + Clerk auth + Zod validation
Next.js with Clerk for auth and Drizzle ORM on Postgres: fast to build, type-safe end to end.
Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Vercel AI SDK + Zod validation
Build an AI chat app or agent UI with Next.js and the Vercel AI SDK.
Next.js (App Router) + Tailwind CSS v4 + Supabase + Stripe payments + Zod validation + Vitest
The full indie-hacker SaaS kit: auth, database, payments and tests.