Pewarta Proxy

📋 Server Request & Proxy Logs

Loading active proxy settings...
Developed by Khairul Adha (adhexa.id)
Mengambil log server...

⚙️ Pengaturan Proxy Target

The full-stack framework for Go & React. Batteries included.

Describe a resource once. Grit writes the Go model, API, migrations, TypeScript types, React hooks and admin screen, then ships it to the web, desktop and mobile from one repo.

Get startedWhy Grit
curl -fsSL https://gritframework.dev/install.sh | sh
~/contacts · Next.js + admin + Go API
  1. 1grit new contacts --triple --nextAPI, web app and admin panel, with auth already working
  2. 2cd contacts
  3. 3pnpm installThe workspace, once
  4. 4grit generate resource Group \ --fields "name:string,description:text"Model, migration, API, types and an admin screen
  5. 5grit generate resource Contact --fields \ "name:string,email:email,phone:tel,\ photo:file:image,group:belongs_to:Group"A photo upload and a group picker, wired to the Group above
  6. 6grit startEverything, in parallel
Opens localhost:3000 for the app, :3001 for the admin panel

Built on tools you already trust

{ How it works }

Seven commands. A working application.

The commands in the order you actually run them, and what each one leaves behind.

myapp
$
The generated sign-in page, with email and password fields and social login buttons

Sign in, register, reset, verify. Generated, themed, working.

{ Batteries included }

The parts you always end up building anyway.

In the box, wired together and documented, down to what isn't shipped.

Identity

Authentication, finished.

Access and refresh tokens in HttpOnly cookies, OAuth, TOTP two-factor, passkeys and sessions you can revoke.

Enter your 6-digit code

15 min
access token
168 h
refresh token
5 / 15 min
login rate limit

Roles & permissions

Roles are rows, not code.

Every generated resource registers its own permissions.

Which actions each role has on the Products resource
ProductsViewCreateEditDelete
adminyesyesyesyes
editoryesyesyesno
vieweryesnonono

Jobs & cron

Work that happens later.

Background jobs on asynq and Redis, cron schedules, durable workflows.

send_welcome_email

0 3 * * * nightly_backup

asynq · retries · dead letter

File storage

Uploads that know what they accept.

Presigned URLs, server-enforced accept lists.

contact-photo.webp 2.4 MB

S3 · R2 · MinIO

Realtime

Live, on every client.

A realtime hub that pushes updates to web, admin, mobile and desktop.

3 online

contact.updated · Ada edited “Kampala office”

AI gateway

One gateway. 100+ models.

With the same auth, rate limits and logging as the rest of your API.

POST /api/ai/chatGatewayClaude · GPT · Gemini · local

Pulse observability

Know what every route is doing.

/pulse/ui
124.2K
requests
98.6%
2xx
125 ms
fastest

Admin panel

A back office per resource.

Filters, export, grid entry, stats, trash and restore. Nine themes.

A generated admin table
ContactGroupStatus
Ada NakatoKampalaActive
Musa OkelloNairobiInvited
Jane AtimRemoteActive

Mail & payments

Email and billing, wired.

  • Resend
  • Stripe plugin
  • Webhooks

50+

batteries: feature flags, optimistic locking, i18n, multi-tenant, push, offline-first desktop…

See them all

Security & compliance

Hardened by default.

OWASP Top 10:2025, a WAF, a hash-chained audit log, and GDPR export and erasure.

Every request, on its way in

  1. request
  2. WAF
  3. rate limit
  4. CSRF
  5. auth
  6. RBAC
  7. handler
  8. GORM
  9. audit log

{ Make it yours }

One file describes the whole screen.

The generator writes it. Everything after that is yours to edit: the table, the form, the stats cards and where it sits in the sidebar.

apps/admin/resources/products.tsgenerated, then yours
import { defineResource } from "@/lib/resource";
export const productResource = defineResource({
name: "Product",
slug: "products",
endpoint: "/api/products",
icon: "Package",
label: { singular: "Product", plural: "Products" },
// sheet · modal · page · modal-steps · page-steps
formView: "sheet",
// Sidebar placement
group: "Catalog", // section heading to sit under
adminOnly: false, // hide from non-admins
hidden: false, // keep routable, drop from the sidebar
table: { /* columns, filters, actions, export, import */ },
form: { /* fields, layout, steps, groups */ },
// Four auto stat cards, or your own
stats: true,
dashboard: { enabled: true },
});
Form views (5)
sheetmodalpagemodal-stepspage-steps
Table actions (5)
createvieweditdeleteexport

grit generate resource writes this file for you. Everything past that point is ordinary TypeScript you own. There is no regeneration step that overwrites your edits.

{ Every platform }

One framework. Every platform.

Web, desktop, mobile and a documented API, from one Go backend and one set of generated types. Every screenshot below is a real generated project, next to the commands that produce it.

localhost:3001/dashboard
Web: A Next.js app and a real admin panel

A screenshot of a generated project, not a mockup.

A Next.js app and a real admin panel

Two front-ends against one Go API: a public web app and a resource-driven admin panel with tables, filters, multi-step forms and RBAC already wired up.

  1. 1
    grit new myapp --tripleGo API + web app + admin panel
  2. 2
    cd myapp && docker compose up -dPostgres, Redis, MinIO, Mailhog
  3. 3
    pnpm install && grit migrate && grit seeddeps, tables, a demo admin login
  4. 4
    grit startall three, one terminal

Admin on :3001, web on :3000, API on :8080.

{ Authentication }

Auth you would otherwise spend a month on.

