Quick Start

Get up and running with Kito in minutes

This guide will help you create your first Kito application in just a few minutes.

Create Your First Server

  1. Install Kito

  2. Create a server file

    Create a new file server.ts:

    import { server } from "kitojs";
    const app = server();
     
    app.get("/", ({ res }) => {
     res.send("Hello, Kito!");
    });
     
    app.listen(3000, () => {
     console.log("Server running on http://localhost:3000");
    });
  3. Run your server

  4. Test your server

    Open your browser and visit http://localhost:3000 or use curl:

    curl http://localhost:3000
    # Output: Hello, Kito!

Add More Routes

Kito makes it easy to add multiple routes with different HTTP methods:

import { server } from "kitojs";
const app = server();
 
// GET route
app.get("/", ({ res }) => {
  res.send("Home page");
});
 
// POST route
app.post("/users", ({ res }) => {
  res.json({ message: "User created" });
});
 
// Route with parameters
app.get("/users/:id", ({ req, res }) => {
  const { id } = req.params;
  res.json({ userId: id });
});
 
app.listen(3000);

Handle Request Data

Access request data easily through the context object:

app.get("/search", ({ req, res }) => {
  // Query parameters: /search?q=kito
  const query = req.query.q;
  res.json({ searchTerm: query });
});
 
app.post("/data", ({ req, res }) => {
  // Request body
  const body = req.json();
  res.json({ received: body });
});
 
app.get("/info", ({ req, res }) => {
  // Request headers
  const userAgent = req.header("user-agent");
  res.send(`Your user agent: ${userAgent}`);
});

Add Validation

Kito includes built-in validation powered by Rust for maximum performance:

import { server, schema, t } from "kitojs";
const app = server();
 
const userSchema = schema({
  body: t.object({
    name: t.str().min(1).max(50),
    email: t.str().email(),
    age: t.num().min(0).max(120).optional(),
  }),
});
 
app.post("/users", ({ req, res }) => {
  // Body is now validated
  const { name, email, age } = req.body;
  res.json({ name, email, age });
}, userSchema);
 
app.listen(3000);

Use Middleware

Add middleware to handle cross-cutting concerns:

import { server, middleware } from "kitojs";
const app = server();
 
// Logger middleware
const logger = middleware((ctx, next) => {
  const { method, url } = ctx.req;
  
  console.log(`${method} ${url}`);
  next();
});
 
// Use globally
app.use(logger);
 
// Or per-route
app.get("/protected", [logger], ({ res }) => {
  res.send("Protected route");
});
 
app.listen(3000);

Next Steps

Now that you have a basic server running, explore more advanced features: