Contract-Model-Model-View (CMMV)
A minimalistic framework for building scalable and modular applications using TypeScript contracts.
The @cmmv/swagger
module provides an automated solution for generating Swagger API documentation based on the contracts defined in the CMMV application. The SwaggerTranspiler
class processes the contracts, extracting information such as controller names, fields, and request/response types. It generates a complete OpenAPI 3.0 specification, including routes for CRUD operations, data schemas, and authentication routes if the @cmmv/auth
module is present. The module integrates security schemes, adds necessary paths for login, registration, and user management, and handles the inclusion of common request/response formats. The generated output is written to a swagger.json
file, which can be used with Swagger UI or similar tools to provide interactive API documentation.
CMMV is available as a collection of npm packages. To install the core package, use npm:
$ pnpm add @cmmv/swagger
Below is a simple example of how to create a new CMMV application:
import { Application } from "@cmmv/core";
import { DefaultAdapter, DefaultHTTPModule } from "@cmmv/http";
import { AuthModule } from "@cmmv/auth";
import { SwaggerModule } from "@cmmv/swagger";
Application.create({
httpAdapter: DefaultAdapter,
wsAdapter: null,
modules: [
DefaultHTTPModule,
AuthModule,
SwaggerModule
],
contracts: [...]
})
The complete documentation is available here.
CMMV is an open-source project, and we are always looking for contributors to help improve it. If you encounter a bug or have a feature request, please open an issue on GitHub.
- Author - André Ferreira
- Twitter - @andrehrferreira
- Linkdin - @andrehrf
- Youtube - @Andrehrferreira
CMMV is MIT licensed.