v0.1.5 Hero Overlap Fix: the decorative relay illustration no longer collides with the landing card on laptop and medium-width screens.
Temporary rooms for instantly sharing text, links and small files between devices.
CREATE → CONNECT → DROP → GONE
PRODUCT DropLink
MODE Temporary device relay
ROOM CODE ABC-123
TRANSPORT HTTP + Server-Sent Events
STORAGE RAM only
ACCOUNT Not required
DATABASE Not required
FILE LIMIT 12 MB
ROOM TTL 10 / 30 / 60 min
DropLink — это маленький локальный relay-сервис для ситуаций, когда нужно быстро передать что-то между устройствами без лишних действий.
Например:
- ссылка с ПК → на телефон;
- текст с телефона → на ноутбук;
- небольшой файл → на другое устройство;
- кусок кода → на второй компьютер;
- временная заметка → в одну общую комнату.
Вместо:
открыть мессенджер
→ найти самого себя
→ отправить файл
→ открыть второе устройство
→ снова открыть мессенджер
DropLink делает:
CREATE DROP
→ SCAN QR
→ SEND
| Возможность | Статус |
|---|---|
| Временные комнаты | ✅ |
Код формата ABC-123 |
✅ |
| Подключение по QR | ✅ |
| Подключение по коду | ✅ |
| Передача текста | ✅ |
| Передача ссылок | ✅ |
| Передача файлов | ✅ |
| Live room stream | ✅ |
| Список подключённых устройств | ✅ |
| Автоудаление комнаты | ✅ |
| 10 / 30 / 60 минут жизни | ✅ |
| LAN-адрес для телефона | ✅ |
| Выбор сетевого адаптера | ✅ |
| Повторное сканирование сети | ✅ |
| Мобильная версия | ✅ |
| База данных | ❌ не нужна |
| Аккаунт | ❌ не нужен |
DropLink построен вокруг одной идеи:
Передача должна занимать меньше времени, чем решение “куда это себе отправить”.
Комната создаётся за одно действие.
После этого пользователь получает:
ROOM
A7K-3QX
[ QR CODE ]
expires in 29:59
На втором устройстве достаточно:
SCAN QR
или:
JOIN DROP
A7K-3QX
После подключения оба устройства видят одну общую ленту.
Нужен:
Node.js 18+
Проверить установленную версию:
node -vПример:
v22.18.0
Открой терминал в папке DropLink и выполни:
npm startDropLink покажет два адреса:
DropLink v0.1.4 is running
Local: http://localhost:3000
Network: http://192.168.0.102:3000
Открывай:
http://localhost:3000
Открывай именно:
http://192.168.0.102:3000
Телефон и компьютер должны находиться в одной локальной сети.
Нажми:
CREATE DROP
Выбери время жизни:
10 MIN
30 MIN
60 MIN
Есть два варианта.
Отсканируй QR-код камерой телефона.
Введи код:
A7K-3QX
Можно отправлять:
TEXT
LINK
FILE
Все подключённые устройства увидят новый элемент практически сразу.
┌─────────────────────┐
│ DEVICE A │
│ │
│ Windows / Android │
└──────────┬──────────┘
│
│ POST
▼
┌───────────┐
│ DropLink │
│ ROOM │
│ ABC-123 │
└─────┬─────┘
│
│ SSE
▼
┌─────────────────────┐
│ DEVICE B │
│ │
│ Android / iOS / PC │
└─────────────────────┘
Сообщения и файлы проходят через Node.js процесс, где временно находятся в памяти комнаты.
Для live-обновлений используется:
Server-Sent Events
SSE
Схема:
DEVICE A
│
│ POST /messages
▼
SERVER
│
│ SSE event
├──────────────► DEVICE A
├──────────────► DEVICE B
└──────────────► DEVICE C
Для текущей задачи это позволяет оставить проект лёгким и не подключать внешнюю WebSocket-библиотеку.
Это одна из самых важных частей DropLink.
На Windows у компьютера может быть сразу несколько сетевых адресов:
Wi-Fi
Ethernet
WSL
Hyper-V
Docker
VPN
VirtualBox
VMware
Не каждый из них доступен телефону.
Поэтому DropLink:
- ищет LAN-адаптеры;
- старается выбрать Wi-Fi / Ethernet;
- показывает найденный IP;
- позволяет вручную выбрать другой адрес;
- умеет пересканировать сеть;
- пересобирает QR под выбранный адрес.
Пример:
NETWORK ADDRESS
★ 192.168.0.102 — Ethernet
192.168.0.145 — Wi-Fi
Проверяй по порядку.
Скопируй Network URL из терминала:
http://192.168.0.102:3000
Введи его вручную в браузере телефона.
Если он не открывается — проблема не в QR.
Убедись, что:
PC → Home Wi-Fi
PHONE → Home Wi-Fi
а не:
PC → Wi-Fi
PHONE → Mobile Internet
Проверь Windows Firewall.
При первом запуске Node.js Windows может показать окно:
Разрешить приложению доступ к сети?
Нужно разрешить доступ хотя бы к:
Private networks
Если в DropLink несколько Network Address — попробуй другой.
Например:
192.168.x.x
обычно предпочтительнее виртуальных адресов.
Текущие лимиты:
ONE FILE 12 MB
ROOM FILES 48 MB
ROOM HISTORY 120 entries
Файл хранится в памяти Node.js процесса.
После удаления комнаты он больше недоступен.
DropLink v0.1.4 не предназначен для:
20 GB video
50 GB archive
large backups
Он предназначен для:
image
document
small archive
code file
config
screenshot
quick transfer
DropLink не использует постоянную базу данных.
CREATE ROOM
│
▼
┌──────────────┐
│ SERVER RAM │
│ │
│ messages │
│ files │
│ devices │
└──────┬───────┘
│
│ TTL expired
▼
DELETED
Комната исчезнет, если:
- закончился таймер;
- сервер был остановлен;
- Node.js был перезапущен.
В текущем проекте нет:
USER ACCOUNTS
PROFILE DATABASE
ANALYTICS DATABASE
PERMANENT MESSAGE HISTORY
CLOUD STORAGE
DropLink v0.1.4 — это relay, а не P2P E2E messenger.
При локальном запуске:
DEVICE
│
▼
YOUR COMPUTER
│
▼
DEVICE
При размещении на удалённом сервере:
DEVICE
│
▼
REMOTE SERVER
│
▼
DEVICE
То есть владелец сервера технически контролирует среду, через которую проходят данные.
End-to-end encryption пока не реализовано.
DropLink/
│
├── public/
│ ├── index.html
│ ├── styles.css
│ ├── app.js
│ ├── qrcode.min.js
│ └── favicon.svg
│
├── server.js
├── package.json
├── README.md
├── LICENSE
├── qrcodejs-LICENSE.txt
└── .gitignore
Основная разметка интерфейса.
Визуальная система DropLink:
violet
cyan
glass surfaces
device relay visual
room stream
adaptive layout
large typography
Frontend отвечает за:
- создание комнаты;
- подключение;
- QR;
- countdown;
- SSE;
- room stream;
- отправку текста;
- upload progress;
- скачивание файлов;
- список устройств;
- выбор LAN-адреса;
- пересканирование сети.
Backend отвечает за:
- генерацию комнат;
- короткие коды;
- TTL;
- память комнаты;
- SSE clients;
- сообщения;
- файлы;
- очистку комнат;
- LAN discovery;
- rate limiting.
POST /api/rooms{
"ttlMinutes": 30
}GET /api/rooms/ABC123GET /api/rooms/ABC123/eventsPOST /api/rooms/ABC123/messages{
"text": "https://example.com",
"sender": "Windows PC",
"clientId": "..."
}POST /api/rooms/ABC123/filesФайл передаётся как raw request body.
GET /api/rooms/ABC123/files/FILE_IDDropLink специально сделан без внешних Node.js зависимостей.
Поэтому:
npm installв текущей версии не требуется.
Достаточно:
npm startQR-библиотека уже лежит локально внутри проекта.
Обычный режим:
npm startDevelopment mode с автоматическим restart:
npm run devРекомендуемое название репозитория:
DropLink
Описание:
Temporary rooms for instantly sharing text, links and small files between devices.
При создании репозитория не нужно дополнительно создавать:
README.md
LICENSE
.gitignore
Они уже находятся в проекте.
- Создай новый repository.
- Открой его.
- Нажми
Add file. - Выбери
Upload files. - Перетащи содержимое папки DropLink.
- Нажми
Commit changes.
В корне репозитория должно быть:
public/
server.js
package.json
README.md
LICENSE
.gitignore
Не загружай только ZIP как единственный файл репозитория.
Полноценный DropLink не может работать только через GitHub Pages.
Причина:
GitHub Pages
=
static hosting
DropLink
=
frontend
+
Node.js relay server
GitHub подходит для хранения исходного кода.
Для живой версии понадобится Node.js hosting.
npm или node не найдены
Проверь:
node -v
npm -vЕсли команды отсутствуют — установи Node.js и перезапусти терминал.
localhost работает, а телефон не подключается
Используй Network URL:
http://192.168.x.x:3000
а не:
http://localhost:3000
localhost на телефоне означает сам телефон, а не компьютер.
QR ведёт на недоступный адрес
В комнате открой:
NETWORK ADDRESS
и выбери другой LAN-адаптер.
После этого QR будет пересобран.
Windows блокирует подключение
Разреши Node.js доступ к:
Private networks
в Windows Firewall.
Комната внезапно исчезла
Это ожидаемое поведение.
Комнаты временные и удаляются:
- после окончания TTL;
- после остановки сервера;
- после restart Node.js.
Нужен другой порт
set PORT=8080 && npm start$env:PORT=8080
npm startПосле этого:
http://localhost:8080
DropLink v0.1.4 пока не имеет:
- постоянных комнат;
- аккаунтов;
- room PIN;
- end-to-end encryption;
- WebRTC P2P;
- multi-file drag & drop;
- image clipboard paste;
- постоянной истории;
- Redis;
- multi-server synchronization.
Это не случайность.
Текущая цель проекта:
Сделать маленький relay, который легко понять, запустить и реально использовать.
┌──────────────────────────────────────┐
│ DROP/LINK — NEXT SIGNALS │
├──────────────────────────────────────┤
│ [ ] Optional room PIN │
│ [ ] WebRTC P2P │
│ [ ] End-to-end encryption │
│ [ ] Multiple files │
│ [ ] Image preview │
│ [ ] Paste images from clipboard │
│ [ ] PWA mode │
│ [ ] Better transfer progress │
│ [ ] Room owner controls │
│ [ ] Redis adapter │
└──────────────────────────────────────┘
В отличие от других utility-проектов, DropLink использует собственное визуальное направление:
DARK
VIOLET
CYAN
GLASS
RELAY
SIGNAL
DEVICE-TO-DEVICE
Интерфейс строится вокруг ощущения:
двух устройств и сигнала между ними.
QR generation uses QRCode.js by davidshimjs.
Лицензия библиотеки находится в:
qrcodejs-LICENSE.txt
DropLink распространяется под лицензией:
MIT
Полный текст:
LICENSE