Техническое задание: Децентрализованная P2P доска объявлений

Основная концепция

Необходимо разработать веб-приложение - доску объявлений, работающую по принципу одноранговой сети (Peer-to-Peer). Система должна функционировать без централизованного сервера, обеспечивая прямой обмен данными между пользователями.

Ключевые требования к реализации

Архитектура и передача данных

  • Полностью P2P: Все данные (объявления, метаинформация) должны передаваться напрямую между клиентскими приложениями пользователей.
  • Технология связи: Для установления соединений между пирами рекомендуется использовать WebRTC. Допускается предложение альтернативных P2P-решений с обоснованием.

Хранение и синхронизация данных

  • Децентрализованное хранение: Каждый клиент хранит свою полную или частичную (на усмотрение исполнителя) копию базы объявлений.
  • Автоматическая синхронизация: Система должна автоматически распространять новые объявления по сети и обновлять локальные копии у подключенных пользователей.
  • Локальное сохранение: Для хранения данных на стороне клиента необходимо использовать IndexedDB или фреймворк Gun.js (или аналогичный).

Функциональность интерфейса

  • Публикация и просмотр: Возможность создавать, просматривать и удалять свои объявления.
  • Фильтрация и поиск: Реализовать поиск по заголовку и описанию объявлений, а также фильтрацию по категориям (категории должны быть динамическими или предопределенными - на усмотрение разработчика).
  • Мониторинг сети: В интерфейсе должен отображаться статус активных P2P-соединений (количество подключенных пиров, состояние).

Технические детали

  • Решение должно быть реализовано в виде веб-приложения.
  • Необходимо предусмотреть механизм первоначального обнаружения пиров (bootstrapping) в сети.
  • Важно продумать стратегию разрешения конфликтов данных (например, при одновременном редактировании).
  • Приветствуется описание архитектуры и выбор технологий в документации.