# gqlkit gqlkit generates GraphQL schema and resolver maps from TypeScript types and functions. ## How it works 1. Write TypeScript types in `src/gqlkit/schema/` → become GraphQL types 2. Write resolver functions using `defineQuery`, `defineMutation`, `defineField` → become GraphQL resolvers 3. Run `gqlkit gen` → outputs `typeDefs` and `resolvers` to `src/gqlkit/__generated__/` ## Design principles - **Implement first**: Write types and resolvers, generate schema when ready. No edit-regenerate-implement loops. - **Just types and functions**: Plain TypeScript with a thin API. No decorators, no complex generics. - **Type-safe**: TypeScript types become GraphQL types. Resolver signatures checked at compile time. ## Documentation - [What is gqlkit?](https://gqlkit.izumin.dev/what-is-gqlkit): Just types and functions — write TypeScript, generate GraphQL. - [Getting Started](https://gqlkit.izumin.dev/getting-started): Installation, project structure, first type and query definition. ## Schema Definition - [Schema Definition](https://gqlkit.izumin.dev/schema/conventions): gqlkit generates GraphQL schema from your TypeScript types. - [Defining Object Types](https://gqlkit.izumin.dev/schema/objects): Plain TypeScript type exports become GraphQL Object types. - [Defining Input Types](https://gqlkit.izumin.dev/schema/inputs): TypeScript types with Input suffix are treated as GraphQL input types. - [Defining Queries and Mutations](https://gqlkit.izumin.dev/schema/queries-mutations): Define Query and Mutation fields using the @gqlkit-ts/runtime API. - [Defining Subscriptions](https://gqlkit.izumin.dev/schema/subscriptions): Define Subscription fields using the @gqlkit-ts/runtime API. - [Defining Field Resolvers](https://gqlkit.izumin.dev/schema/fields): Add computed fields to object types using defineField. - [Defining Scalar Types](https://gqlkit.izumin.dev/schema/scalars): gqlkit provides built-in scalar types and supports custom scalar definitions. - [Defining Enum Types](https://gqlkit.izumin.dev/schema/enums): gqlkit converts TypeScript string literal unions and enums to GraphQL enum types. - [Defining Union Types](https://gqlkit.izumin.dev/schema/unions): TypeScript union types of object types are converted to GraphQL union types. - [Defining Interface Types](https://gqlkit.izumin.dev/schema/interfaces): Define GraphQL interface types using the GqlInterface utility type. - [Resolving Abstract Types](https://gqlkit.izumin.dev/schema/abstract-resolvers): Handle runtime type resolution for GraphQL unions and interfaces. - [Adding Documentation to Schema](https://gqlkit.izumin.dev/schema/documentation): gqlkit extracts TSDoc/JSDoc comments and converts them to GraphQL descriptions. - [Defining Custom Directives](https://gqlkit.izumin.dev/schema/directives): Define custom directives using the GqlDirective utility type. ## Integration - [Integration with graphql-yoga](https://gqlkit.izumin.dev/integration/yoga): Use gqlkit with graphql-yoga, a batteries-included GraphQL server. - [Integration with Apollo Server](https://gqlkit.izumin.dev/integration/apollo): Use gqlkit with Apollo Server, a popular GraphQL server. - [Integration with Drizzle ORM](https://gqlkit.izumin.dev/integration/drizzle): Derive GraphQL types from Drizzle table definitions. - [Integration with Prisma](https://gqlkit.izumin.dev/integration/prisma): Derive GraphQL types from Prisma model types. - [Integration with Vercel AI SDK](https://gqlkit.izumin.dev/integration/ai-sdk): Stream AI responses as GraphQL subscriptions using the Vercel AI SDK. ## Guides - [Configuration](https://gqlkit.izumin.dev/configuration): Configure gqlkit via gqlkit.config.ts in your project root. - [Coding Agents](https://gqlkit.izumin.dev/coding-agents): Set up AI coding agents like Claude Code and Codex to understand gqlkit conventions. (skip if reading via `gqlkit-guide` skill)