Делаю стартап - Coreate

В этом году решил довести до релиза хотя бы один стартап. Пока не хочу вдаваться в подробности — полное описание дам когда будет готово MVP. А пока скажу так: это не очередная соцсеть как многие могли подумать. Платформа будет решать несколько очень популярных проблем не только среди разрабов, но и спецов из других сфер Теперь немного о технической части

Стек и выбор языка Я довольно долго думал что выбрать: Go или C# в качестве основного языка для бека. В конце концов остановился на C#. Почему? Я проанализировал требования проекта и не увидел особых преимуществ гошки перед шарпом на старте. Наоборот — гораздо легче собрать MVP с огромным количеством сущностей и связей на шарпе за счет его богатой и зрелой экосистемы. Однако я не полностью отказался от Go, на нем в будущем будут написаны отдельные высоконагруженные сервисы.

Архитектура Над архитектурой думал не так уж и долго, было два варианта: либо микросервисы, либо модульный монолит. Думаю не стоит объяснять почему я даже не стал рассматривать обычный монолит. По итогу мой выбор пал на модульный монолит — это минимум сложностей на старте и максимум гибкости. Сейчас Coreate разделен на 6 основных модулей (в будущем их станет больше), каждый отвечает за свою область:

Chat — личные и групповые сообщения

Collaboration — заявки, приглашения и участие в проектах

Identity — аутентификация, авторизация и безопасность

Post — посты, комментарии, реакции

Profile — профиль пользователя

Project — проекты, роли и этапы

Что внутри Использую что то по типу Vertical Slice Architecture — логика группируется не по слоям, а по фичам. Это сильно упрощает навигацию по коду и делает его читаемым. Бд пока общая, но разделена на уровне таблиц, а у каждого модуля свой DbContext и свои доменные модели. Взаимодействие между модулями идет только через события.

В процессе нашел очень удобный фреймворк — Wolverine. Он заменяет MediatR, закрывает часть задач MassTransit и из коробки дает background processing, messaging, outbox и кучу всего еще.

На этом пока что все, всем пока 👋