💡 Идея
Всё началось с простой, но насущной проблемы: я хотел быстро передать файлы между своими устройствами — без интернета, без Bluetooth и без облаков.

Существующие способы были либо медленными, либо ограниченными:
-
Bluetooth — устаревший и слишком медленный для видео и больших папок
-
Облачные сервисы — требуют авторизации, интернета, да ещё и часто сжимают файлы
-
Airdrop — работает только между устройствами Apple
-
Флешка — не всегда под рукой, да и не подходит для телефонов
🧠 Тогда я задал себе вопрос:
Почему нельзя просто открыть ссылку в браузере и мгновенно получить доступ к файлам с другого устройства?
Так появилась идея — создать локальный медиасервер, который:
-
работает по Wi‑Fi, без интернета
-
запускается одним кликом
-
доступен из любого браузера в локальной сети
-
предоставляет простой и понятный файловый интерфейс
Sapar Mini должен был стать локальной альтернативой Google Drive или Airdrop, но полностью офлайн, без регистрации, и максимально лёгким.
⚙️ Реализация
Чтобы идея стала реальностью, мне нужно было три вещи:
-
Запускать локальный сервер на любом компьютере
-
Предоставить простой интерфейс для доступа к файлам
-
Обеспечить доступ к этому серверу с других устройств в сети

📦 Технологии
Я выбрал стек, который позволяет собрать приложение в виде десктопной программы, но с силой веба:
-
Electron — упаковывает Node.js и фронтенд в одно кроссплатформенное приложение
-
Node.js + Express — локальный HTTP‑сервер, который обрабатывает все запросы к файлам
-
EJS — простая серверная генерация HTML
-
Bootstrap 5 — адаптивный и лёгкий UI без перегрузки
-
Vanilla JS — всё без React/Vue, чтобы было быстро и нативно
🖥 Интерфейс
Главный принцип: максимальная простота без обучения.
-
Отображение файлов и папок в виде списка
-
Drag & drop для загрузки
-
Предпросмотр медиа (видео, изображения) прямо в браузере
-
Создание/удаление/переименование папок
-
Навигация через «хлебные крошки»
-
Адаптивность — интерфейс работает как на ПК, так и на телефоне

📡 Работа по локальной сети
Когда пользователь запускает приложение:
-
Sapar Mini автоматически определяет локальный IP (например,
192.168.0.104) -
Использует этот IP в качестве адреса сервера — без порта
-
Сразу открывает интерфейс в браузере, например:
Например, http://192.168.0.104

💡 Это значит, что тебе не нужно запоминать порт — достаточно просто открыть IP в любом браузере устройства, подключённого к той же Wi‑Fi сети.
Интерфейс мгновенно загружается, и ты получаешь доступ к файлам как к локальному «облаку».
Такой подход особенно удобен:
-
в школах, офисах, поездках
-
при раздаче Wi‑Fi с ноутбука (без роутера)
-
в местах без интернета, где нужна быстрая локальная передача
🔐 Безопасность
Несмотря на простоту использования, я сразу понимал: если любой в сети сможет открыть твой IP — это потенциальный риск.
Поэтому в Sapar Mini реализована базовая, но надёжная защита.
🧩 Авторизация
-
При первом запуске Sapar Mini предлагает создать пароль — ты становишься хостом
-
Все последующие входы требуют ввода этого пароля
-
Пароль можно изменить в настройках в любой момент
-
Без ввода пароля доступ к интерфейсу полностью блокируется — даже если кто-то знает IP

📌 Таким образом, даже в открытой сети никто не сможет подключиться к твоим файлам без разрешения.
🕵️♂️ Приватность по умолчанию
Sapar Mini создан как офлайн-инструмент, а значит:
-
Он не требует интернета
-
Не использует сторонние API или облака
-
Не собирает аналитику и не отправляет данные наружу
Все действия — загрузка, удаление, просмотр — происходят только локально, на твоём устройстве.
Это делает Sapar Mini особенно удобным для:
-
домашних сетей
-
учебных заведений
-
поездок, где нет доступа к интернету
🛠 Разработка
Когда идея была сформулирована, я сразу начал писать код — без долгих планов или сложной архитектуры.
Цель была простая: сделать, чтобы работало.
🔁 Процесс
Всё началось с базового Express-сервера:
-
Отображение файлов из выбранной папки
-
Возможность скачивания
-
Примитивный HTML-шаблон на EJS
-
Отсутствие стилей и авторизации
Постепенно я добавлял функции:
-
загрузку через drag & drop
-
предпросмотр изображений и видео
-
навигацию по папкам
-
авторизацию
-
адаптивный UI с Bootstrap
🧪 MVP
Минимально рабочая версия включала:
-
локальный запуск
-
просмотр папок
-
скачивание файлов
-
простую авторизацию
Даже в таком виде это уже было удобно. Я показал MVP:
-
родственникам (обмен фото и видео)
-
друзьям (стриминг фильмов по локалке)
-
преподавателю, который скинул презентации студентам прямо на телефоны
🗣️ Отзывы были одинаковыми:
«А почему так не работает по умолчанию на всех устройствах?..»
После этого я понял: проект не только для себя — он реально полезен другим. Так начался путь к полноценному релизу.
🚀 Релиз и будущее
Когда MVP был стабилен, интерфейс стал удобным, а обратная связь — положительной, я понял: пора выпускать.
📦 Публикация
Я оформил проект как open-source:
-
Описал всё в
README.md -
Добавил лицензию MIT
-
Подключил сборку через GitHub Actions
-
Запустил автосборку для Windows (.exe), macOS (.dmg) и Linux (.AppImage)
-
Выложил всё в Releases
📁 Теперь любой человек может:
-
скачать готовую версию
-
установить без зависимостей
-
и использовать офлайн сразу после запуска
🌍 Open Source
Я решил сделать Sapar Mini полностью открытым, потому что:
-
хочу, чтобы им могли пользоваться не только разработчики
-
верю в ценность офлайн-инструментов без слежки и рекламы
-
хочу, чтобы другие могли учиться на примере кода или дорабатывать под себя
Каждый коммит — прозрачный. Нет скрытых API, нет трекеров, нет подписок. Всё работает локально и навсегда.
🛤 Планы
Sapar Mini уже полезен, но я хочу развивать его дальше:
-
🧭 Автоопределение сервера через Bonjour (
sapar.local) -
📱 Улучшенный UI для телефонов
-
🔑 Авторизация с сессионным доступом
-
🎨 Тёмная тема
-
🔒 Ограничение доступа к выбранным папкам
-
💬 Локальный чат между устройствами
-
💾 Сборка для Raspberry Pi как автономного медиасервера
Если тебе интересна идея — ⭐ поставь звёздочку на GitHub, напиши фидбэк или просто попробуй.
Спасибо, что дочитал.
Sapar Mini — это маленький шаг для сети, но большой шаг к офлайн‑свободе.
ссылка на оригинал статьи https://habr.com/ru/articles/935464/
Добавить комментарий