Coreate | Разработка #2

Привет, сейчас быстренько пробегусь по тому что успел сделать в беке за последнее время

— — — 1. МОДУЛЬ IDENTITY — — —

Логичнее всего было начать разработку именно с него. Пока нет нормальной работы с пользователем, нет смысла пилить фичи проектов, чатов и всего остального.

За что сейчас отвечает этот модуль: • Регистрация и вход: создание аккаунта, проверка почты и уникальность никнеймов. • Управление сессиями: контроль того, кто, когда и с какого устройства зашёл в систему. • Безопасное хранение: работа с паролями, хешами и личными данными. • Роли и доступы: разграничение прав (юзер, модер, админ). • Recovery: механизмы сброса пароля и верификации.

— — — 2. АВТОРИЗАЦИЯ И СЕССИИ — — —

С регистрацией всё просто: почта, юзернейм, пароль. А вот над авторизацией я посидел подольше. Конечно, можно было оставить голые JWT-токены и забить, но я решил добавить нормальный уровень безопасности и объединил JWT с механизмом сессий.

Теперь управление аккаунтом похоже на Telegram: • Прозрачность: Видно список всех активных устройств и браузеров. • Удаленное управление: Можно завершить конкретную подозрительную сессию или нажать «Выйти на всех устройствах». • Гибкость: Если потерял доступ к ПК или телефону, сессию легко аннулировать с другого девайса.

Чтобы не вводить логин и пароль каждый час, используется пара токенов: Access (короткий) и Refresh (длинный). Реализовал это через обновление текущей сессии(ротация токенов): когда Access протухает, мы берем старый refresh, и если он валиден - не создаем новую сессию, а продлеваем текущую, выдавая новую пару токенов. Так мы не плодим мусор в базе и моментально реагируем если токен был скомпрометирован.

— — — 3. МОДУЛЬ PROFILE — — —

На текущий момент Profile готов примерно на 60%. Большая часть времени здесь ушла не на новые фичи, а на глобальный рефакторинг.

• Result Pattern: Внедрил этот паттерн везде. Теперь бек не выкидывает исключения, а возвращает типизированный результат с данными или ошибкой. Код стал гораздо чище и быстрее, так как кидать исключения довольно дорогая операция.

• События (Wolverine): Настроил систему событий, чтобы модули были максимально независимы. Например, когда юзер меняет инфу в профиле, генерируется событие ProfileUpdated. Модули чатов или проектов просто подписываются на него и обновляют данные у себя асинхронно.

Это и есть та самая низкая связанность. В будущем это позволит легко вынести любой модуль в отдельный микросервис на Go(или мб Rust), вообще не переписывая остальной проект.

— — — 4. ДИЗАЙН — — —

Ну и параллельно с бекендом решил накидать примерный дизайн (на скринах). • Цвета: Глубокий синий и его оттенки. • Стиль: Минималистичный и приятный глазу. Упор на полную кастомизацию (мне лень придумывать что то).

На этом пока всё. Всем удачи

Coreate  | Разработка #2 | Сетка — социальная сеть от hh.ru Coreate  | Разработка #2 | Сетка — социальная сеть от hh.ru