Introduction
Went is a modern fullstack web framework that combines the best tools in the React ecosystem into a single, cohesive CLI experience. Build type-safe, scalable applications with zero configuration.
What is Went?
Went is a CLI-first framework that scaffolds production-ready Next.js applications with everything you need:
- Next.js 15 with App Router and Turbopack
- TypeScript configured for maximum type safety
- tRPC for end-to-end type-safe APIs
- Prisma for database management and migrations
- Auth.js for authentication with multiple providers
- Tailwind CSS and shadcn/ui for beautiful UIs
- ESLint and Prettier for code quality
Quick Start
Get started with Went in less than 30 seconds:
# Create a new Went application
npx create-went-app@latest my-app
# Navigate to your project
cd my-app
# Set up your environment
DATABASE_URL="your-database-url"
# Run database migrations
went db migrate init
# Start the development server
npm run dev
Your application will be running at http://localhost:3000
Write less code, build more features
Went's declarative approach and powerful abstractions let you focus on your business logic, not boilerplate.
Create Type-Safe Routes
Define routes with tRPC for end-to-end type safety
// src/server/api/routers/user.ts import { z } from "zod"; import { createTRPCRouter, publicProcedure } from "@/server/api/trpc"; export const userRouter = createTRPCRouter({ getUsers: publicProcedure .input(z.object({ id: z.string() })) .query(async ({ input, ctx }) => { const user = await ctx.db.user.findUnique({ where: { id: input.id }, }); return user; }), createUser: publicProcedure .input(z.object({ name: z.string(), email: z.string().email(), })) .mutation(async ({ input, ctx }) => { const user = await ctx.db.user.create({ data: input, }); return user; }), });
Project Structure
Every Went application follows a consistent, scalable structure:
my-app/ ├── prisma/ │ ├── schema.prisma # Database schema │ └── seed.ts # Database seeding ├── src/ │ ├── app/ # Next.js app directory │ │ ├── api/ # API routes │ │ ├── globals.css # Global styles │ │ ├── layout.tsx # Root layout │ │ └── page.tsx # Homepage │ ├── components/ # React components │ │ └── ui/ # shadcn/ui components │ ├── lib/ # Utility functions │ ├── server/ # Server-side code │ │ └── api/ # tRPC routers │ └── auth.ts # Auth.js configuration ├── .env # Environment variables ├── package.json └── tailwind.config.js # Tailwind configuration
Next Steps
Continue your journey with Went:
Community & Support
Join our growing community of developers building with Went: