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: