{"id":15046943,"url":"https://github.com/palixir/wabe","last_synced_at":"2026-02-21T16:08:29.835Z","repository":{"id":255438306,"uuid":"806712003","full_name":"palixir/wabe","owner":"palixir","description":"Your backend without vendor lock-in in Typescript","archived":false,"fork":false,"pushed_at":"2025-11-22T19:46:08.000Z","size":47092,"stargazers_count":158,"open_issues_count":11,"forks_count":19,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-11-22T21:11:52.580Z","etag":null,"topics":["backend","backend-as-a-service","bun","database","firebase","graphql","hooks","javascript","mongodb","nodejs","performance","permissions","security","typescript","wabe"],"latest_commit_sha":null,"homepage":"https://palixir.github.io/wabe","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palixir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-05-27T18:32:39.000Z","updated_at":"2025-11-22T19:18:54.000Z","dependencies_parsed_at":"2024-11-12T13:23:02.969Z","dependency_job_id":"1fd7af50-c22d-4b3c-bd96-902cc9145f91","html_url":"https://github.com/palixir/wabe","commit_stats":{"total_commits":548,"total_committers":3,"mean_commits":"182.66666666666666","dds":"0.20255474452554745","last_synced_commit":"5e73438ac9d1b8accbfe4ebd32841bce74c4ddfc"},"previous_names":["palixir/wabe"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/palixir/wabe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palixir%2Fwabe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palixir%2Fwabe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palixir%2Fwabe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palixir%2Fwabe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palixir","download_url":"https://codeload.github.com/palixir/wabe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palixir%2Fwabe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28751065,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T09:58:17.166Z","status":"ssl_error","status_checked_at":"2026-01-25T09:55:56.104Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","backend-as-a-service","bun","database","firebase","graphql","hooks","javascript","mongodb","nodejs","performance","permissions","security","typescript","wabe"],"created_at":"2024-09-24T20:53:47.353Z","updated_at":"2026-01-25T10:02:41.660Z","avatar_url":"https://github.com/palixir.png","language":"TypeScript","readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003eWabe\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e🚀 A fully open-source \u003cstrong\u003eFirebase alternative\u003c/strong\u003e built in TypeScript\u003c/p\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/palixir/wabe\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/palixir/wabe?style=flat-square\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/wabe\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/wabe?style=flat-square\" /\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache--2.0-green?style=flat-square\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\nWabe is a modern, batteries-included backend-as-a-service designed for developers who want the flexibility of self-hosting with the ease of Firebase.\n\nYou define your models → Wabe instantly generates:\n- a **secure GraphQL API**\n- **auth**, **permissions**, **hooks**, **emails**, **files**, and more\n- a fully extensible backend written in clean TypeScript\n\nNo vendor lock-in. No hidden limits.  \nHost it anywhere.\n\n📚 **Documentation:** [https://palixir.github.io/wabe](https://palixir.github.io/wabe)\n\n---\n\n# ✨ Features\n\n| Feature                  | Description                                                                 |\n|--------------------------|-----------------------------------------------------------------------------|\n| 🔐 Authentication        | Email/password, OTP, OAuth (Google, GitHub), password reset, email verification |\n| 🔑 Permissions           | Fine-grained access control at collection, object, and field levels with secure defaults |\n| ⚡ Auto-generated GraphQL | Fully typed CRUD GraphQL API generated from your schema, ready for production |\n| 🔄 Hooks                  | Custom logic before/after create, update, delete, and read operations      |\n| 📨 Email providers        | Resend (official adapter) or custom adapters                                |\n| 🗄️ Database adapters      | MongoDB, PostgreSQL (official), or your own adapter                          |\n| 📦 Modular architecture   | Replaceable and extensible modules: auth, storage, email, database, permissions |\n| 🌍 Self-host anywhere     | Docker, Node, Bun, Fly.io, Render, Railway, Hetzner, Raspberry Pi           |\n\n\n---\n\n# 🚀 Quickstart\n\n### 1. Install\n\n```bash\nnpm install wabe\n# or\nbun add wabe\n```\n\n### 2. Create your schema and start your server\n\n``` ts\nimport { Wabe } from \"wabe\";\nimport { MongoAdapter } from \"wabe-mongodb\";\n\nconst run = async () =\u003e {\n  const wabe = new Wabe({\n    isProduction: process.env.NODE_ENV === \"production\",\n    // Root key example (must be long minimal 64 characters, you can generate it online)\n    rootKey:\n      \"0uwFvUxM$ceFuF1aEtTtZMa7DUN2NZudqgY5ve5W*QCyb58cwMj9JeoaV@d#%29v\u0026aJzswuudVU1%nAT+rxS0Bh\u0026OkgBYc0PH18*\",\n    database: {\n      adapter: new MongoAdapter({\n        databaseName: \"WabeApp\",\n        databaseUrl: \"mongodb://127.0.0.1:27045\",\n      }),\n    },\n    schema: {\n      classes: [\n        {\n          name: 'User',\n          description: 'User class',\n          fields: {\n            name: {\n              type: 'String',\n            },\n            age: {\n              type: 'Int',\n            },\n            email: {\n              type: 'Email',\n              required: true,\n            },\n          },\n        },\n      ]\n    },\n    port: 3000,\n  });\n\n  await wabe.start();\n};\n\nawait run();\n```\n\n### 3. Query your API\n\n``` graphql\nmutation createUser {\n  createUser(input: { fields: {name: \"Wabe\", email: \"mybackend@wabe.com\", age: 10} }) {\n      user {\n        id\n        name\n      }\n  }\n}\n```\n\n\n# 🧩 Official Templates\n\nWabe comes with a set of official templates to help you bootstrap projects instantly:\n\n| Template               | Stack          | Description                     | Status         |\n|------------------------|----------------|---------------------------------|----------------|\n| **wabe-starter**       | Wabe + Node    | Minimal starter backend         | 🟡 Coming soon   |\n| **wabe-next-template** | Next.js + Wabe | Authentication + CRUD boilerplate | 🟡 Coming soon |\n| **wabe-saas-kit**      | Wabe + Wobe    | SaaS starter kit with Stripe    | 🟡 Coming soon |\n\nMore templates are added regularly based on community needs.\n\n---\n\n# 🌱 Ecosystem\n\n### **Wobe — Full-stack web framework**\n\nWobe is a lightweight, TypeScript-first full-stack framework designed to pair naturally with Wabe.  \nFor a seamless frontend + backend developer experience:\n\n👉 https://github.com/palixir/wobe\n\n### **GraphQL Server (coming soon)**\n\nA modern, type-safe GraphQL server designed as a companion to Wabe.  \nOptimized for DX, performance, and full extensibility.\n\n---\n\n# 🗺️ Roadmap\n\n- [x] PostgreSQL adapter  \n- [ ] Admin dashboard UI  \n- [x] File storage adapters (S3, Cloudflare R2, etc.)  \n- [ ] CLI (`wabe init`, `wabe generate`)  \n- [ ] SaaS starter kit  \n- [ ] Improved documentation  \n\n---\n\n# 🤝 Contributing\n\nContributions are welcome!  \nBefore opening a PR, check the `CONTRIBUTING.md` and join the community.\n\n---\n\n# ❤️ Sponsors\n\nWabe is 100% open-source and maintained in my free time.  \nIf you want to support development:\n\n👉 **GitHub Sponsors:** https://github.com/sponsors/coratgerl  \n\n**Sponsors receive:**  \n- Access to a complete, fully tested boilerplate with an admin dashboard to manage users (Vite, Tailwind, Playwright, Wabe, Bun, GraphQL, etc.)  \n- Your name featured in the `README.md`  \n\nYour 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.\n\n---\n\n# ⭐ Show your support\n\nIf you like the project, please consider starring the repository:\n⭐ → It helps more than you think.","funding_links":["https://github.com/sponsors/coratgerl"],"categories":["\u003ca name=\"TypeScript\"\u003e\u003c/a\u003eTypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalixir%2Fwabe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalixir%2Fwabe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalixir%2Fwabe/lists"}