Sign-in pages, a JWT pair, revocable server-side sessions, Google and GitHub, passkeys, emailed sign-in links, a second factor by app or by email with backup codes, database-backed roles, and enterprise SSO over OIDC or SAML. Working on the first run, not a tutorial to follow.

localhost:3001/login
Sign in: The pages you would have built on day one

The pages you would have built on day one

Login, register, forgot-password and reset-password, themed with the rest of the admin and wired to a Go API that already hashes with bcrypt and issues a JWT pair.

  • Access token (15m) + refresh token (168h), both configurable
  • HttpOnly cookies for the browser, Bearer headers for mobile and desktop
  • CSRF enforced on cookie-authenticated mutations, transparent to Bearer clients
  • Login rate-limited to 5 attempts / 15 min in production; register to 3

Not included, so you are not surprised later: there is no email-verification flow (the field exists and social sign-in sets it, but nothing sends a verification mail), and no API-key authentication; machine callers use the same JWT flow.

{ Developers and agents }

A framework for developers and agents.

Grit has opinions on everything: routing, queues, auth, storage, AI. That is thousands of decisions an AI agent does not have to make, and the code it writes lands in the same shape a person would have written.

  • Generates Go + React from one CLI command
  • Ships a SKILL.md so agents know the patterns
  • AI Gateway: 100+ models via one API key
  • OWASP 2025 hardened: secure by default
Build with AI

Let your AI build it

One prompt that installs the Grit skill, teaches your agent the framework, and links every concept it needs. Works in Claude Code, Cursor, Codex, Windsurf, Copilot or any chat.

func (h *AuthHandler) Login(c *gin.Context) {
var req loginRequest
if err := c.ShouldBindJSON(&req); err != nil {
respond.ValidationError(c, err)
return
}
// The query is the service's. Handlers read the request,
// call one method, and write the answer.
user, tokens, err := h.service().Login(
h.ctx(c), req.Email, req.Password)
if err != nil {
// One code, one status, from the catalogue.
// Unknown address and wrong password answer alike.
respond.Error(c, err)
return
}
respond.OK(c, gin.H{"user": user, "tokens": tokens})
}

{ Deploy }

One command to a server you own.

Point it at a box with SSH and a domain. No platform lock-in, no YAML.

grit deploy --host deploy@server.com --domain myapp.com
  1. local

    Build

    Linux binary, CGO off, plus the frontend

  2. scp

    Upload

    Over SSH to deploy@server.com

  3. systemd

    Run

    A service with auto-restart

  4. caddy

    Serve

    Reverse proxy and Let's Encrypt TLS

  5. live

    myapp.com

    HTTPS, health-checked

It is a Go binary and some containers. Which means it runs anywhere: a $5 VPS, a managed platform, or your own Docker host. Fly, Railway, Render, Dokploy, Coolify, EC2 and Lightsail each have a guide with the actual steps, what it costs, and the thing that catches people out.

{ Benchmarks }

Speed is the easy half.

A generated Grit CRUD API against the same resource hand-built in six other frameworks. Then the half a benchmark cannot measure: how many of the 33 things a real product needs are already running the first time you open the app. Grit has 29. The 4 it does not have are in the table too, because a comparison where one column wins every row is not a comparison.

Requests per second, GET /products/:id

One indexed lookup and a JSON encode: the cleanest read of framework overhead

Gritvseach framework in its own colour

Each framework was run head to head against Grit, back to back, three times, medians reported, zero failed requests. 50 concurrent users, 4 CPUs and 2 GB per container, one shared Postgres, the same 10,000 rows, every framework on its own ORM. Bar heights are scaled within each pair, because each pair is a separate run. Compare the two bars inside a group, not heights across groups. The printed figures are the real measurements.

Methodology

Running on day one

29/ 33

Production capabilities running the first time you open the app: identity, security, compliance, operations and reach. The next closest framework has 12.

See all 33 rows
  1. Grit29
  2. Encore.ts12
  3. Django11
  4. Laravel7
  5. Next.js3
  6. Express0

{ Blueprints }

Whole applications, not snippets.

A blueprint is a real product in its own repository, built with Grit and kept current with it. Read how a thing is actually built, then take the parts you need.

7 more are on the list and named rather than hinted at. WhatsApp is open source; the rest are $10 each, or $20 a month for every one of them.

The whole catalogue

{ FAQ }

Questions, answered.

Do I need to know Go to use Grit?

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.

Can I use Grit with an existing project?

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.

Is Grit production-ready?

Yes. Every scaffolded project includes JWT auth, RBAC, rate limiting (Sentinel), observability (Pulse), error handling, CORS, gzip compression, connection pooling, and graceful shutdown. It is designed for production from day one.

What's the difference between Single and Triple architecture?

Single embeds the React SPA into the Go binary via go:embed, leaving one file to deploy. Triple is a Turborepo monorepo with separate web app, admin panel, and API, and is the better fit for teams and complex products.

Can I switch from Next.js to TanStack Router later?

The backend (Go API) is identical regardless of frontend choice. You would 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.

How does grit deploy work? Is it like Vercel?

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 or Railway, push to git and the Dockerfile is included.

Is Grit open source?

Yes, Grit is fully open source under the MIT license. The CLI, all plugins, and the documentation are on GitHub.

Anything else? Ask in Discord. No question is too small.

Your next app is one command away.

go install github.com/MUKE-coder/grit/v3/cmd/grit@latest

grit upgrade keeps a project on the current framework without touching the code you wrote.

Questions, releases and what people are building: the Discord and the WhatsApp group are where the answers happen.