Documentatie

Start in 60 seconden.

Installeer de SDK, maak een project en query je data. Geen config files, geen DevOps.

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/records
POST/api/collections/:name/records
PATCH/api/collections/:name/records/:id
DELETE/api/collections/:name/records/:id
POST/api/collections/:name/auth-with-password
POST/api/collections/:name/auth-refresh
GET/api/files/:collection/:id/:filename
GET/api/realtime

Zie ook de PocketBase docs voor query filters, sort syntax en expand.

10. Hulp nodig?