Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+157
View File
@@ -0,0 +1,157 @@
---
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](https://bknd.io/) |
| **GitHub** | [bknd-io/bknd](https://github.com/bknd-io/bknd) |
| **License** | MIT |
| **Langage** | TypeScript |
| **Étoiles GitHub** | 3,7k ⭐ |
| **Dernière MAJ** | 2026-06-07 |
| **Catégorie** | [[cat-development\|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)
```bash
# Créer un nouveau projet
npx create-bknd@latest mon-backend
cd mon-backend
npm install
npm run dev
```
### Via Docker (auto-hébergé)
```yaml
# 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
```bash
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
- [Site officiel](https://bknd.io/)
- [Documentation](https://docs.bknd.io/)
- [GitHub bknd-io/bknd](https://github.com/bknd-io/bknd)
- [Démo en ligne](https://demo.bknd.io/)
## 🔗 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