Любой, кто хоть раз пытался «по-быстрому» проанализировать 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

Комментарии (20)


  1. pnmv
    28.05.2025 15:03

    новый инструмент, в целях "поиграться" - это всегда хорошо.

    грустно, что требует установки еще одного движка баз данных, а ведь "мне только спросить!"(с).


    1. RenegadeMS Автор
      28.05.2025 15:03

      не-не, не надо ничего устанавливать, просто открываем https://app.pondpilot.io и работаем:)


      1. hitlocker
        28.05.2025 15:03

        Да как-то файлы не добавляются..... (


      1. avshkol
        28.05.2025 15:03

        Desktop Only

        PondPilot doesn't work on mobile.
        Please switch to a desktop.


      1. yrub
        28.05.2025 15:03

        открываю и вижу, что не работает в firefox...


  1. freeExec
    28.05.2025 15:03

    Опять докеры, почему ее duckdb -ui-pp


    1. RenegadeMS Автор
      28.05.2025 15:03

      Любим duckdb -ui, используем и ценим - у него точно есть своё место, особенно когда хочется легковесный UI прямо из shell. Но у нас была немного другая цель.

      Ключевая разница: PondPilot — это zero-install. Ничего не ставишь, просто открываешь браузер — и работаешь. Даже Docker сделан «для галочки», большинству он не нужен: всё живёт в браузере, работает локально и оффлайн (даже в PWA-режиме).

      А вот duckdb -ui без интернета не заведётся: он тянет UI с CDN. Мы же хотели, чтобы работало везде.

      Ну и интерфейс у нас чуть более привычный: вкладки, сохранение сессий, подсветка схемы, немного IDE-like, чтобы было проще «не только дата-инженерам».


      1. freeExec
        28.05.2025 15:03

        он тянет UI с CDN

        Да это прям бяка, возможно в следующих версиях они это зашьют внутрь.

        чтобы работало везде

        И не работает (можно так сказать), если открыть кривой csv но никакого фидбека, кроме ошибки в консоле разработчика.


  1. SergeyProkhorenko
    28.05.2025 15:03

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

    1. Сделайте облегченный экспорт/импорт данных и метаданных в/из промышленных СУБД (Oracle, MySQL, Microsoft SQL Server, PostgreSQL, Greenplum, EnterpriseDB, ClickHouse, DuckDB), Microsoft Access и Microsoft Excel, а также бесшовную интеграцию с ними в качестве клиента

    2. Реализуйте те возможности и удобства (например, разнообразные построители запросов), которые Microsoft Access дает системным аналитикам и аналитикам хранилищ данных, но без жестких ограничений на объем таблиц

    3. Сертифицируйте защиту бизнес-данных от утечки

    4. Обеспечьте поддержку UUIDv7 в интерфейсе (они уже генерируются в DuckDB) для ключей и по возможности реализуйте специальный бинарный формат данных UUID как в PostgreSQL

    5. Творчески (например, скрывая/показывая атрибуты на схеме данных и позволяя частичную денормализацию/нормализацию) обеспечьте поддержку методологий Anchor Modeling и temporal database

    6. Реализуйте привычные возможности DBeaver и DataGrip

    7. Обеспечьте интеграцию с BI-системами (это далеко не первый приоритет)


    1. EvgeniyRasyuk
      28.05.2025 15:03

      Привычные возможности (6) это что ?


    1. Oshi41
      28.05.2025 15:03

      8. И чтоб караваны можно было грабить!


    1. RenegadeMS Автор
      28.05.2025 15:03

      спасибо за список, посмотрим!


      1. SergeyProkhorenko
        28.05.2025 15:03

        Самое важное я забыл - попадание в реестр отечественного ПО. Кстати, бинарный формат UUID, оказывается, уже есть в DuckDB, но описан в документации очень туманно: то ли нужно использовать тип данных UUID, то ли HUGEINT - непонятно.


      1. SergeyProkhorenko
        28.05.2025 15:03

        И еще было бы хорошо выделять цветным шрифтом названия полей, содержащих UUID.


      1. SergeyProkhorenko
        28.05.2025 15:03

        И еще было бы хорошо выделять названия полей:
        Образующих первичный ключ - жирным шрифтом
        Содержащих UUID - синим #0043CE (для индексируемых или входящих в первичный ключ) или оранжевым #F34900 (в остальных случаях) шрифтом
        Дат начала и окончания действия записи - зеленым шрифтом #56B259
        Даты создания записи и номера версии записи - фиолетовым шрифтом #B45CC0


  1. voody77
    28.05.2025 15:03

    прикрутить к superset и получаем универсальный инструмент для аналитики и визуализации?


    1. RenegadeMS Автор
      28.05.2025 15:03

      Все так, пока мы работаем над базовым функционалом по визуализации, потом посмотрим в эту сторону. Но очень хотим оставить тул простым и удобным.


  1. DrZlodberg
    28.05.2025 15:03

    Хотел поиграться но Firefox падает по таймауту. Не грузится вообще, как будто блокировка.

    Тор грузит моментально, но "Unsupported Browser We’re sorry, but you have to use Chrome or Edge to use PondPilot". Печаль. Чем ФФ не угодил?


    1. voody77
      28.05.2025 15:03

      Browser Requirements

      As of today PondPilot only guranteed to work best in Chrome due to the use of File System Access APIs not available in other browsers. Hopefully this will change in the future.


  1. voody77
    28.05.2025 15:03

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