Scaffold a Go API + React frontend + admin panel in one command. Auth, OAuth, file storage, jobs, AI, observability, OWASP-2025 hardened — meticulously optimized for production. No boilerplate required.
$curl -fsSL https://gritframework.dev/install.sh | sh
$iwr -useb https://gritframework.dev/install.ps1 | iex
Detects an existing install and runs grit update; otherwise pulls the right binary for your OS/arch. Prefer Go? go install github.com/MUKE-coder/grit/v3/cmd/grit@latest
package handlersimport ("net/http""github.com/gin-gonic/gin""myapp/internal/authz")func (h *ProductHandler) List(c *gin.Context) {var products []models.Producth.DB.Where("user_id = ?", c.GetString("user_id")).Find(&products)c.JSON(http.StatusOK, gin.H{"data": products,})}
import { useQuery } from '@tanstack/react-query'import { api } from '@/lib/api'export function useProducts() {return useQuery({queryKey: ['products'],queryFn: async () => {const res = await api.get('/api/products')return res.data.data},})}
Grit ships with production-ready features that accelerate development and make building full-stack apps in Go a breeze.
GRITA full-stack meta-framework that turns one CLI command into a working Go API, React frontend, and admin panel — with everything you usually wire up by hand already wired up.
Pick your architecture (single binary, monorepo, mobile, desktop) and one command scaffolds the entire repo — Go API, React frontend, admin panel, Docker, CI, all wired together.
Describe a resource (Product · Order · Invoice). Grit emits the Go model, service, handler, routes, Zod schema, React hooks, and admin page — typed end-to-end, no glue code.
grit deploy cross-compiles, uploads, sets up systemd, and configures Caddy with auto-TLS. Or push to git and let your platform of choice run the bundled Dockerfile.
What you get out of the box
The same Go API and the same generated code ship as a web app, a desktop binary, and a mobile app. Pick one. Or ship all three from the same repo.
Web
Next.js · Vite · TanStack
--single / --tripleDesktop
Wails · Frameless · GORM
--desktopMobile
Expo · React Native
--mobileWeb — built via grit new --triple --vite
Acme · DashboardREVENUE
$84.2K
▲ +12%
USERS
1,284
▲ +8%
CONVERSION
3.2%
▲ +0.4
NPS
72
▲ +5
Revenue · 30 days
Activity
Desktop — grit new-desktop
AcmeDashboard
Revenue
$84.2K
Users
1,284
NPS
72
Last 12 days · trending +18%
Mobile — --mobile
Good morning
Acme — Sales
Revenue
$84.2K
New users
1,284
Activity
Same Go backend. Same generated React. Same auth.
Pick the targets you need — the API doesn't change.
Grit is the chip on the board. Auth, jobs, storage, AI, observability, webhooks, realtime, and cache all light up the moment you scaffold, so you spend your time on product not plumbing.
JWT · OAuth · 2FA
100+ models · stream
S3 · R2 · MinIO
asynq · retries
Stripe · HMAC · replay
WebSockets · channels
middleware · TTL
Resend · templates
From git push to a running app with auth, storage, jobs, realtime, and AI all on the same wire — no glue code, no dashboard tabs to hunt through.

