lukeautry/tsoa

Build OpenAPI-compliant REST APIs using TypeScript and Node

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 57 minutes ago
Added to GitGenius on September 17th, 2026
Created on June 17th, 2016
Open Issues & Pull Requests: 138 (+0)
GitHub issues: Enabled
Number of forks: 534
Total Stargazers: 3,975 (+0)
Total Subscribers: 27 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 10.5 days
Mean response time: 66.2 days
90th percentile: 171.4 days
Tracked items: 132

Most active contributors

Sign in to see contributor activity.

How this project is maintained

88% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Three people close 72% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 42
New in 7 days: 0
Closed in 7 days: 4
Avg open age: 1,040 days
Stale 30+ days: 36
Stale 90+ days: 33

Recent activity

Opened in 7 days: 0
Closed in 7 days: 3
Comments in 7 days: 1
Events in 7 days: 2

Top labels

  • Stale (80)
  • help wanted (36)
  • bug (17)
  • good first issue (15)
  • Pending feedback (10)
  • enhancement (10)
  • more-information-needed (3)
  • express-router (2)

Detailed Description

tsoa is a code generator that builds OpenAPI-compliant REST APIs using TypeScript and Node.

The tool solves the problem of keeping API documentation in sync with implementation by using TypeScript type annotations as the single source of truth. It generates valid OpenAPI specifications (versions 2.0 or 3.0) directly from TypeScript controllers and models, extracting paths, parameter definitions, and type information automatically. Request payloads are validated at runtime against the generated schema. Routes are generated for popular middleware frameworks including Express, Hapi, and Koa, with support for additional frameworks through custom Handlebars templates. The approach minimizes boilerplate by relying on TypeScript's type system and decorators for metadata, with jsDoc used only for textual descriptions.

Developers should choose this tool when building Node-based REST APIs where keeping documentation synchronized with code matters and TypeScript is already in use. It suits projects that value type safety and want to avoid manually maintaining OpenAPI specifications. The tool works best with Express, Hapi, or Koa, though other middleware can be supported through templates. Teams should be aware that while OpenAPI 3 provides more expressive schema syntax and reduces validation divergence, OpenAPI 2.0 is also supported if needed for compatibility reasons.

The project maintains a substantial base of real-world adopters, as evidenced by the fact that nearly all open issues originate from outside users rather than the core team. Responses to issues and pull requests typically arrive within one to two weeks. Work in the issue tracker centers on bug fixes, feedback collection, and enhancement requests.