1. Installeer
De QawayahBase SDK werkt in Node, browsers en React Native. Voor bestaande PocketBase code kun je ook direct pocketbase gebruiken — dezelfde API.
# via npm npm install qawayahbase # of via pnpm / yarn pnpm add qawayahbase yarn add qawayahbase
2. Verbind met je project
Elk project krijgt een eigen URL. Gebruik <slug>.qawayahbase.com voor database/auth, en api.qawayahbase.com/functions voor edge functions.
import Qawayah from "qawayahbase"; const pb = new Qawayah("https://mijn-app.qawayahbase.com");
3. Auth
Email + wachtwoord, OAuth (Google), en password reset out of the box.
// Sign up await pb.signUp("user@example.com", "geheim"); // Sign in const session = await pb.signIn("user@example.com", "geheim"); // Current user const user = pb.getUser(); // Sign out pb.signOut();
4. Collections (database)
Iedere "table" is een collection. Maak ze aan via het dashboard of via de admin API.
// Lijst records const posts = await pb .collection("posts") .getFullList({ sort: "-created" }); // Maak record const post = await pb.collection("posts").create({ title: "Mijn eerste post", body: "Hallo wereld", published: true, }); // Update / delete await pb.collection("posts").update(post.id, { published: false }); await pb.collection("posts").delete(post.id);
5. Storage (bestanden)
Voeg een file veld toe aan een collection. Upload via FormData, haal URL op via PocketBase's file endpoint.
// Upload bij create const fd = new FormData(); fd.append("avatar", file); fd.append("naam", "Brahim"); await pb.collection("profiles").create(fd); // File URL const url = `${pb.url}/api/files/${rec.collectionId}/${rec.id}/${rec.avatar}`;
6. Realtime subscriptions
Server-Sent Events (SSE) over /api/realtime. Luister naar create/update/delete events in een collectie en reageer direct — geen polling nodig.
Alle events op een collectie
pb.collection("posts") .subscribe("*", e => { // e.action = "create" | "update" | "delete" console.log(e.action, e.record); });
Eén specifiek record volgen
pb.collection("posts").subscribe(postId, cb);
Gefilterde subscription — alleen posts van één user
pb.collection("posts").subscribe("*", cb, { filter: `user_id = "${currentUser.id}"`, });
Stop listeners
// Eén collectie pb.collection("posts").unsubscribe(); // Alles pb.realtime.unsubscribe();
💡 Goed om te weten
- Subscriptions respecteren je collection's
viewRule— users zien alleen wat ze mogen zien. - Auto-reconnect bij netwerk-onderbreking (ingebouwd in SDK).
- Één TCP connection per client, ongeacht aantal subscriptions.
- React Native: werkt identiek via dezelfde SDK.
7. Edge functions
Deploy custom server-side logica via dashboard of CLI. Beschikbaar op api.qawayahbase.com/functions/fn/<naam>.
// Deploy via CLI qawayahbase deploy hello ./hello.js // Aanroep vanuit je app const r = await fetch( "https://api.qawayahbase.com/functions/fn/hello" ); const data = await r.json();
8. CLI
De qawayahbase npm package bevat ook een CLI.
npm install -g qawayahbase qawayahbase init # login + config qawayahbase projects # toon je projecten qawayahbase deploy hello hello.js # deploy edge function qawayahbase whoami # current user qawayahbase logout
Config wordt opgeslagen in ~/.qawayahbase/config.json (mode 0600).
9. API referentie
QawayahBase is PocketBase-compatible. Alle PocketBase REST API endpoints werken 1-op-1:
GET/api/collections/:name/recordsPOST/api/collections/:name/recordsPATCH/api/collections/:name/records/:idDELETE/api/collections/:name/records/:idPOST/api/collections/:name/auth-with-passwordPOST/api/collections/:name/auth-refreshGET/api/files/:collection/:id/:filenameGET/api/realtimeZie ook de PocketBase docs voor query filters, sort syntax en expand.