{"id":13810226,"url":"https://github.com/mattf96s/QuackDB","last_synced_at":"2025-05-14T10:32:36.197Z","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":"2024-05-30T13:10:54.000Z","size":2923,"stargazers_count":55,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-06-14T18:45:08.923Z","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":"2024-06-11T05:40:34.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":213870383,"owners_count":15650179,"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":"2024-08-04T02:00:48.599Z","updated_at":"2024-08-04T02:01:38.943Z","avatar_url":"https://github.com/mattf96s.png","language":"TypeScript","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","funding_links":[],"categories":["Platforms \u0026 Applications","Apps","sql","Tools"],"sub_categories":["Tools"],"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"}