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
- Définir le schéma dans
config.ts: tables, champs, relations, auth, permissions - Choisir la base de données : SQLite par défaut (zéro-setup), PostgreSQL en prod
- Configurer l'authentification : providers OAuth (Google, GitHub), sessions cookies
- Définir les permissions : règles par rôle (admin, user, anon)
- Hooks custom : TypeScript functions avant/après chaque opération
- CLI :
npx bknd migratepour 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
- cat-development — Catégorie Development
- app-supabase — BaaS de référence (alternative plus complète)
- app-appwrite — BaaS open source concurrent
- app-pocketbase — BaaS Go ultra-léger
- app-traefik — Reverse proxy HTTPS
- securisation-home-lab — Bonnes pratiques
- recettes-docker-compose — Templates Docker