{"id":46798346,"url":"https://github.com/thomasbarkats/yasui","last_synced_at":"2026-03-10T05:03:42.609Z","repository":{"id":57403321,"uuid":"325378682","full_name":"thomasbarkats/yasui","owner":"thomasbarkats","description":"Lightweight multi-runtime framework built on Web Standards for REST APIs.","archived":false,"fork":false,"pushed_at":"2026-02-07T04:16:19.000Z","size":833,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-07T10:11:47.834Z","etag":null,"topics":["api","backend","framework","typescript"],"latest_commit_sha":null,"homepage":"https://yasui.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thomasbarkats.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-12-29T20:15:46.000Z","updated_at":"2026-02-07T04:00:17.000Z","dependencies_parsed_at":"2025-05-27T06:18:35.962Z","dependency_job_id":"cbceb870-d8b8-4cb0-86b7-bfe72704625d","html_url":"https://github.com/thomasbarkats/yasui","commit_stats":null,"previous_names":["sendups/yasui"],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/thomasbarkats/yasui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasbarkats%2Fyasui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasbarkats%2Fyasui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasbarkats%2Fyasui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasbarkats%2Fyasui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomasbarkats","download_url":"https://codeload.github.com/thomasbarkats/yasui/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomasbarkats%2Fyasui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30325601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T01:36:58.598Z","status":"online","status_checked_at":"2026-03-10T02:00:06.579Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backend","framework","typescript"],"created_at":"2026-03-10T05:03:41.836Z","updated_at":"2026-03-10T05:03:42.581Z","avatar_url":"https://github.com/thomasbarkats.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://yasui.app\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/thomasbarkats/assets/refs/heads/main/yasui/yasui-logo-mascot.png\" alt=\"Logo\" height=180 /\u003e\n  \u003c/a\u003e\n  \u003ch1 align=\"center\"\u003eYasuiJS\u003c/h1\u003e\n\u003c/p\u003e\n\n\n\u003cdiv align=\"center\"\u003e\n\n  [![Node.js Version](https://img.shields.io/node/v/yasui.svg?color=EAA458)](https://nodejs.org/)\n  [![npm bundle size](https://img.shields.io/npm/unpacked-size/yasui?color=EAA458)](https://www.npmjs.com/package/yasui)\n  [![npm downloads](https://img.shields.io/npm/dm/yasui.svg?color=C17633)](https://www.npmjs.com/package/yasui)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n  \u003cspan\u003eShip production-ready REST APIs in minutes 🐿️\u003c/span\u003e\n  \u003cspan\u003e\u0026nbsp;\u0026nbsp;•\u0026nbsp;\u0026nbsp;\u003c/span\u003e\n  **[Documentation](https://yasui.app/guide/getting-started.html)** 📖\n\n\u003c/div\u003e\n\u003cbr /\u003e\n\n## What is YasuiJS?\n\nYasui (meaning \"easy\" in Japanese) is a lightweight multi-runtime framework built on Web Standards and pushed with [SRVX](https://srvx.h3.dev), that brings the developer experience of modern frameworks without the complexity. It runs on Node.js, Deno, and Bun, providing the structure you need with just the features you'll actually use.\n\n## Features Summary\n- **Multi-Runtime**: Runs on Node.js, Deno, and Bun via SRVX and Web Standards\n- **Lightweight \u0026 Fast**: Minimal dependencies with focus on essentials without the bloat\n- **Complete Error Handling**: Everything can throw without try/catch - automatic error handling everywhere\n- **Automatic Type-Casting**: Query params automatically converted to proper types. Even in middlewares\n- **Flexible DI System**: Constructor and method-level injection with configurable scopes for better control\n- **Simple Middlewares**: Apply at global, controller, or route level. Use the same decorators as controllers\n- **Rich Swagger Generation**: Flexible decorators for enums, arrays, classes, OpenAPI schemas\n- **HTTPS/HTTP2 Support**: Built-in TLS configuration with automatic HTTP/2 on Node.js\n- **Type-safe**: Full TypeScript support with proper typing\n\n## Quick Start\n\n```sh\nnpm install yasui\n```\n\n```ts\nimport yasui, { Controller, Get } from 'yasui';\n\n@Controller('/')\nexport class AppController {\n  @Get('/')\n  hello() {\n    return { message: 'Hello World!' };\n  }\n}\n\nyasui.createServer({\n  controllers: [AppController]\n});\n```\n\n## 📖 **[Documentation](https://yasui.app/guide/getting-started.html)**\n\n- [Configuration](https://yasui.app/guide/config.html) - Server setup and global options\n- [Controllers](https://yasui.app/guide/controllers.html) - Define routes with decorators and automatic type casting\n- [Dependency Injection](https://yasui.app/guide/dependency-injection.html) - Constructor and method-level injection with flexible scopes\n- [Error Handling](https://yasui.app/guide/error-handling.html) - Automatic error catching without try/catch blocks\n- [Logging](https://yasui.app/guide/logging.html) - Built-in timing and color-coded logging service\n- [Middlewares](https://yasui.app/guide/middlewares.html) - Apply at multiple levels with same decorators as controllers\n- [Pipes](https://yasui.app/guide/pipes.html) - Transform and validate request data automatically\n- [Swagger Doc.](https://yasui.app/guide/swagger.html) - Generate OpenAPI docs with flexible decorators\n\n## Plugins\n\nProduction-ready middlewares and utilities for YasuiJS:\n\n- **[@yasui/cors](https://www.npmjs.com/package/@yasui/cors)** ([JSR](https://jsr.io/@yasui/cors)) - CORS middleware\n- **[@yasui/rate-limit](https://www.npmjs.com/package/@yasui/rate-limit)** ([JSR](https://jsr.io/@yasui/rate-limit)) - Rate limiting middleware\n- **[@yasui/validation](https://www.npmjs.com/package/@yasui/validation)** ([JSR](https://jsr.io/@yasui/validation)) - Automatic DTO validation middleware\n\n## Why YasuiJS?\n\nYasuiJS adopts a **class-based, object-oriented approach** with decorators, bringing significant architectural advantages:\n\n### Better Code Organization\nClasses and decorators provide better organization, encapsulation, and maintainability. This approach naturally supports established architectural patterns like onion architecture, hexagonal architecture, and clean architecture.\n\n### Dependency Injection\nBuilt-in dependency injection enables loose coupling, better testability, and cleaner separation of concerns. Dependencies are explicitly declared and automatically resolved.\n\n### Declarative Over Imperative\nInstead of manually registering routes and extracting parameters, you declare what you want using decorators. The framework handles the implementation details.\n\n### Multi-Runtime Support\nBuilt on web standards, YasuiJS provides a portable, standard codebase for JavaScript runtimes, capable of running on Node.js, Deno, and Bun with [SRVX](https://srvx.h3.dev), a universal server abstraction based on the Fetch API. Future-proof your applications with standard web APIs.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit issues and pull requests.  \nPlease use `npm run commit` to standardize commits nomenclature.\n\n## License\n\nThis project is licensed under the [GNU Affero General Public License v3.0 or later](https://www.gnu.org/licenses/agpl-3.0.html). See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasbarkats%2Fyasui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomasbarkats%2Fyasui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomasbarkats%2Fyasui/lists"}