Yelix is a powerful web server framework built specifically for Deno, leveraging the Hono framework in the background. It simplifies backend development with automated features, including built-in data validation, OpenAPI 3.1 support, and auto-generated backend documentation.
deno add jsr:@murat/yelix
Generate a new Yelix project with a single command:
deno run --allow-write --allow-read https://yelix-docs.deno.dev/yelix-template.ts
This will create a new project with the following structure:
api/
└── hello.ts
deno.json
main.ts
Here's how a basic endpoint looks in Yelix (api/hello.ts
):
import type { Ctx } from "jsr:@murat/yelix"; export async function GET(ctx: Ctx) { return await ctx.text("Hello World!", 200); } export const path = "/api/hello";
Start the development server:
Technical InformationWhen you run deno task dev
, actually, it runs
deno run --watch --allow-run --allow-net --allow-read --allow-env https://docs.yelix.dev/dev.ts
What Happens Behind the Scenes
When you run this command:
deno task dev
, it executes the dev.ts
script.resolveEndpoints.ts
script scans your api
directory and generates proper static imports in endpoints.ts
.main.ts
) loads these endpoints and starts listening for requestsapi
folder and regenerates endpoints.ts
when files changemain.ts
process is terminated, the resolver process is also terminated. This ensures that all processes are properly cleaned up.The dev.ts
script orchestrates this process by:
--watch
flag for hot reloadingThe resolver handles the critical task of transforming your directory structure into Deno Deploy-compatible static imports, creating entries like:
// In endpoints.ts (auto-generated) const endpoints = [ await import("./api/hello.ts"), await import("./api/users.ts"), // All your API endpoints are automatically included ];
Deno Deploy has a strict requirement: imports must be static string literals. This architecture automatically handles this constraint while providing a seamless development experience where you can add new API endpoints without manually updating imports.
You can focus on building your API endpoints while the system handles the deployment compatibility for you.
Visit http://localhost:3030/api/hello
to see your endpoint in action.
⚠️ Caution: Deno Deploy doesn't support the loadEndpointsFromFolder
method due to security restrictions around dynamic importing. When deploying to Deno Deploy, use the loadEndpoints
method instead.
Contributions are welcome! Feel free to submit issues or pull requests to improve Yelix.
Yelix is licensed under the MIT License.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4