https://github.com/tsgonest/tsgonest
a typescript compiler for nestjs that does validation, openapi, sdk and more
https://github.com/tsgonest/tsgonest
nestia nestjs openapi tsgo typescript typia
Last synced: 3 months ago
JSON representation
a typescript compiler for nestjs that does validation, openapi, sdk and more
- Host: GitHub
- URL: https://github.com/tsgonest/tsgonest
- Owner: tsgonest
- License: mit
- Created: 2026-02-22T09:04:09.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-30T13:05:28.000Z (3 months ago)
- Last Synced: 2026-03-30T14:40:27.703Z (3 months ago)
- Topics: nestia, nestjs, openapi, tsgo, typescript, typia
- Language: Go
- Homepage: https://tsgonet.dev
- Size: 20.4 MB
- Stars: 11
- Watchers: 0
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
tsgonest
Drop-in NestJS compiler. Validates, serializes, and documents your API — from plain TypeScript types.
---
tsgonest replaces `tsc`, `class-validator`, `class-transformer`, and `@nestjs/swagger` with a single build step. Write your types, run `tsgonest build`, and get validation, fast JSON serialization, and OpenAPI 3.2 — all generated at compile time.
```ts
export interface CreateUserDto {
name: string & tags.Trim & tags.Min<1> & tags.Max<255>;
email: string & tags.Email;
age: number & tags.Min<0> & tags.Max<150>;
}
@Controller('user')
export class UserController {
@Post()
createUser(@Body() body: CreateUserDto) {
// body is validated at compile time — no pipes, no interceptors
}
}
```
```bash
npx tsgonest build
```
## Why
- **~10x faster compilation** via [typescript-go](https://github.com/microsoft/typescript-go)
- **Zero runtime overhead** — validation and serialization are injected at compile time
- **Zero decorators** — OpenAPI generated from static analysis, not `@ApiProperty()`
- **Drop-in** — works with existing NestJS projects, no `ts-patch` or plugins
## Install
```bash
# Migrate from class-validator / nestia (recommended)
npx tsgonest@latest migrate
# Or install manually
pnpm install tsgonest @tsgonest/runtime @tsgonest/types
```
## CLI
```bash
tsgonest build # production build
tsgonest dev # watch + auto-restart
tsgonest check # type check (no emit)
tsgonest check --watch # continuous checking
tsgonest openapi # generate OpenAPI only
tsgonest openapi --name public # specific output
tsgonest sdk # generate typed client SDK
tsgonest migrate # codemod migration
```
## Constraints
Annotate with branded types (`@tsgonest/types`) or JSDoc — both can be mixed.
```ts
import { tags } from '@tsgonest/types';
export interface CreateUserDto {
name: string & tags.Trim & tags.MinLength<1> & tags.MaxLength<255>;
email: string & tags.Email & tags.Error<'Please provide a valid email'>;
age: number & tags.Min<0> & tags.Max<150> & tags.Type<'int32'>;
score?: number & tags.Default<0>;
tags: string[] & tags.MinItems<1> & tags.UniqueItems;
}
```
32 built-in formats (`email`, `uuid`, `url`, `ipv4`, `date-time`, `jwt`, ...), numeric types (`int32`, `uint32`, `float`, ...), custom validators via `tags.Validate`, and custom error messages via `tags.Error<"msg">`.
[Full constraint reference](https://tsgonest.dev)
## Packages
| Package | Description |
| --- | --- |
| [`tsgonest`](https://www.npmjs.com/package/tsgonest) | CLI + compiler |
| [`@tsgonest/runtime`](https://www.npmjs.com/package/@tsgonest/runtime) | `defineConfig`, `TsgonestValidationError`, `Returns`, `FormDataBody`, `EventStream` |
| [`@tsgonest/types`](https://www.npmjs.com/package/@tsgonest/types) | Branded phantom types — `tags.Email`, `tags.Min`, `tags.Trim`, etc. |
## Platform support
macOS (ARM64, x64) / Linux (x64, ARM64 — static, works on glibc + musl) / Windows (x64, ARM64)
## Sponsors
Gold Sponsor
Tixio
Stop wasting time and money on slack jira clickup and 10+ other tools, get tixio instead. use code `tsgonest` for 20% discount
## Documentation
[tsgonest.dev](https://tsgonest.dev)
## Acknowledgments
- [typescript-go](https://github.com/microsoft/typescript-go) — Microsoft's Go port of TypeScript
- [typia](https://github.com/samchon/typia) — Pioneered type-driven validation; tsgonest's branded types are inspired by typia
- [nestia](https://github.com/samchon/nestia) — Decorator-free NestJS validation and OpenAPI via typia
- [tsgolint](https://github.com/nicolo-ribaudo/tsgolint) — Established the shim pattern for accessing tsgo internals
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).
## License
[MIT](LICENSE.md)