Files
2026-06-09 18:40:21 +02:00

6.0 KiB


title: bknd created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, backend, typescript, supabase-alternative, api, low-code] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/bknd-io/bknd]

💻 bknd

Le backend TypeScript léger et typé : créez une API REST, une base de données et de l'authentification en quelques minutes, sans la lourdeur de Supabase ou Firebase.

📋 Informations Générales

Champ Valeur
Site web bknd.io
GitHub bknd-io/bknd
License MIT
Langage TypeScript
Étoiles GitHub 3,7k
Dernière MAJ 2026-06-07
Catégorie cat-development, Backend-as-a-Service

📝 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

🔗 Pages Liées