One todo app, running on two backends, with a one-click migrate between them. The center panel is the app; the left and right panels are the raw database rows, so you can watch what the app writes and see it move when you migrate.
pnpm install
pnpm demoOpen http://localhost:8788. By default it runs entirely in-memory in your browser: no server, no database, nothing saved. This is also what's published to GitHub Pages, so a public visitor can never touch a real database.
The demo only ever talks to backends you run, never a shared one:
- Start your own local Supabase and Convex:
Your
# Supabase (needs Docker): from packages/adapter-supabase supabase start # Convex (in another terminal): from packages/adapter-convex npx convex dev
todostable needs amigratedFrom textcolumn for the migrate to land (Supabase:alter table todos add column "migratedFrom" text;). - Point the demo at them:
cp demo/config.example.js demo/config.js # edit demo/config.js: set mode:"real" and fill in your URLs + anon keydemo/config.jsis gitignored, so your keys never get committed. pnpm demoagain. It now reads and writes your real Supabase and Convex.
Most setup is faster to hand to a coding agent. Copy/paste:
Clone https://github.com/2bTwist/baasdk and run
pnpm install, thenpnpm demo. Open http://localhost:8788 and confirm the demo loads: add a couple of todos, check one off, and click the provider toggle to watch the todos migrate to the other backend. It runs fully in-memory, so no database is needed. If I ask for real backends, start a local Supabase (supabase start, needs Docker) and Convex (npx convex dev), add a"migratedFrom" textcolumn to thetodostable, then copydemo/config.example.jstodemo/config.js, setmode:"real"with the local URLs and anon key, and runpnpm demoagain.
baasdk is a weekend project, not a product (see the root README). This demo is for playing with the API, not a benchmark of either backend.