Introduction
Gencow — Frontend + backend AI app framework for vibe coders
Gencow is a frontend + backend AI app framework for vibe coders who want to ship fast without compromising on quality. Build app screens and complete backend APIs with TypeScript — auth, database, realtime, file storage, AI, and cloud deployment — from one project.
Everything you need to ship a fullstack app:
- Frontend-ready — Use Vite + React by default for new app screens and deploy them with your backend
- Schema-first — Define your database with TypeScript (Drizzle ORM)
- Instant APIs —
createCrud()and typedprocedurebuilders, with auto-generated client types - Built-in Auth — User management powered by better-auth (session-based, token-based)
- Realtime — WebSocket push model —
useQueryauto-refreshes on data changes - File Storage — private-by-default uploads, public asset URLs, and short-lived read grants
- AI-Ready — Add AI, RAG, Memory, Tools with
gencow add AI - Cron Jobs — Scheduled tasks with
cron— interval, daily, weekly, cron - Cloud Deploy —
gencow devand you're live onhttps://<app>.gencow.app
Why Gencow?
| Feature | Gencow | Supabase | Firebase |
|---|---|---|---|
| Schema | Drizzle (TypeScript) | SQL (Console) | NoSQL (Console) |
| API | procedure + createCrud |
SQL / REST | Firestore API |
| Auth | Built-in (better-auth) | Built-in | Built-in |
| Realtime | WebSocket push | Realtime extension | Firestore listeners |
| File Storage | ctx.storage |
Storage | Cloud Storage |
| AI Components | gencow add AI |
Manual | Vertex AI |
| Cron Jobs | cron |
pg_cron | Cloud Functions |
| Deploy | gencow dev |
Dashboard | firebase deploy |
| Self-host | ✅ (Docker) | ✅ | ❌ |
| Local Dev DB | Cloud PostgreSQL | PostgreSQL | Emulators |
Who is this for?
- Vibe coders who use AI assistants (Cursor, Copilot, Claude) to build apps
- Solo developers who want a full backend in minutes
- Indie hackers who need auth + DB + AI + file storage without setup overhead
- Agencies building prototypes and MVPs for clients
Tech Stack
| Layer | Technology |
|---|---|
| Runtime | Bun |
| HTTP Server | Hono |
| Database | PostgreSQL (Gencow Cloud) |
| ORM | Drizzle ORM |
| Auth | better-auth (session-based + JWT) |
| Validation | Zod + built-in v validator |
| Realtime | Native WebSocket (push model) |
| AI | Vercel AI SDK + Gencow proxy (Azure-first GPT-5.4 family with GPT-5 mini/nano compatibility) |
| Cloud | Gencow Platform (gencow.app) |
Architecture
Your App
├── gencow/ ← Backend code (this is what you write)
│ ├── schema.ts ← Starter tables; prefer `schema-*.ts` per domain as you grow
│ ├── schema-auth.ts ← User-owned auth tables
│ ├── generated/ ← Server codegen (do not edit by hand)
│ │ ├── schema-auth.gen.ts ← Generated auth schema
│ │ └── db-schema.gen.ts ← Aggregated schema for typed ctx.db
│ ├── auth.ts ← Auth config (defineAuth)
│ ├── runtime.ts ← Typed `procedure`, `httpRoute`, and `createCrud` bound to your schema + auth
│ ├── index.ts ← Registers procedures & routes (`defineApi`)
│ ├── tasks.ts ← Example: CRUD + custom procedures (optional)
│ ├── files.ts ← Example: file upload/download logic (optional)
│ ├── seed.ts ← Seed data (optional)
│ ├── README.md ← Auto-generated AI guide
│ └── SECURITY.md ← Security checklist
├── src/ ← Vite + React frontend (recommended for new apps)
├── gencow.config.js ← Project configuration
├── gencow.json ← Cloud app ID (auto-created on deploy)
├── drizzle.config.ts ← Database config (PostgreSQL)
└── package.jsontasks.ts and files.ts are starter examples from project templates — add your own procedure modules as needed; only index.ts (and the core gencow/ files) are required.
How it works:
- You define database tables in
gencow/schema-*.tsfiles using Drizzle ORM — templates ship withschema.ts, but splitting tables across domain files (e.g.schema-tasks.ts) is preferred as the app grows - You define procedures with
createCrud()andprocedureingencow/*.ts, then register them ingencow/index.tsviadefineApi gencow devstarts a Hono server with hot-reload and regeneratessrc/gencow/api.ts- Your Vite + React frontend uses
useQuery(api.tasks.list, {})— data is reactive via WebSocket gencow devships everything to Gencow Cloud (PostgreSQL + isolated container)
Default frontend choice: When vibe-coding a new Gencow app, choose Vite + React. Use Next.js only when the user explicitly asks for Next.js/SSR or when adding Gencow to an existing Next.js project.
Next Steps
- Installation — Create your first project
- Quickstart — Build a Todo app in 5 minutes
- Project Structure — Understand every file