Рефатор фронтенда
- скрещивание документации с клиентом (архивация frontend репозитория)
- система апдейтов и их рекомендации клиентской стороне
- мультиязычный ru/en
- рядом с функционалом есть кнопки посмотреть документацию (документация под это перестраивается, в формат кратких заметок), а лучше вообще при долгом наведении на любую кнопку и тд, подтягивается кусочек из документации
- корректное отображение времени по региону, бекенды всегда UTC 0
- контейнеры бека обьединяются в 1, по средством добавления бинарника data_pipe во внутрь backend
Смена фреймворка
Полный перход на flutter. Для мультиплатформенности
Изменение стейт менеджмента
- Теперь у клиентов появляется более расширенный стейт менеджмент, json для бинарников и хранилище в браузере
Изменение концепта UI
- Адаптивность
- Интерфейсы должны стать более живыми, то как идёт обработка запросов, нажатие кнопок и тд
- Возможно нужно добавить веб сокет для некоторых событий
Актуализация стиля
Переход где это можно на shadcn, скорее всего придётся написать где-то кастомные решения, на основе компонентов из shadcn
Вход в федерацию через глобальный аккаунт
На десктопе рождается постоянный ключ. В клиент, который ходит на инстансы, попадает только одноразовый промежуточный.
| # | Этап | Что происходит | Ключи |
|---|---|---|---|
| 1 | Регистрация | Десктоп генерирует постоянную пару и показывает seed-фразу. Сеть не нужна. | Постоянная пара пользователя. Приватный шифруется PIN и остаётся на десктопе. Публичный — имя аккаунта. |
| 2 | Опрос федерации | Десктоп читает карточки /instances/current и списки соседей. | Публичные ключи инстансов. Ключ, отданный нодой по своему URL, сверяется с копией у соседей. |
| 3 | Выбор нод | Пользователь отмечает, куда входить. | Уже сверенные публичные ключи выбранных инстансов. |
| 4 | Промежуточный ключ | Десктоп создаёт новую пару и подписывает допуск: постоянный публичный ключ, промежуточный публичный ключ, один вход на каждый выбранный инстанс, короткий срок. Файл с приватным промежуточным ключом и допуском отдаётся клиенту. | Допуск подписывает постоянный приватный ключ, он остаётся на десктопе. В файле лежит приватный промежуточный ключ. |
| 5 | Challenge | Клиент запрашивает у инстанса домен, одноразовый nonce и срок 1–2 минуты. | Публичный ключ инстанса подтверждает, что запрос ушёл на выбранную ноду. |
| 6 | Подпись | Клиент подписывает challenge и прикладывает допуск. | Приватный промежуточный ключ. Постоянный приватный ключ в этом шаге не участвует. |
| 7 | Проверка | Инстанс принимает ответ, если challenge свежий, домен его, подпись сходится с промежуточным публичным ключом, допуск подписан постоянным публичным ключом, срок жив, и этот допуск на этой ноде ещё не использован. После успеха нода помечает допуск использованным. | Публичный промежуточный ключ и постоянный публичный ключ. Повторный вход этим файлом на эту ноду уже не проходит. |
| 8 | Локальный пользователь | Инстанс находит или создаёт пользователя по постоянному публичному ключу. На пустой ноде он админ, на живой — обычный пользователь. | В базу пишется постоянный публичный ключ. Промежуточный ключ личностью не становится. |
| 9 | JWT | Инстанс выписывает токен со uuid локального пользователя на срок pu_auth_token_expiration, по умолчанию 31 день. | Токен подписывает секрет инстанса pu_secret_key. |
- Пункты 5–9 повторяются на каждом выбранном инстансе
- Подпись в пункте 6 каждый раз новая, файл один и тот же. На каждой ноде он сгорает отдельно.
- У пользователя есть время жизни на инстансе, если у него нет активных unit и он не входи 2 года - под нож
Изменение интерфейсов
Вход
При переходе на адрес инстанса в браузере или открытии pepeunit приложения на пк или телефонах:
- Базовые параметры сети, по полной выгрузке из 1 инстанса
- Список известных инстансов, с самыми базовыми параметрами и кнопками войти/выйти
- Меню регистрации глобального аккаунта
- Меню входа в глобальный аккаунт
- Меню изменения аккаунта, логин + картинка
- Кнопка войти во все инстансы, с кулдауном
- Кнопка синхронизации данных с инстансами (передаёт новый логин + картинку)
- Меню менеджмента инстансов
- по умолчанию в бинарники будем забивать топ 10 инстансов по юзерам
- белые, чёрные списки и ручное добавление
- Ссылка на доку