Empezar
Este tutorial te lleva de cero a una pequeña API HTTP respaldada por SQLite, corriendo sobre Bun.
Requisitos
Sección titulada «Requisitos»- Bun v1.3+ — instalalo desde bun.sh.
- Opcional: Node.js v18+ para algunas dependencias nativas.
Instalación
Sección titulada «Instalación»-
Creá un proyecto y agregá los kits que necesitás:
Ventana de terminal mkdir my-iskra-api && cd my-iskra-apibun init -ybun add @iskra-bun/core @iskra-bun/web-kit @iskra-bun/db-kit drizzle-orm -
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(),}); -
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'));
bun run src/main.tsLuego, en otra terminal:
# Crear un usuariocurl -X POST http://localhost:3000/api/users \ -H 'content-type: application/json' \ -d '{"name":"Ada","email":"ada@example.com"}'
# Listar usuarioscurl http://localhost:3000/api/users
# Health checkcurl http://localhost:3000/healthBun trae un runner de tests integrado. Creá un smoke test:
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:
bun testPróximos pasos
Sección titulada «Próximos pasos»- 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.