https://github.com/palixir/wabe
Your backend without vendor lock-in in Typescript
https://github.com/palixir/wabe
backend backend-as-a-service bun database firebase graphql hooks javascript mongodb nodejs performance permissions security typescript wabe
Last synced: 14 days ago
JSON representation
Your backend without vendor lock-in in Typescript
- Host: GitHub
- URL: https://github.com/palixir/wabe
- Owner: palixir
- License: apache-2.0
- Created: 2024-05-27T18:32:39.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-11-22T19:46:08.000Z (3 months ago)
- Last Synced: 2025-11-22T21:11:52.580Z (3 months ago)
- Topics: backend, backend-as-a-service, bun, database, firebase, graphql, hooks, javascript, mongodb, nodejs, performance, permissions, security, typescript, wabe
- Language: TypeScript
- Homepage: https://palixir.github.io/wabe
- Size: 44.9 MB
- Stars: 158
- Watchers: 4
- Forks: 19
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome - palixir/wabe - Your backend without vendor lock-in in Typescript (<a name="TypeScript"></a>TypeScript)
README
Wabe
π A fully open-source Firebase alternative built in TypeScript
---
Wabe is a modern, batteries-included backend-as-a-service designed for developers who want the flexibility of self-hosting with the ease of Firebase.
You define your models β Wabe instantly generates:
- a **secure GraphQL API**
- **auth**, **permissions**, **hooks**, **emails**, **files**, and more
- a fully extensible backend written in clean TypeScript
No vendor lock-in. No hidden limits.
Host it anywhere.
π **Documentation:** [https://palixir.github.io/wabe](https://palixir.github.io/wabe)
---
# β¨ Features
| Feature | Description |
|--------------------------|-----------------------------------------------------------------------------|
| π Authentication | Email/password, OTP, OAuth (Google, GitHub), password reset, email verification |
| π Permissions | Fine-grained access control at collection, object, and field levels with secure defaults |
| β‘ Auto-generated GraphQL | Fully typed CRUD GraphQL API generated from your schema, ready for production |
| π Hooks | Custom logic before/after create, update, delete, and read operations |
| π¨ Email providers | Resend (official adapter) or custom adapters |
| ποΈ Database adapters | MongoDB, PostgreSQL (official), or your own adapter |
| π¦ Modular architecture | Replaceable and extensible modules: auth, storage, email, database, permissions |
| π Self-host anywhere | Docker, Node, Bun, Fly.io, Render, Railway, Hetzner, Raspberry Pi |
---
# π Quickstart
### 1. Install
```bash
npm install wabe
# or
bun add wabe
```
### 2. Create your schema and start your server
``` ts
import { Wabe } from "wabe";
import { MongoAdapter } from "wabe-mongodb";
const run = async () => {
const wabe = new Wabe({
isProduction: process.env.NODE_ENV === "production",
// Root key example (must be long minimal 64 characters, you can generate it online)
rootKey:
"0uwFvUxM$ceFuF1aEtTtZMa7DUN2NZudqgY5ve5W*QCyb58cwMj9JeoaV@d#%29v&aJzswuudVU1%nAT+rxS0Bh&OkgBYc0PH18*",
database: {
adapter: new MongoAdapter({
databaseName: "WabeApp",
databaseUrl: "mongodb://127.0.0.1:27045",
}),
},
schema: {
classes: [
{
name: 'User',
description: 'User class',
fields: {
name: {
type: 'String',
},
age: {
type: 'Int',
},
email: {
type: 'Email',
required: true,
},
},
},
]
},
port: 3000,
});
await wabe.start();
};
await run();
```
### 3. Query your API
``` graphql
mutation createUser {
createUser(input: { fields: {name: "Wabe", email: "mybackend@wabe.com", age: 10} }) {
user {
id
name
}
}
}
```
# π§© Official Templates
Wabe comes with a set of official templates to help you bootstrap projects instantly:
| Template | Stack | Description | Status |
|------------------------|----------------|---------------------------------|----------------|
| **wabe-starter** | Wabe + Node | Minimal starter backend | π‘ Coming soon |
| **wabe-next-template** | Next.js + Wabe | Authentication + CRUD boilerplate | π‘ Coming soon |
| **wabe-saas-kit** | Wabe + Wobe | SaaS starter kit with Stripe | π‘ Coming soon |
More templates are added regularly based on community needs.
---
# π± Ecosystem
### **Wobe β Full-stack web framework**
Wobe is a lightweight, TypeScript-first full-stack framework designed to pair naturally with Wabe.
For a seamless frontend + backend developer experience:
π https://github.com/palixir/wobe
### **GraphQL Server (coming soon)**
A modern, type-safe GraphQL server designed as a companion to Wabe.
Optimized for DX, performance, and full extensibility.
---
# πΊοΈ Roadmap
- [x] PostgreSQL adapter
- [ ] Admin dashboard UI
- [x] File storage adapters (S3, Cloudflare R2, etc.)
- [ ] CLI (`wabe init`, `wabe generate`)
- [ ] SaaS starter kit
- [ ] Improved documentation
---
# π€ Contributing
Contributions are welcome!
Before opening a PR, check the `CONTRIBUTING.md` and join the community.
---
# β€οΈ Sponsors
Wabe is 100% open-source and maintained in my free time.
If you want to support development:
π **GitHub Sponsors:** https://github.com/sponsors/coratgerl
**Sponsors receive:**
- Access to a complete, fully tested boilerplate with an admin dashboard to manage users (Vite, Tailwind, Playwright, Wabe, Bun, GraphQL, etc.)
- Your name featured in the `README.md`
Your support helps keep Wabe sustainable and actively maintained, and allows me to continue creating new projects in my free time to help developers have solid backends with minimal effort.
---
# β Show your support
If you like the project, please consider starring the repository:
β β It helps more than you think.