Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mattf96s/QuackDB
Open-source in-browser DuckDB SQL editor
https://github.com/mattf96s/QuackDB
apache-arrow comlink duckdb duckdb-wasm parquet remix remix-run shadcn sql sst
Last synced: 23 days ago
JSON representation
Open-source in-browser DuckDB SQL editor
- Host: GitHub
- URL: https://github.com/mattf96s/QuackDB
- Owner: mattf96s
- License: mit
- Created: 2024-01-14T13:33:47.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-05-30T13:10:54.000Z (7 months ago)
- Last Synced: 2024-06-14T18:45:08.923Z (6 months ago)
- Topics: apache-arrow, comlink, duckdb, duckdb-wasm, parquet, remix, remix-run, shadcn, sql, sst
- Language: TypeScript
- Homepage: https://www.quackdb.com
- Size: 2.79 MB
- Stars: 55
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-shadcn-ui - quack-db - Open-source in-browser DuckDB SQL editor (Apps / Tools)
- awesome-shadcn-ui - Quack DB - Open-source in-browser DuckDB SQL editor (Tools)
- awesome-shadcn-ui - Quack DB - Open-source in-browser DuckDB SQL editor (Tools)
README
# QuackDB - Online DuckDB SQL Playground
[![Release](https://github.com/mattf96s/QuackDB/actions/workflows/release.yml/badge.svg)](https://github.com/mattf96s/QuackDB/actions/workflows/release.yml)
![License](https://img.shields.io/github/license/mattf96s/QuackDB)QuackDB is a privacy-preserving in-browser DuckDB SQL playground and editor.
Demo available at [quackdb.com](https://www.quackdb.com).
- **In-Browser**: The DuckDB Wasm library is used to run SQL queries in the browser.
- **File Types**: Supports `.csv`, `.json`, `.parquet`, `.sqlite`, `.duckdb` and `.arrow` files.
- **Privacy**: no screen recordings or client-side error monitoring (only Vercel Analytics).
- **Filesystem Access**: OPFS is used to store files in the browser's filesystem for persistence.![QuackDB Screenshot](https://www.quackdb.com/screenshot.jpg)
## Motivation
I wanted a quick and simple tool for iterating on DuckDB queries and visualizing the results. I also wanted to experiment with the new Filesystem Access API (OPFS) and explore the capabilities of DuckDB in the browser.
## Tech Stack
| Category | Tool |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Database | [DuckDB Wasm](https://duckdb.org/) |
| Frontend | [Remix](https://remix.run/) ยท [Tailwind CSS](https://tailwindcss.com/docs/table-layout), [shadcn/ui](https://ui.shadcn.com/) |
| Backend | [Vercel](https://vercel.com/docs/frameworks/remix) |
| Visualization | [Observable Plot](https://observablehq.com/plot/), [Tanstack Table](https://tanstack.com/table/latest) |
| Web APIs | [Comlink](https://github.com/GoogleChromeLabs/comlink), [OPFS](https://web.dev/file-system-access/) |> An earlier version of this project used [SST](https://docs.sst.dev/start/remix) for the backend infrastructure, but I switched to Vercel for simplicity.
## TODO
- [ ] Safari support ๐
- [ ] Improved UI / charts / tables / etc.
- [ ] Data import/export
- [ ] Responsive design improvements
- [ ] Performance improvements with Arrow
- [ ] Snippets / examples## Maybe
- [ ] [NSQL](https://motherduck.com/blog/duckdb-text2sql-llm/) integration for natural language queries.
- [ ] Co-pilot (or similar) integration for code suggestions.## Inspiration
- [CMU Data Interaction Group](https://github.com/cmudig)
- [SQL Workbench](https://sql-workbench.com/)
- [Evidence](https://github.com/evidence-dev/evidence)
- [Malloy](https://github.com/malloydata/malloy)
- [wa-sqlite](https://github.com/rhashimoto/wa-sqlite/blob/master/demo/demo-worker.js)
- [Rill](https://github.com/rilldata/rill)
- [Observable](https://github.com/observablehq)## License
MIT
## Disclaimer
This project is not in any way affiliated with DuckDB or any of the other projects mentioned above.
## Tips
- Built in chrome OPFS viewer can be accessed from . To navigate, manually change the URL to the desired path as Chrome does not allow navigation by clicking on the links.
## Known Issues
- Safari will not be fully supported until this [bug](https://bugs.webkit.org/show_bug.cgi?id=256712#c0) is fixed (serializing file handles is not supported in Safari).