Перші кроки
Реєстрація — email і пароль. На пошту приходить лінк підтвердження; маєш 24 години, щоб клікнути. До того моменту акаунт існує, але не може ставити мітки чи записуватись на них — видно лише публічну мапу.
Логін — той самий email + пароль. Далі на пошту приходить шестизначний 2FA-код; ввівши його, отримуєш сесію, що переживає перезавантаження сторінки. Можна попросити новий код, якщо перший не дійшов чи прострочився.
- Без соціального логіну. Pinmate не федерує з Facebook, Google, Apple чи будь-яким іншим провайдером ідентичності.
- Скидання пароля йде тим самим email-каналом. Лінк скидання прострочується за годину.
- Домашня локація за замовчуванням — Щецин, її можна змінити у Налаштуваннях у будь-який час. Це приватне налаштування, що використовується лише для фільтрування твоєї мапи.
- Якщо припиняєш користуватись Pinmate, можна мʼяко видалити акаунт у Налаштуваннях. Жорстке видалення (Стаття 17 GDPR) підтверджується адміном і прибирає всі рядки повʼязані з твоїм id.
Мапа (панель)
Панель — стартовий екран для залогінених. Завантажує до 200 активних міток у твоєму радіусі спостереження, відсортованих за часом старту. Мітки поза радіусом не завантажуються.
Маркери несуть два сигнали: вид спорту (колір кружечка) і часовий стан. Live-мітки пульсують лаймовим кільцем; ті, що скоро стартують — статичним фіолетовим; прострочені блякнуть. Виділення додає мʼяку фіолетову поволоку.
Фільтри в правій панелі (на мобільному складається). Зміни застосовуються миттєво на клієнті. URL-стан не синхронізується — перезавантаження повертає твої збережені defaults.
- Категорії: множинний вибір девʼяти видів спорту. Порожній = показати всі.
- Складність і аудиторія: незалежні перемикачі. Аудиторія за замовчуванням має всі три (мішана/жінки/чоловіки).
- Радіус: повзунок 1–100 км довкола домашньої локації. Зберігається в акаунті при зміні.
Створення міток
Торкнись мапи, щоб поставити мітку, або натисни „поставити мітку”, що активує курсор-приціл і чекає твого наступного кліку. Модалка попередньо заповнена вибраною позицією — можна перевибрати з заголовка.
Обовʼязкові поля: заголовок (до 120 символів), категорія, аудиторія, час старту, тривалість. Опціональні: опис (до 2000), дисципліна (40 символів вільного тексту, наприклад „MTB” чи „5v5”) і видимість (публічна vs група). Соцлінки з профілю чіпляються автоматично.
Редагування існуючої мітки — той самий форм. Деякі поля залочені: локацію змінюєш через видалення і повторне створення, а видимість не перемикається між публічною і груповою (це здивувало б вже записаних учасників).
- Час старту мінімум 5 хвилин у майбутньому. Раніше — серверне відхилення.
- Тривалість обмежена: мінімум 15 хвилин, максимум 24 години.
- Видалення показує 15-секундний snackbar з можливістю скасування. Клік на snackbar зберігає мітку.
- Мітки в групі вимагають членства в обраній групі — сервер перевіряє перед вставкою.
- Координати мітки приватні на рівні точки зустрічі. Твоя домашня локація не використовується як дефолт — ти завжди обираєш місце сам.
Твоя відповідь і нагадування
Кожна мітка має дві кнопки відповіді: „Йду” (зобовʼязання, твердий лічильник) та „Цікаво” (мʼякий сигнал спостереження, окремий лічильник). Можна перемикатись між ними або зняти відповідь взагалі до старту мітки.
Лічильники учасників видно всім, хто бачить мітку — включно з тими, хто ще не відповів. Імена тих, хто йде, не перелічуються, поки хост явно не увімкне це (майбутнє налаштування).
- Нагадування за X хвилин до старту, де X — твоє налаштування (за замовчуванням 30). 0 = вимкнути.
- Push і email незалежні. Push працює, коли встановив Pinmate на головний екран (PWA); email завжди.
- Нагадування йдуть лише до тих, хто натиснув „Йду”. Зацікавлені нагадувань не отримують — це список спостереження, не календар.
Твої активності
Сторінка Активності — твій особистий календар. Три кошики: Майбутні „Йду”, Спостережувані („Цікаво”) та Минулі „Йду”. Кожен серверно сторінкований.
Минулі „Цікаво” свідомо не виводяться — якщо лише спостерігав без зобовʼязання, нічого згадувати після факту.
- Кожен рядок лінкує до оригінальної мітки на мапі. Прострочені мітки відображаються, але без кнопок відповіді.
- Мітки груп, з яких ти вийшов чи був видалений, зникають із твоїх активностей.
- Список оновлюється на reload — live-сокета немає.
Профіль
Твій публічний профіль на /profile/[твій-id]. Показує імʼя, аватар, біо, соцпосилання, бейдж верифікації (якщо є), кількість підписників і твої майбутні публічні мітки. Мітки лише-в-групі приховані для не-учасників навіть на твоєму профілі.
Редагуй у Налаштування → Профіль. Аватар — або фото, що ти завантажиш, або одна з восьми кольорів Trail Mix з твоєю ініціалою. Бейджі верифікації („organizer” або „creator”) — адмін-куровані сигнали довіри. Cron автоверифікації промотує тебе на „creator” після пʼяти власних міток.
Підписки та плитка Мережа
Натисни Підписатись на чиємусь профілі, щоб майбутні мітки тієї особи зʼявились у твоїй плитці Мережа. Підписка односторонна — адресат не мусить приймати і не отримує сповіщення. Хто підписаний на тебе — видно лише на твоєму профілі.
Налаштування per-follow живуть на /network. Можна вимкнути звук (сповіщення мовчать без відписки), перемикати email/push незалежно, обмежити сповіщення категоріями і додати географічний радіус.
Сповіщення про підписки виходять із 12-хвилинною затримкою від створення мітки. Це навмисно — поглинає петлю створити-редагувати-видалити, яку хости часто роблять у перші хвилини.
Приватні групи
Групи — кола за запрошенням, що ділять приватні мітки. Зараз доступний лише secret-режим; closed (заявка на вступ) і open відкладені. Мітки в групі невидимі для не-учасників на всіх рівнях, включно з публічною мапою і пошуком.
Створи групу з /groups. Стаєш власником. Запрошення: згенеруй посилання з опційним терміном і лімітом використань, або запроси конкретного користувача за id.
Вихід — один клік. Якщо ти єдиний учасник і виходиш — група видаляється. Якщо ти власник з іншими учасниками — мусиш спочатку передати власність або видалити інших.
- Мітки груп позначено фіолетовим кільцем і маленькою колодкою у верхньому лівому куті — видно лише учасникам.
- Зараз ліміт учасників не примусовий для безкоштовних користувачів (всі мають функції рівня Pro в ранній фазі).
- Власники можуть видалити учасників у будь-який момент. Видалені миттєво втрачають доступ до всіх міток групи — включно з тими, на які раніше натискали „Йду”.
- Коли монетизація повернеться, групи стануть платною функцією для хостів (доєднання залишиться безкоштовним). Існуючі групи не блокуються заднім числом.
Сповіщення
Pinmate має два канали: push (web push через service worker, потребує дозволу браузера) і email (SMTP у dev, Elastic Email у проді). Незалежні — вимикай один без впливу на другий.
Канали налаштовуються окремо для кожної мітки (твої нагадування про участь), окремо для кожної підписки (сповіщення про чужі нові мітки) і глобально в Налаштуваннях. Коли сповіщення збирається вийти, сервер перевіряє, що мітка ще існує, не прострочена і досі видима тобі.
Приватність і твої дані
Pinmate побудовано довкола ідеї, що твоя локальна мапа залишається локальною. Конкретно: сервер примушує область видимості в кожному запиті про мітки, твоя домашня локація не транслюється, і дефолтний build не містить третьосторонніх трекерів.
Куки розбиті на суто необхідні (сесія, локаль, тема), аналітичні (за замовчуванням off, opt-in через банер) і маркетингові (за замовчуванням off). Cookie banner — канонічне джерело правди.
- Твій email ніколи не показується публічно. Сторінки профілю показують лише локальну частину email (до @) і лише коли не задано імʼя.
- Мітки груп фільтруються на сервері в кожному list-ендпоінті — клієнт навіть не отримує їх у payload-і для не-учасників.
- Нагадувальні email містять заголовок мітки, час і лінк до мапи — ніколи твою домашню локацію чи ідентичність інших адресатів.
- Видалення акаунта робить миттєвий soft-delete (мітки анонімізуються, профіль ховається), а сам рядок жорстко видаляється адміном протягом 30 днів — згідно з GDPR.