Repository navigation
Roadmap and 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"]
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
⚡ Blinkql: queries in the blink of an eye · MIT licensed · Live app · Issues · Discussions
Project
Engineering
- Tech Stack
- Architecture
- Performance & Benchmarks
- Decision Records (ADRs)
- Privacy & Security
- Browser Support & Limitations
Design
Community