RootCoreSocial: соцсеть ради архитектуры
Всех приветствую!
Пише open-source проект. Решил назвать RootCoreSocial. Просто потому что когда брал домен в подарок дали еще один ну и я подумал: "А почему бы и да"
Проект пишу на Java, на нем конкретно backend, клиент под андроид будет писаться уже на kotlin.
У меня нет цели "захватить рынок", Просто чистый код, продуманная структура. Как вы поняли, проект открытый, а значит доступ к исходникам есть у всех. Распространяю исходники по лицензии AGPLv3.
В данном посте расскажу об основании данной системы - базовых классах, которые лежат в основе всех сущностей. А также сами сущности в базе данных.
Базовые классы представлены на картинке:
В основе архитектуры лежат наследуемые сущности, которые обеспечивают единообразие, избегают дублирования и гарантируют целостность данных:
- AbstractEntityUuid - корневой класс: содержит id UUID как первичный ключ.
- DatedEntity - добавляет аудит-поля: createdAt и updatedAt (автоматически управляются Hibernate).
- UserEntity - основная учётная запись пользователя (email, аутентификация).
- UserOwnerManyToOne - расширяет DatedEntity, добавляет связь «многие к одному» с UserEntity через user_uuid.
- UserOwnerOneToOne - аналогично, но для связи «один к одному» (например, профиль или внешняя учётная запись).
Все реальные сущности наследуются от этих базовых классов — это даёт единый стиль, безопасность типов и минимум boilerplate-кода.
Проект: RootCoreSocial
Репозиторий: gitlab.com/runimeshnik/rootcoresocial
Продолжение — про SubscriptionEntity, NotificationEntity и другие сущности.
Группа в телеграм:
Всем спасибо за внимание!