PWA-прототип приложения для поиска общественных питьевых кранов в Таллине. Дизайн — по макетам Stitch «WaterPoint Tallinn» (светлая тема, финальная итерация), функциональность — по ТЗ v1.0 (15.07.2026).
🔗 Демо: https://tecna-developer.github.io/waterpoint-tallinn/
Карта и список 78 реальных точек питьевой воды из Tallinn GIS, поиск по адресу и району, фильтры, карточка с маршрутом во внешние карты, локальное избранное, сообщение о проблеме, интерфейс ET/EN/RU, светлая и тёмная темы. Работает как устанавливаемое PWA с офлайн-кешем списка точек.
Откройте демо-ссылку и добавьте на главный экран:
- Android (Chrome): меню ⋮ → «Добавить на главный экран».
- iPhone (Safari): «Поделиться» → «На экран „Домой“».
После установки приложение открывается без адресной строки; список и карточки точек доступны офлайн (карта-подложка требует сети).
npm install
npm run dev # http://localhost:5173
npm run build # сборка в dist/Деплой на GitHub Pages — автоматически при пуше в main
(workflow .github/workflows/deploy.yml).
| FR | Статус |
|---|---|
| FR-01 Синхронизация точек | ✅ live-запрос к Tallinn GIS ArcGIS REST (слой veebikaart/Veev6tukohad — «Avalikud veevõtukohad», 78 точек), при сбое — последняя успешная копия + last_synced_at в настройках |
| FR-02 Геолокация | ✅ запрос разрешения, сортировка по расстоянию; при отказе — баннер и ручной поиск |
| FR-03 Поиск | ✅ районы (linnaosa), адреса точек, онлайн-геокодинг Nominatim (ограничен Таллином), подсказка при невалидном запросе |
| FR-04 Карта + список | ✅ одинаковый набор результатов; маркеры различают статусы цветом и глифом |
| FR-05 Карточка | ✅ название, район/асум, расстояние, тип, сезон, статус, код VVK, описание, Route/Favorite/Report |
| FR-06 Маршрут | ✅ deep link во внешние карты (Apple Maps на iOS/iPadOS, иначе Google Maps), пешком по умолчанию; состояние приложения сохраняется |
| FR-07 Фильтры | ✅ доступно сейчас, ≤1/2/5 км, outdoor/indoor, для животных, избранное; сброс; счётчик результатов |
| FR-08 Избранное + офлайн | ✅ localStorage без аккаунта; офлайн-баннер с датой кеша; service worker кеширует оболочку |
| FR-09 Сообщение о проблеме | ✅ 5 категорий, комментарий, контакт по желанию, согласие, honeypot + rate-limit, подтверждение |
| FR-10 Локализация | ✅ ET/EN/RU через ключи; при пропуске — EN + фиксация в консоли |
| FR-11 Админ-панель | ⛔ серверная часть — вне клиентского прототипа (нужен backend/Supabase) |
| FR-12 Приватная аналитика | ✅ события app_open/search/point_open/route_start/report_submit в localStorage, без геолокации |
Статусы точек — по §5 ТЗ: available («доступна по последним данным», без live-гарантии),
seasonal_closed (вне окна май–октябрь), reported_issue (предупреждение до модерации,
официальный статус не меняется), temporarily_unavailable, unknown.
- Источник: Tallinn GIS ArcGIS REST — слой «Avalikud veevõtukohad».
Снапшот в
src/data/waterpoints.json; районы вычислены по полигонамLinnaosad_asumid. - Фото точек в источнике нет — используются нейтральные заглушки (без выдуманного контента).
- Перед релизом подтвердить условия повторного использования данных (этап 0 ТЗ).
Точная геолокация не сохраняется и никуда не отправляется; избранное, кеш и отчёты — только на устройстве.