Grit has opinions on everything: routing, queues, auth, storage, AI. That's thousands of decisions an AI agent doesn't have to make. The result? Clean Go code that anyone — human or assistant — can extend.
func (h *AuthHandler) Login(c *gin.Context) {var req loginRequestc.ShouldBindJSON(&req)var user models.Userh.DB.Where("email = ?", req.Email).First(&user)if !user.CheckPassword(req.Password) {c.JSON(401, gin.H{"error": "Invalid credentials",})return}tokens, _ := h.AuthService.GenerateTokenPair(user.ID, user.Email, user.Role)c.JSON(200, gin.H{"data": gin.H{"user": user, "tokens": tokens},})}
Pulse gives full observability — find errors and performance issues before your team does. Mounted at /pulse/ui on every Grit project.
Easily craft frontend experiences with React, TanStack Router, Vue, or Svelte alongside the Grit API. Or accelerate development with a generated Next.js admin panel.
Explore front-endsPick the scaffold that fits — embed your SPA in the binary, or split web / admin / API into a monorepo. Same generators across all of them.
Grit works with Gin, GORM, asynq, Resend, Sentinel, Pulse, and a curated stack designed to play together — so you always have what your team adores.
Ship a Next.js SaaS or a Vite + TanStack Router SPA. Generated hooks + types match either, so swapping the frontend never rewrites your API.
Grit streamlines form management with simple submissions, intuitive slots and props, and fully typed event handlers for a seamless experience.
Enjoy out-of-the-box security headers, percentile latency tracking, and a Lighthouse-ready frontend the moment you run grit new.
Redis-backed asynq queue. Image processing, email sending, scheduled cleanup — wired in.
WebSocket fan-out at /api/ws. SendToUser and Broadcast helpers; useRealtimeEvent hook on the client.
Auto-attached on unsafe methods. Replay the original 2xx response for 24h — safe retries everywhere.
Every generated resource ships /export?format=xlsx. Streaming CSV, chunked XLSX, constant memory.
internal/pdf with a worked Invoice template — typeset, branded, ready to email or download.
In-memory engine, sticky bucketing, percentage rollouts, allow/blocklists, realtime admin push.
Local SQLite mirror + outbox with squash semantics. Click Sync, resolve field-level conflicts, push.
Every mutation is appended to a SHA-256 hash chain. Verify integrity from the admin in one click.
a3f1...c92POST /api/invoicesb9d2...44ePUT /api/users/42c1e7...8afDELETE /api/blogs/9Sticky-page pagination on every generated list endpoint. No skipped rows when data shifts mid-scroll.
Everything Included
Every Grit project ships with production-ready features out of the box.
JWT, OAuth2, TOTP, backup codes, trusted devices
POST /api/auth/register → JWT tokensPOST /api/auth/login → JWT tokens (or totp_required + pending_token)POST /api/auth/totp/verify → Exchange TOTP code for JWTGET /api/auth/me → Current user (protected)GET /api/auth/oauth/:provider → Google, GitHub social login
DataTable, FormBuilder, dashboard widgets, resource definitions.
One API key, hundreds of models via Vercel AI Gateway.
anthropic/claude-sonnet-4-6Presigned URL uploads to S3, R2, or MinIO. Image processing. Progress tracking.
One command generates Go + React + admin in seconds
$ grit generate resource Product --fields "name:string,price:float,stock:int"✓ internal/models/product.go✓ internal/services/product.go✓ internal/handlers/product.go✓ apps/admin/src/routes/_dashboard/resources/products.tsx✓ Injected model, handler, routes, resource registry✅ Resource Product generated successfully!
Flexible Architecture
Coming from Laravel? Choose Single. MERN stack? Choose Double. Building a SaaS? Choose Triple.
Go + embedded SPA
--singleWeb + API monorepo
--doubleWeb + Admin + API
--tripleGo backend only
--apiAPI + Expo
--mobileOne-Command Deploy
grit deploy builds your app, uploads via SSH, configures systemd, and sets up Caddy with auto-TLS.
$ grit deploy --host deploy@server.com --domain myapp.com→ Building frontend...→ Building Go binary (linux/amd64)...→ Uploading binary to /opt/myapp/→ Setting up systemd service...→ Configuring Caddy reverse proxy...✓ Deployment successful!Live at: https://myapp.com
What Ships With Every Project
Register, login, refresh, OAuth2 social login (Google, GitHub). Role-based access control.
TOTP authenticator app, 10 backup codes, trusted devices with 30-day sliding cookie.
Presigned URL uploads to S3, R2, or MinIO. Image processing. Progress tracking.
Transactional emails with Go HTML templates. Dev uses Mailhog.
Redis-backed job queue via asynq. Image processing, email sending.
Cache middleware for any route. Set/Get/Delete. Configurable TTL.
New in v3.23
Reliability, auditability, and security — usually a year of integration work — wired into every scaffolded project.
Git-style: work locally → click Sync → resolve conflicts → push
Local SQLite mirror + outbox with squash semantics. Manual Sync button. Field-level conflict dialog when the server moved on. Versioned writes with optimistic-lock. Read the guide →
grit new app --triple --vite --desktopEvery authenticated mutation auto-logged. SHA-256 hash chain proves the log wasn't edited via SQL.
GET /admin/activity/integritysafefetch.Get blocks private/IMDS IPs with DNS-rebind defence. authz.MustOwn returns 404 to prevent enumeration.
OWASP A01 closedIn-memory engine, sticky bucketing, percentage rollouts, allow/blocklists, realtime push when admin toggles.
flags.IsEnabled(c, "new_ui")The "every business app needs this" primitives, baked in
Framework Comparison
| Feature | Grit | Next.js | Laravel |
|---|---|---|---|
| Go Backend | |||
| React Frontend | |||
| Admin Panel | |||
| Code Generator | |||
| JWT + OAuth2 | |||
| Two-Factor Auth | |||
| File Storage | |||
| Background Jobs | |||
| AI Integration | |||
| One-Command Deploy | |||
| Multiple Architectures | |||
| Desktop App | |||
| Offline-First Sync | |||
| Audit Log + Hash Chain | |||
| Feature Flags | |||
| OWASP 2025 Hardened |
“Grit's code generator and Sentinel integration meant we shipped a secure WAF + audit dashboard the same week we started the project.”
“Grit is our sourdough starter and multitool for full-stack projects large and small. The single-app mode in particular is fresh and useful.”
“Grit takes the pain out of building modern, scalable Go web apps. The tabbed code generator is a love-letter to senior devs.”
“Grit's elegance, performance, and developer experience are unmatched for Go. The generated code is clean enough to teach from.”
“The Grit ecosystem has been integral to the success of our product. The framework lets us move fast and ship regularly without dropping a single SLO.”
“Grit is a breath of fresh air in the Go ecosystem, with a brilliant community around it. Generators that actually feel like Rails.”
“The framework, the ecosystem, and the community — it's the perfect package for shipping production Go apps.”
Built With Grit
Projects and products built with the Grit framework.
Self-hostable creator platform. Website builder, email marketing, courses, community.
Competitive Go coding platform with real-time WebSocket battles, ELO ranking, and sandbox execution.
Visual database browser for GORM. View tables, run queries, export data. Embedded in every Grit project.
Self-hosted observability SDK. Request tracing, DB monitoring, runtime metrics, Prometheus export.
WAF + rate limiting + brute-force protection with real-time threat dashboard.
Zero-annotation API documentation generator for Gin. Auto-generates OpenAPI spec with Scalar UI.
“I built Grit because I was tired of spending weeks setting up the same boilerplate for every project. Auth, admin panels, file uploads, background jobs — they should just work. Now they do. One command, and you have a production-ready app. That's the framework I wanted to use.”
FAQ
Basic Go knowledge helps, but Grit generates most of the code for you. The generated code follows clear patterns (handler → service → model) that are easy to extend. If you know any backend language, you'll pick it up fast.
Grit is designed for greenfield projects. It scaffolds the full project structure. However, you can use grit generate resource in existing Grit projects to add new features incrementally.
Yes. Every scaffolded project includes JWT auth, RBAC, rate limiting (Sentinel), observability (Pulse), error handling, CORS, gzip compression, connection pooling, and graceful shutdown. It's designed for production from day one.
Single embeds the React SPA into the Go binary via go:embed — one file to deploy. Triple is a Turborepo monorepo with separate web app, admin panel, and API — ideal for teams and complex products.
The backend (Go API) is identical regardless of frontend choice. You'd need to rebuild the frontend pages, but all hooks, types, and API patterns are the same. The admin panel components are also framework-agnostic React.
grit deploy is for self-hosted deployments. It SSHs to your server, uploads the binary, configures systemd, and sets up Caddy with auto-TLS. For Vercel/Railway, just push to git — the Dockerfile is included.
Yes, Grit is fully open source under the MIT license. The CLI, all plugins, and the documentation are on GitHub.
Install the CLI and scaffold your first project. Or dive into the docs to plan your architecture first.
go install github.com/MUKE-coder/grit/v3/cmd/grit@latestgrit new my-app