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: