<p align="center">
<a href="https://guren.dev/">
<img src="web/public/logo.svg" alt="Guren" width="72">
</a>
</p>
<h1 align="center">Guren</h1>
<p align="center">
<strong>Laravel-style fullstack TypeScript, on Bun.</strong><br>
Controllers, models and React pages wired together with types, built so your coding agent can work on it too.
</p>
<p align="center">
<a href="https://guren.dev/">Docs</a> ·
<a href="https://guren.dev/docs/guides/why-guren">Why Guren</a> ·
<a href="./examples/blog">Example app</a> ·
<a href="https://github.com/gurenjs/guren/discussions">Discussions</a>
</p>
<p align="center">
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT License"></a>
<a href="https://x.com/gurenjs"><img src="https://img.shields.io/badge/follow-%40gurenjs-black?logo=x" alt="X"></a>
<a href="https://github.com/sponsors/7nohe"><img src="https://img.shields.io/github/sponsors/7nohe?logo=githubsponsors" alt="GitHub Sponsors"></a>
</p>
https://github.com/user-attachments/assets/f27c4355-8a47-4e35-a128-0b1027ebc390
Quick start
bunx create-guren-app my-app --auth
cd my-app
bun run db:migrate && bun run db:seed
bun run dev
Open http://localhost:3333 and sign in with demo@example.com / secret. SQLite is the default, so there is nothing else to set up.
Why Guren
- Laravel's structure, TypeScript's types. Routes, controllers, models and migrations where you expect them, typed from the route to the React component.
- No API layer. Inertia.js passes controller data straight to React pages.
- Batteries included. Auth, queues, mail, cache, storage, notifications, real-time and scheduling are one command away.
- Agent-ready. Every app ships a harness for coding agents (
CLAUDE.md, rules, hooks) and commands that check their work.
- Fast, and deploys anywhere. Runs on Bun; ships to Cloudflare Workers, Vercel or AWS Lambda.
- Secure by default. CSRF, security headers and