Skip to main content

Cargo - Develop Web Applications the Way You Like!

Cargo is a web application framework with the right abstraction of helpful features to build web applications with Deno. It provides you a starting point and structure for your projects, yet allows flexibility for different needs. You can focus on developing awesome projects without getting bogged down by the lower-level details

How to use Cargo

Create a app.ts file, import and call Cargo’s bootstrap function and add required routes to your Applications:

// main.ts
import { bootstrap, Get } from "";
import { Get } from "";

const app = await bootstrap();

Get("/", (ctx) => {
  return new Response("Hello World!");

Run the application with deno run --allow-net --allow-read main.ts and open http://localhost:8000/hello in your browser.


Middleware allows you to do some work before and after the final route handler is called.

A simple example is to log the time for handling an incoming request. In the main.ts add the following code:

// main.ts
import { bootstrap } from "";
import { Get } from "";

const App = await bootstrap();

// Middleware on app level
App.middleware((ctx, next) => {
  const startTime =;
  // Calling the next function will continue with the middleware chain and wait for the response.
  const response = await next(ctx);
  const endTime =;
  // Log the time difference before and after calling the next function ms.
  console.log(endTime - startTime);
  return response;

const HelloRoute = Get("/hello", (ctx) => {
  return new Response("World!");

// Middleware on route level
HelloRoute.middleware((ctx, next) => {
  // Doing work before the request is handled by the route.
  const response = await next(ctx);
  // Doing work after the request is handled by the route.
  return response;


MIT License


Feel free submit issues here on GitHub or reach out to me for any feedback at