Skip to content

A modern take on SQL and SQL databases that checks all the boxes for modern apps

License

Notifications You must be signed in to change notification settings

linked-db/linked-ql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

LinkedQL

A modern take on SQL and SQL databases

npm version npm downloads bundle License

LinkedQL Banner

Simplify and unify your entire database layer in a single interface πŸ›Έ
LinkedQL is a database client (client.query()) for PostgreSQL and MySQL/MariaDB, but more broadly, an idea: SQL reimagined for modern apps β†— LinkedQL solves reactivity, relationships, JSON, schemas, embedding, federation & sync, and more in under 80 KiB min | zip.


Note

You’re viewing @linked-db/linked-ql β€” the newest iteration.
For the prev 0.3.x branch, see linked-db/[email protected].*.

Important

πŸš€ LinkedQL is in active development and evolving daily. Current status = alpha.
You’re welcome to experiment, but it’s not yet suited for production workloads.





Installation

LinkedQL is distributed as an npm package. Install it with:

npm install @linked-db/linked-ql

The package provides clients for all supported SQL dialects β€” including FlashQL, the in-memory SQL engine for local or offline use.

Initialization

Import and initialize the client for your use case. You can run either fully in-memory or with a database. Here are two quick examples:

Run Locally with FlashQL

FlashQL lets you run SQL queries entirely in memory β€” with zero setup.

import { FlashClient } from '@linked-db/linked-ql/flashql';

const client = new FlashClient();

const result = await client.query(`
  CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT);
  INSERT INTO users (name) VALUES ('Ada'), ('Linus');
  SELECT * FROM users;
`);

console.log(result.rows);
// [{ id: 1, name: 'Ada' }, { id: 2, name: 'Linus' }]

FlashQL is ideal for:

  • Local-first and offline-first apps
  • Running SQL over runtime data
  • Testing and prototyping

Connect to a Database

Connect to your database from the list of supported dialects below. Here’s an example using PostgreSQL:

import { PGClient } from '@linked-db/linked-ql/postgres';

const client = new PGClient({
  host: 'localhost',
  port: 5432,
  user: 'postgres',
  password: 'password',
  database: 'myapp',
});

await client.connect();

const result = await client.query(`SELECT 10 AS value`);
console.log(result.rows); // [{ value: 10 }]

await client.disconnect();

Clients & Dialects

Dialect Import Path Guide
PostgreSQL @linked-db/linked-ql/postgres PostgreSQL β†—
MySQL @linked-db/linked-ql/mysql MySQL β†—
MariaDB @linked-db/linked-ql/mariadb MariaDB β†—
FlashQL (In-Memory) @linked-db/linked-ql/flashql FlashQL β†—

Query Interface

LinkedQL maintains a unified and familiar interface across all dialects β€” whether remote or local. Method signatures and return values are consistent and documented in the Client API Reference β†—


Capabilities

Capability Description
⚑ Live Queries Turn on reactivity over any SQL query with { live: true }. No extra infrastructure required.
πŸ”— DeepRef Operators Traverse relationships using simple path notation (~> / <~). Insert or update nested structures using same notation.
🧩 JSON Literals Bring JSON-like clearity to your queries with LinkedQL's first-class support for JSON notation.
πŸͺ„ Upserts Do upserts with a literal UPSERT statement.
🧠 Schema Versioning (Coming soon) Get automatic schema versioning on your database: automatic snapshots and historical introspection.
πŸ’Ύ Edge & Offline Runtime (FlashQL) Run or embed SQL locally β€” in browsers, workers, or edge devices β€” for local-first and offline-first applications.
🌐 Federation & Sync (Alpha) Unify remote databases, REST endpoints, and local stores into a single relational graph with seamless synchronization.

Features

Feature Description
πŸ’» Classic client.query() Interface Same classic client interface; advanced capabalities for modern applications.
πŸ”— Multi-Dialect Support A universal parser that understands PostgreSQL, MySQL, MariaDB, and FlashQL β€” one client, many dialects.
πŸ’‘ Lightweight Footprint A full reactive data layer in one compact library β€” under 80 KiB (min/zip).
🎯 Automatic Schema Inference No upfront schema work. LinkedQL auto-discovers your schema and stays schema-driven across complex tasks.
πŸͺ„ Diff-Based Migrations (Coming soon) Evolve schemas declaratively through change detection instead of hand-written migration scripts.

Documentation

Visit the LinkedQL documentation site β†—

Jump to
Getting Started β†— Get started with LinkedQL in under three minutes. No database required
Capabilities Overview β†— Jump to the Capabilities section.
Meet FlashQL β†— Meet FlashQL β€” LinkedQL's embeddable SQL engine.
Engineering Deep Dive β†— Dig into LinkedQL's engineering in the engineering section.

⏳ Status

Component Status Note
Parser & Compiler 🟩 100% Stabilizing
Transform Engine 🟩 100% Stabilizing
Drivers (PG/MySQL) 🟩 97% Stabilizing; MySQL nearing parity
FlashQL Engine 🟩 99% Expanding
Realtime Engine 🟩 99% Stabilizing
Timeline Engine 🟨 20% Planned
Migration Wizard ⬜ 10% Planned
IDE Tooling ⬜ 5% Early hooks
Docs (vNext) 🟩 99% Expanding
Status Legend:

🟩 Complete | 🟨 In Progress | ⬜ Not Started

🀝 Contributing

LinkedQL is in active development β€” and contributions are welcome!

Here’s how you can jump in:

  • Issues β†’ Spot a bug or have a feature idea? Open an issue.
  • Pull requests β†’ PRs are welcome for fixes, docs, or new ideas.
  • Discussions β†’ Not sure where your idea fits? Start a discussion.

πŸ› οΈ Local Setup

β€· clone β†’ install β†’ test

git clone https://github.com/linked-db/linked-ql.git
cd linked-ql
git checkout next
npm install
npm test

πŸ“ Tips

  • Development happens on the next branch β€” be sure to switch to it as above after cloning.
  • Consider creating your feature branch from next before making changes (e.g. git checkout -b feature/my-idea).
  • Remember to npm test before submitting a PR.
  • Check the Progress section above to see where help is most needed.

πŸ”‘ License

MIT β€” see LICENSE