The Reactive, Local-First Framework for SurrealDB
⚠️ Under active development — not production-ready. APIs may change without notice.
- Live Queries — Your UI updates instantly when data changes
- Local-First — Works offline using IndexedDB, syncs when back online
- End-to-End Type Safety — Generated TypeScript definitions from your SQL schema
- Optimistic UI — Immediate feedback for user actions while syncing in the background
pnpm add @spooky-sync/client-solidnpx @spooky-sync/cli generateimport { useQuery } from '@spooky-sync/client-solid';
import { db } from './db';
const ThreadList = () => {
const threads = useQuery(() => db.query('thread').select('*').all());
return (
<ul>
<For each={threads.data}>{(thread) => <li>{thread.title}</li>}</For>
</ul>
);
};| Package | Description |
|---|---|
@spooky-sync/core |
Core client SDK — sync engine, caching, reactivity |
@spooky-sync/client-solid |
SolidJS bindings (useQuery, etc.) |
@spooky-sync/query-builder |
Type-safe query builder |
@spooky-sync/cli |
CLI for schema generation |
Check out the full-featured reference app built with SolidJS:
cd example/app-solid && pnpm install && pnpm devFull documentation is available at mono424.github.io/spooky.
Contributions are welcome! This is a monorepo — see the individual package directories under packages/ for details.
If you find Spooky useful, consider giving it a ⭐ on GitHub!