{"id":26221037,"url":"https://github.com/mattf96s/quackdb","last_synced_at":"2025-04-16T18:52:31.330Z","repository":{"id":223404395,"uuid":"743147587","full_name":"mattf96s/QuackDB","owner":"mattf96s","description":"Open-source in-browser DuckDB SQL editor","archived":false,"fork":false,"pushed_at":"2025-04-08T21:24:26.000Z","size":3526,"stargazers_count":144,"open_issues_count":6,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T16:24:56.956Z","etag":null,"topics":["apache-arrow","comlink","duckdb","duckdb-wasm","parquet","remix","remix-run","shadcn","sql","sst"],"latest_commit_sha":null,"homepage":"https://www.quackdb.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattf96s.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-14T13:33:47.000Z","updated_at":"2025-04-08T20:08:29.000Z","dependencies_parsed_at":"2024-05-27T18:21:03.188Z","dependency_job_id":null,"html_url":"https://github.com/mattf96s/QuackDB","commit_stats":null,"previous_names":["mattf96s/quackdb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2FQuackDB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2FQuackDB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2FQuackDB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattf96s%2FQuackDB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattf96s","download_url":"https://codeload.github.com/mattf96s/QuackDB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249266660,"owners_count":21240792,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-arrow","comlink","duckdb","duckdb-wasm","parquet","remix","remix-run","shadcn","sql","sst"],"created_at":"2025-03-12T15:51:30.000Z","updated_at":"2025-04-16T18:52:31.305Z","avatar_url":"https://github.com/mattf96s.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QuackDB - Online DuckDB SQL Playground\n\n[![Release](https://github.com/mattf96s/QuackDB/actions/workflows/release.yml/badge.svg)](https://github.com/mattf96s/QuackDB/actions/workflows/release.yml)\n![License](https://img.shields.io/github/license/mattf96s/QuackDB)\n\nQuackDB is a privacy-preserving in-browser DuckDB SQL playground and editor.\n\nDemo available at [quackdb.com](https://www.quackdb.com).\n\n- **In-Browser**: The DuckDB Wasm library is used to run SQL queries in the browser.\n- **File Types**: Supports `.csv`, `.json`, `.parquet`, `.sqlite`, `.duckdb` and `.arrow` files.\n- **Privacy**: no screen recordings or client-side error monitoring (only Vercel Analytics).\n- **Filesystem Access**: OPFS is used to store files in the browser's filesystem for persistence.\n\n![QuackDB Screenshot](https://www.quackdb.com/screenshot.jpg)\n\n## Motivation\n\nI 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.\n\n## Tech Stack\n\n| Category      | Tool                                                                                                                                |\n| ------------- | ----------------------------------------------------------------------------------------------------------------------------------- |\n| Database      | [DuckDB Wasm](https://duckdb.org/)                                                                                                  |\n| Frontend      | [Remix](https://remix.run/) \u0026middot; [Tailwind CSS](https://tailwindcss.com/docs/table-layout), [shadcn/ui](https://ui.shadcn.com/) |\n| Backend       | [Vercel](https://vercel.com/docs/frameworks/remix)                                                                                  |\n| Visualization | [Observable Plot](https://observablehq.com/plot/), [Tanstack Table](https://tanstack.com/table/latest)                              |\n| Web APIs      | [Comlink](https://github.com/GoogleChromeLabs/comlink), [OPFS](https://web.dev/file-system-access/)                                 |\n\n\u003e 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.\n\n## TODO\n\n- [ ] Safari support 😁\n- [ ] Improved UI / charts / tables / etc.\n- [ ] Data import/export\n- [ ] Responsive design improvements\n- [ ] Performance improvements with Arrow\n- [ ] Snippets / examples\n\n## Maybe\n\n- [ ] [NSQL](https://motherduck.com/blog/duckdb-text2sql-llm/) integration for natural language queries.\n- [ ] Co-pilot (or similar) integration for code suggestions.\n\n## Inspiration\n\n- [CMU Data Interaction Group](https://github.com/cmudig)\n- [SQL Workbench](https://sql-workbench.com/)\n- [Evidence](https://github.com/evidence-dev/evidence)\n- [Malloy](https://github.com/malloydata/malloy)\n- [wa-sqlite](https://github.com/rhashimoto/wa-sqlite/blob/master/demo/demo-worker.js)\n- [Rill](https://github.com/rilldata/rill)\n- [Observable](https://github.com/observablehq)\n\n## License\n\nMIT\n\n## Disclaimer\n\nThis project is not in any way affiliated with DuckDB or any of the other projects mentioned above.\n\n## Tips\n\n- Built in chrome OPFS viewer can be accessed from \u003chttps://www.quackdb.com/temporary\u003e. To navigate, manually change the URL to the desired path as Chrome does not allow navigation by clicking on the links.\n\n## Known Issues\n\n- 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).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattf96s%2Fquackdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattf96s%2Fquackdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattf96s%2Fquackdb/lists"}