Ir al contenido

Empezar

Este tutorial te lleva de cero a una pequeña API HTTP respaldada por SQLite, corriendo sobre Bun.

  • Bun v1.3+ — instalalo desde bun.sh.
  • Opcional: Node.js v18+ para algunas dependencias nativas.
  1. Creá un proyecto y agregá los kits que necesitás:

    Ventana de terminal
    mkdir my-iskra-api && cd my-iskra-api
    bun init -y
    bun add @iskra-bun/core @iskra-bun/web-kit @iskra-bun/db-kit drizzle-orm
  2. Definí un schema de base de datos:

    src/db/schema.ts
    import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
    export const users = sqliteTable('users', {
    id: integer('id').primaryKey({ autoIncrement: true }),
    name: text('name').notNull(),
    email: text('email').notNull().unique(),
    });
  3. Cableá la app con un servidor web y el driver de base de datos:

    src/main.ts
    import { App } from '@iskra-bun/core';
    import { WebPlugin, HealthCheckFeature, successResponse } from '@iskra-bun/web-kit';
    import { DbDriver } from '@iskra-bun/db-kit';
    import { Hono } from 'hono';
    import { users } from './db/schema';
    const db = new DbDriver();
    const router = new Hono();
    router.get('/api/users', (c) => {
    const all = db.db.select().from(users).all();
    return c.json(successResponse(all));
    });
    router.post('/api/users', async (c) => {
    const body = await c.req.json();
    db.db.insert(users).values(body).run();
    return c.json(successResponse(body), 201);
    });
    const app = new App({
    name: 'MyIskraApi',
    db: { driver: 'sqlite', url: 'app.db' },
    });
    app.register(db);
    app.register(new WebPlugin({ port: 3000, router, features: [new HealthCheckFeature()] }));
    app.start().catch((err) => app.logger.error({ err }, 'Failed to start'));
Ventana de terminal
bun run src/main.ts

Luego, en otra terminal:

Ventana de terminal
# Crear un usuario
curl -X POST http://localhost:3000/api/users \
-H 'content-type: application/json' \
-d '{"name":"Ada","email":"ada@example.com"}'
# Listar usuarios
curl http://localhost:3000/api/users
# Health check
curl http://localhost:3000/health

Bun trae un runner de tests integrado. Creá un smoke test:

src/main.test.ts
import { describe, it, expect } from 'bun:test';
import { App } from '@iskra-bun/core';
describe('app', () => {
it('starts and stops cleanly', async () => {
const app = new App({ name: 'Test' });
await app.start();
await app.stop();
expect(app).toBeDefined();
});
});

Corrélo:

Ventana de terminal
bun test
  • Aprendé el modelo de diseño en Arquitectura.
  • Agregá features (CORS, auth, rate limiting) desde el Web Kit.
  • Empezá desde un template en lugar de armar todo a mano.