Kord

A lightweight versioned content and data storage platform built on Nuxt 3 and Cloudflare edge ecosystem. Manages subtitles, prompts, notes, and structured JSON data with full version history.
NuxtNitroCloudflareEdge ComputingDrizzle ORM

Kord: Versioned Content & Data Storage on Cloudflare Edge

A lightweight content and data storage platform focused on receiving and managing subtitles, prompts, notes, and structured data, with complete version history.

🌐 Live Demo: https://kord.sedationh.top


Core Scenarios

1. Video Subtitle Archival

Save subtitle files with Canonical Keys to ensure one video only has one copy.

  • Input https://youtube.com/watch?v=dQw4w9WgXcQ β†’ automatically parsed to youtube:dQw4w9WgXcQ
  • Next time you save subtitles for the same video, it updates the same resource instead of creating duplicates

2. Text Version Evolution

Perfect for content that requires iterative refinement:

  • Prompt tuning - Each modification creates an immutable snapshot
  • Translation polishing - Roll back to any previous version anytime
  • Draft auto-save - Real-time sync while editing

3. Structured Data Storage

Through the data: type, store JSON data for various lightweight storage scenarios:

KeyUse CaseExample Data
data:blog-statsBlog likes count{"likes": {"post-1": 42}}
data:site-configSite configuration{"theme": "dark"}
data:reading-listReading progress[{"title": "Book", "progress": 0.5}]

4. Workflow Integration

Open API via Personal Access Token (PAT) for AI Agents or automation workflows - serving as a versioned storage backend for your automation pipelines.


Architecture Design

Metadata-Blob Separation Architecture - distributing data across different Cloudflare components based on access frequency.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Cloudflare Edge                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚   D1 (SQL)  β”‚  β”‚  KV (K/V)   β”‚  β”‚  R2 (Blob)  β”‚       β”‚
β”‚  β”‚   Metadata  β”‚  β”‚   Drafts    β”‚  β”‚  Snapshots  β”‚       β”‚
β”‚  β”‚   Warm      β”‚  β”‚   Hot       β”‚  β”‚   Cold      β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜       β”‚
β”‚         β”‚                β”‚                β”‚               β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β”‚
β”‚                          β”‚                                β”‚
β”‚                β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”‚
β”‚                β”‚  Nuxt 3 (Nitro)   β”‚                      β”‚
β”‚                β”‚   Edge Runtime    β”‚                      β”‚
β”‚                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚
                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚     Client      β”‚
                  β”‚   (Vue 3 SPA)   β”‚
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Data Tiering

TierStoragePurposeCharacteristics
Hot πŸ”₯KVCurrent stateReal-time sync on every change
Warm πŸ“ŠD1Metadata & summariesFast list page queries
Cold ❄️R2Immutable snapshotsFrozen on commit

Tech Stack

LayerTechnologyDescription
Full-stack FrameworkNuxt 3Vue 3 based full-stack framework
Server EngineNitroNative Cloudflare Workers support, cold start <10ms
Metadata LayerCloudflare D1Edge SQLite for indexes, versions, tokens
Active Content LayerCloudflare KVLow-latency key-value storage
Archive LayerCloudflare R2Object storage for immutable snapshots
ORMDrizzle ORMEdge-optimized, type-safe, zero runtime overhead

Canonical Key System

All user inputs are normalized into canonical keys for deduplication:

Input TypeCanonical KeyContent Format
data:KEYdata:blog-statsJSON
YouTube URLyoutube:VIDEO_IDMarkdown
Bilibili URLbilibili:BVIDMarkdown
Other URLurl:SHA256_HASHMarkdown
Custom notenote:SLUGMarkdown

The same canonical key can only have one resource per user - achieving automatic deduplication.


Authentication

Dual-track authentication system balancing UI interaction and API automation:

1. UI Interaction (GitHub OAuth)

  • Sealed Session Cookie with edge-local decryption
  • No database query needed for verification

2. API Access (PAT)

  • For AI Agents, CLI, and automation scripts
  • Backend stores only SHA-256 hash, supports instant revocation

Key Features

  • βœ… Content & structured data storage with version control
  • βœ… Canonical key deduplication (YouTube, Bilibili, URLs, notes)
  • βœ… Dual-track authentication (OAuth + PAT)
  • βœ… Real-time draft auto-save
  • βœ… Edge deployment with global low latency
  • βœ… Responsive UI (mobile-friendly)

Kord serves as a lightweight, versioned storage backend - whether you’re archiving video subtitles, tuning AI prompts, or storing application data. Give it a try at kord.sedationh.top.