Zum Inhalt springen
IN ENTWICKLUNGGebaut auf Cloudflare00 / TAPEDB

Deine Daten.Immer synchron.

Eine typisierte Datenbank für die Apps, die du bauen willst. Live-Queries, Schreibzugriffe im Offline-Modus und eine Historie, die du erneut abspielen kannst. Alles in deinem eigenen Cloudflare-Account.

  • TypeScript-first
  • Core ohne Runtime-Abhängigkeiten
  • Deine Infrastruktur
  1. 00:00:01.204tx_0193task.create
  2. 00:00:00.977tx_0192task.update
  3. 00:00:00.418tx_0191client.connect
  4. 00:00:00.000tx_0190schema.define

Jeder Schreibvorgang landet auf dem Tape.

01EINMAL SCHREIBEN. ZUSEHEN, WIE ES ANKOMMT.

EINMAL SCHREIBEN. ZUSEHEN, WIE ES ANKOMMT.

WORKSPACELAUNCHDEMO
app.tsCLIENT 01
// Eine Query. Eine Live-Ansicht. Dieselbe API.
db.task.findMany({
  where: { done: false },
}).subscribe(({ data }) => render(data));

// Ein Schreibvorgang erreicht jeden Subscriber.
await db.task.create({
  data: { title: "Log erneut abspielen" },
});
Durchgehend typisiert. Keine Query-Strings.
CLIENT 0203 AUFGABEN

PROJEKT

Erstes Projekt

  • Schema definierenFERTIG
  • Client verbindenFERTIG
  • Query abonnierenIN ARBEIT
TRANSAKTIONS-TAPE00:00:01.204workspace.ready
02GEBAUT AUF BAUSTEINEN, DENEN DU SCHON VERTRAUST.

GEBAUT AUF BAUSTEINEN, DENEN DU SCHON VERTRAUST.

  • Cloudflare Workers
  • Durable Objects
  • SQLite
  • R2 Objektspeicher
03DIE APPLIKATION GEHÖRT DIR. DIE DATEN AUCH.

Live, offline und replaybar.

Definiere ein Schema. Verbinde einen Client. Abonniere eine Query. TapeDB übernimmt Subscriptions, die Offline-Outbox und das Transaktionslog.

  • ALIVE

    Live, per Subscription.

    Abonniere eine Query und erhalte Updates auf Zeilenebene, sobald sich relevante Daten ändern. Dieselbe API für einmaliges Lesen oder eine Live-Ansicht.

    Queries & Subscriptions
  • BOFFLINE

    Offline ist nicht das Ende.

    Schreibvorgänge auf einzelne Zeilen werden optimistisch angewendet und in einer persistenten Outbox eingereiht. Verbinde dich neu und mach dort weiter, wo du aufgehört hast.

    Der Offline-Schreibpfad
  • CHISTORIE

    Eine Historie, auf die du bauen kannst.

    Transaktionen landen in einem Log. Segmente und Snapshots gehen nach R2, bereit zum erneuten Abspielen und zur Wiederherstellung, wenn es nötig ist.

    Ein Blick in das Transaktions-Tape
04SCHEMA, TYPEN UND MIGRATIONEN

Modell definieren.
Typen folgen.

Felder, Relationen und Zugriffsregeln in TypeScript. Dein Schema prägt Engine, Migrationen und Client-Typen.

  1. 01Eine Definition. Modelle steuern deine Datenschicht.
  2. 02Echte Relationen. Verknüpfe deine Modelle und frag sie ab.
  3. 03Geprüfte Migrationen. SQL, das du committen kannst.
Die Model-API kennenlernen
tapedb.schema.tsTS
import { schema, model, t } from "tapedb/schema";

export default schema({
  project: model({
    name: t.string(),
    tasks: t.hasMany("task"),
  }),
  task: model({
    title: t.string(),
    done: t.boolean().default(false),
    project: t.belongsTo("project"),
  }),
});
Das Schema steuert Typen und Migrationen.
05KLEINE TEILE. EIN DURCHDACHTES SYSTEM.

Ein Workspace. Ein Writer. Ein Tape.

Jeder Workspace hat ein Durable Object und eine SQLite-Datenbank. Ein einziger Writer macht Transaktionen serialisierbar. R2 gibt dem Log ein Ziel.

  1. 01CLIENT

    Deine Applikation

    • Typisierte Queries
    • Live-Subscriptions
    • Persistente Outbox
    TYPESCRIPT
  2. Verbindung: HTTP / WS
  3. 02WORKSPACE

    Durable Object

    • Single Writer
    • SQLite-Datenbank
    • Zugriffsregeln
    EINS PRO WORKSPACE
  4. Verbindung: asynchroner Flush
  5. 03SPEICHER

    Das Tape in R2

    • Log-Segmente
    • Zustands-Snapshots
    • Wiederherstellung & Replay
    DEINE BUCKETS

Deine Infrastruktur. Deine Applikation liefert die Identität; TapeDB verwaltet die Workspace-Daten.

Zur Architektur
06AUF DEM WEG ZUM ÖFFENTLICHEN RELEASE

Validiert.
Vor dem Release.

TapeDB ist in Entwicklung. Wir validieren den vollständigen Weg vom installierten Paket bis zur laufenden Datenbank, bevor wir den Quellcode öffnen und die Verfügbarkeit ankündigen.

Pre-1.0. Die API kann sich noch ändern. Öffentlicher Release noch nicht angekündigt.