Как стать автором
Обновить

PondPilot: как мы сделали локальный SQL-редактор в браузере на DuckDB и WASM

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.6K

Любой, кто хоть раз пытался «по-быстрому» проанализировать CSV-файл или прототип БД, сталкивался с выбором из неудобств: открывать в Excel, запускать Jupyter, возиться с pandas, или поднимать Postgres/ClickHouse ради пары запросов. Мне показалось странным, что в 2025 году до сих пор нет удобной zero-setup SQL-песочницы для локальных данных.

Так родился PondPilot - open-source инструмент для анализа данных, работающий прямо в браузере, без серверов и настройки. В этой статье расскажу, как я и пару моих друзей его сделали, почему выбрали DuckDB, как завернули его в WebAssembly, и какие задачи он решает.

Зачем вообще нужен локальный SQL-редактор

Если вы работаете с данными, вам регулярно приходится разбирать локальные файлы: выгрузки из систем, отчёты коллег, csv/xlsx/parquet/json с экспериментов. Проблема в том, что «вскрыть» эти данные быстро и удобно - непросто:

  • Excel и большие файлы - боль, да и нет горячо любимого SQL

  • Jupyter - требует окружения, до сих пор не один клик

  • DBeaver/клиенты - требуют установку и настройку

А хотелось чего-то, что запускается мгновенно, работает в браузере, и при этом достаточно мощное для настоящего SQL.

Идея: SQL-песочница в браузере, 100% локально

С выходом WASM (а именно File System Access API) стало возможно сделать SQL-движок, работающий прямо в браузере, без бэкенда. Это означает:

  • Все данные остаются у пользователя.

  • Можно анализировать приватные или чувствительные файлы.

  • Работает оффлайн.

Мы решили построить вокруг этого полноценный редактор: удобный UI, автосохранение, вкладки, drag-n-drop файлов, подсветка схемы.

Что под капотом

  • DuckDB-WASM v0.8.1 для обработки SQL прямо в браузере

  • SvelteKit в качестве фреймворка приложения

  • TypeScript для типобезопасного кода

  • Современные браузерные API для работы с файлами

Отдельное внимание уделили UX: сохранение истории, вкладки, schema viewer с инкрементальной загрузкой, респонсивный layout даже для больших экранов.

Какие форматы поддерживаются

На данный момент:

  • CSV

  • Excel (.xlsx)

  • JSON (в формате списка объектов)

  • Parquet

  • DuckDB

Планируем добавить:

  • Google Spreadsheets

  • SAS-файлы

Возможности PondPilot

  • SQL-песочница с полноценной поддержкой SELECT/CTE/JOIN/AGG и т.д. - пишите и запускайте SQL-запросы к вашим файлам прямо в браузере — с подсветкой синтаксиса и базовой автодополнением.

  • Загрузка файлов с локального диска и экспорт результатов в локальные файлы.

  • Состояние рабочей среды сохраняется между сессиями браузера - продолжайте работу с того места, где остановились.

  • Поддержка нескольких вкладок. Вкладки помнят своё состояние даже при перезагрузке страницы или переключении - как в полноценной IDE.

  • Шаринг скриптов по ссылке. Делитесь SQL-скриптами с коллегами и сообществом через простую ссылку в один клик

  • Автоматическое обновление данных. Если локальный файл изменился вне PondPilot, приложение обнаружит это и обновит данные, как полноценное десктоп-приложение.

  • Работа с папками. Можно добавлять целые папки с файлами — они автоматически подгружаются в проект, ускоряя работу с множеством источников данных.

БОНУС! PondPilot Widget - интерактивный SQL в блогах и туториалах

Один из побочных, но мощных эффектов PondPilot - возможность вставлять интерактивные SQL-блоки прямо в HTML-страницы. PondPilot Widget — это лёгкая JavaScript-библиотека, которая добавляет SQL-интерактивность на любую веб-страницу. Она работает на базе DuckDB WebAssembly, что означает: все запросы выполняются полностью в браузере, без необходимости в серверной части. Это меняет то, как можно строить обучающие курсы SQL.

Шаг 1. Добавляем библиотеку.

<script src="https://unpkg.com/pondpilot-widget"></script>

Шаг 2. Отмечаем блоки SQL-кода классом pondpilot-snippet.

<pre class="pondpilot-snippet">
SELECT * FROM your_data;
</pre>

Шаг 3. Наслаждаемся!

Такой блок подхватится скриптом и превращается в живой редактор. Читатель может править запрос, запускать его, видеть результат. Вот тут мы собрали больше информации и примеров о нашем виджете.

Что дальше

Посетите наш сайт и GitHub.


Можете попробовать PondPilot в деле прямо сейчас через веб-апп: https://app.pondpilot.io
или локально:
docker run -d -p 4173:80 --name
pondpilot
ghcr.io/pondpilot/pondpilot:latest
и потом пользоваться приложением по адресу http://localhost:4173

В наших планах:

  • Генерация SQL через AI-хелпер (уже готово, тестируем)

  • Автоматический расчет разных метрик/распределений/графиков, чтобы облегчить анализ данных

  • Классный интерфейс для просмотра схемы БД

  • Может у вас есть идеи?

Вместо заключения

Мы сделали инструмент, который сами давно хотели использовать - лёгкий, локальный, удобный. Он не решит все задачи аналитики, но может стать вашим go-to способом быстро разобраться с любым файлом. Пробуйте, открывайте issue, делитесь фидбэком, пишите ваши предложения:)

➡️ PondPilot.io / GitHub

Теги:
Хабы:
+14
Комментарии20

Публикации

Работа

Ближайшие события