Retour aux outils
Dev ToolsIntermédiaireOpen sourceAuto-hébergeablev0.20.0

bknd

**Le backend TypeScript léger et typé** : créez une API REST, une base de données et de l'authentifi

MAJ 2026-06-14
bknd
Site officiel Code source★ 3 725

bknd est un backend TypeScript moderne, léger et typé de bout en bout, pensé comme une alternative simple à Supabase pour les développeurs qui veulent garder le contrôle de leur stack. Le projet mise sur une philosophie radicale : *un seul runtime, zéro dépendance cachée, configuration en code*.

Description

bknd est un backend TypeScript moderne, léger et typé de bout en bout, pensé comme une alternative simple à Supabase pour les développeurs qui veulent garder le contrôle de leur stack. Le projet mise sur une philosophie radicale : un seul runtime, zéro dépendance cachée, configuration en code.

L'idée directrice est de proposer un BaaS (Backend-as-a-Service) minimaliste qui se déploie en quelques lignes : API REST auto-générée, ORM intégré avec support SQLite/PostgreSQL/MySQL, authentification par sessions ou JWT, validation Zod, et un Data UI intégré pour administrer les données. Tout est typé : les schémas se déclarent en TypeScript, l'API héritée automatiquement du typage, et le client SDK est généré pour vos frontends React/Next.js/Svelte.

Contrairement à Supabase (qui embarque PostgREST, GoTrue, Realtime, Storage…), bknd fait le pari de la simplicité : un seul binaire, une seule config, et des performances excellentes. Le code reste 100% lisible et modifiable, le projet étant jeune (2024) et écrit en TypeScript strict.

Public cible : développeurs TypeScript, makers, startups, projets personnels qui veulent un backend solide sans la complexité d'un Firebase/Supabase, et qui apprécient un stack 100% type-safe.

Fonctionnalités principales

  • ✅ API REST auto-générée depuis le schéma TypeScript
  • ✅ ORM intégré : SQLite, PostgreSQL, MySQL, libSQL/Turso
  • ✅ Authentification : sessions, JWT, OAuth, magic links
  • ✅ Validation Zod des payloads
  • ✅ Data UI : interface d'administration des données
  • ✅ Realtime via WebSocket (subscriptions)
  • ✅ CLI : scaffolding, migrations, déploiement
  • ✅ SDK frontend : React, Next.js, Svelte, Vue, Solid
  • ✅ Storage : fichiers locaux ou S3-compatible
  • ✅ Permissions granulaires par rôle
  • ✅ Hooks : logique custom avant/après requêtes

Installation

Via npm (recommandé pour intégrations)

# Créer un nouveau projet
npx create-bknd@latest mon-backend
cd mon-backend
npm install
npm run dev

Via Docker (auto-hébergé)

# docker-compose.yml
version: '3.8'
services:
  bknd:
    image: ghcr.io/bknd-io/bknd:latest
    container_name: bknd
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      BKNd_CONFIG: "/app/config.ts"
      DATABASE_URL: "postgresql://bknd:password@db:5432/bknd"
      JWT_SECRET: "changez-moi-en-production-50-chars-min"
    volumes:
      - ./config:/app/config
    depends_on:
      - db
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.bknd.rule=Host(`api.example.com`)"
      - "traefik.http.routers.bknd.entrypoints=websecure"
      - "traefik.http.routers.bknd.tls.certresolver=letsencrypt"

  db:
    image: postgres:16-alpine
    container_name: bknd-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: bknd
      POSTGRES_PASSWORD: changez-moi
      POSTGRES_DB: bknd
    volumes:
      - bknd_db:/var/lib/postgresql/data

volumes:
  bknd_db:

Installation manuelle

git clone https://github.com/bknd-io/bknd.git
cd bknd
pnpm install
pnpm build
pnpm start

Configuration

  1. Définir le schéma dans config.ts : tables, champs, relations, auth, permissions
  2. Choisir la base de données : SQLite par défaut (zéro-setup), PostgreSQL en prod
  3. Configurer l'authentification : providers OAuth (Google, GitHub), sessions cookies
  4. Définir les permissions : règles par rôle (admin, user, anon)
  5. Hooks custom : TypeScript functions avant/après chaque opération
  6. CLI : npx bknd migrate pour les migrations versionnées

Alternatives

  • Supabase — BaaS complet (PostgreSQL + Auth + Realtime + Storage), plus lourd, plus de features
  • Appwrite — Alternative open source BaaS, PHP backend, écosystème mature
  • PocketBase — BaaS Go/SQLite ultra-léger, fichier unique, idéal pour petits projets
  • Directus — Headless CMS sur base SQL existante, orienté contenu
  • Firebase — Propriétaire Google, lock-in fort
  • Nhost — Alternative Supabase (GraphQL + Hasura + Auth)

Sécurité

  • 🔐 JWT_SECRET robuste obligatoire en production : openssl rand -hex 64
  • 🛡️ HTTPS obligatoire via [[app-traefik]] : tous les payloads d'auth transitent chiffrés
  • 🔒 Rate limiting : configurer un reverse proxy (Traefik, Caddy) ou middleware
  • 🛡️ Validation Zod systématique des inputs (anti-injection)
  • 🛡️ CORS : whitelister les origines frontend autorisées
  • 🛡️ Permissions par rôle : ne jamais exposer /admin à anon

Ressources