Skip to content

Roadmap and Milestones

Karthik P edited this page Oct 25, 2026 · 7 revisions

Roadmap & Milestones

Blinkql is built in milestones. Each one ends with a working, deployed app and, where relevant, published benchmark results. Progress is tracked in GitHub Milestones and issues.

Legend: ✅ Done · 🛠️ In progress · 🔜 Planned

flowchart LR
  M0["M0<br/>Foundations"] --> M1["M1<br/>Core query loop"] --> M2["M2<br/>Perf pass I"] --> M3["M3<br/>Explore & visualize"]
  M3 --> M4["M4<br/>Big files & persistence"] --> M5["M5<br/>Operations pack"] --> M6["M6<br/>Perf pass II"] --> M7["M7<br/>v1.0"]
Loading

M0: Foundations ✅

Goal: a solid base so every later change is fast, safe and measurable.

  • Vite + React + TypeScript (strict) scaffold with shadcn/ui and Tailwind CSS
  • Biome, Vitest and Playwright configured
  • GitHub Actions CI: typecheck, lint, test, build
  • Vercel production and preview deployments, with cross-origin isolation headers
  • Benchmark harness skeleton and deterministic dataset generator
  • Issue and PR templates, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md
  • Landing page that says what Blinkql is, says plainly that it's a work in progress, and invites contributors, designed to the Design Language (#72)

Exit criteria: CI green on main; app shell live at blinkql.vercel.app; landing page live, showing work-in-progress status and inviting contributors; pnpm bench runs end to end on a stub scenario.

M1: Core query loop (intentionally naive) ✅

Goal: a working workbench, and an honest baseline.

  • Load DuckDB-wasm; import CSV, Parquet and JSON by drag and drop
  • SQL editor with a run shortcut, a results table and a table list
  • Readable error messages
  • A deliberately simple implementation: results converted to row objects, kept in React state and rendered as a plain table

Exit criteria: a 1M-row file queried end to end; baseline benchmark (P-01) published.

M2: Performance pass I, never block the UI ✅

  • Results kept as Arrow, with lazy cell reads (no row-object conversion)
  • Results stored outside React state
  • Virtualized results grid
  • Streaming record batches
  • Query cancellation and superseded-query handling

Exit criteria: no main-thread task over 50 ms during queries; write-ups P-02 to P-06 published.

M3: Explore & visualize ✅

  • Schema browser with column types and statistics; one-click profiling (SUMMARIZE)
  • Schema-aware autocomplete
  • Chart builder (bar, line, scatter, histogram, Pareto) with SQL-side aggregation
  • Query history and saved queries
  • Export to CSV, Parquet and PNG

Exit criteria: in a usability check with 3–5 people, someone who doesn't write SQL can profile a file and build a chart in under a minute.

M4: Big files & persistence 🛠️

  • OPFS persistence: reopen previously imported datasets instantly
  • Optional CSV → Parquet conversion on import
  • Remote Parquet and CSV by URL
  • Memory guardrails: size warnings, graceful out-of-memory recovery, engine restart

Exit criteria: previous datasets available immediately after a reload; a remote Parquet schema inspected without a full download.

M5: Operations analytics pack 🔜

  • Synthetic manufacturing sample datasets: telemetry, breakdowns, shifts, quality
  • Templates: OEE, downtime Pareto, MTTR/MTBF, shift-aware reporting (including night shifts across midnight), two-file reconciliation, data-quality checks for import files
  • Column mapping, so templates run against any user's file

Exit criteria: every template runs on the sample data and on a user file with mapped columns.

M6: Performance pass II, cold start & rendering 🔜

  • Lazy engine loading after the app shell; self-hosted engine with long-term caching
  • Service worker caching and offline mode (PWA)
  • Canvas-rendered results grid
  • Single-threaded vs multithreaded engine evaluation
  • Code-split editor and charts
  • Performance regression checks in CI

Exit criteria: all performance budgets met; CI fails on budget regression.

M7: v1.0 🔜

  • Accessibility pass: keyboard-only flows, screen-reader labels, axe-clean core flows
  • Keyboard shortcuts and a command palette
  • Shareable query links (SQL and chart settings only, never data)
  • Onboarding tour using the sample datasets
  • Complete documentation and v1.0 release notes

Exit criteria: the success metrics are met; v1.0 tagged.

Beyond 1.0: ideas under discussion

Not committed. Open for discussion and contributions:

  • Natural-language-to-SQL assistant, strictly opt-in, using a bring-your-own API key or an in-browser model, with a clear disclosure of exactly what is sent
  • Notebook-style analyses with multiple query and chart cells
  • Export an analysis as a self-contained HTML report
  • Excel (.xlsx) import
  • Geospatial queries with the DuckDB spatial extension, for plant layouts and logistics
  • The results grid as a standalone, embeddable package
  • More template packs: logistics, retail, finance, workforce analytics

Have an idea? Start a thread in Discussions.

Clone this wiki locally