Продукты · В работе
My Animals World
Районная сеть для владельцев животных: карта, прогулки, чат, лента и распределённая модерация.
- Роль
- Автор и разработчик
- Период
- 2025—сейчас
- Стек
- Nuxt 3 · NestJS · Prisma · PostgreSQL · Flutter · TypeScript · Turborepo
- 4 клиента на ядре
- 52k строк Flutter
- 46k строк TS и Vue
- 90+ тестов
Свой продукт в разработке: соседи с животными видят, кто рядом, договариваются о прогулках, читают районную ленту и поднимают тревогу, если питомец пропал.
Задача
Сделать не «ленту города», а район: охват считается от точки дома, а не от подписок. Из этого следует почти всё остальное — от модели данных до модерации, которая не может быть централизованной, потому что дежурных нет.
Решение
Монорепо на Turborepo с четырьмя клиентами на одном ядре: веб на Nuxt 3, админка модерации, API на NestJS с Prisma и PostgreSQL, мобильное приложение на Flutter со своим дизайн-слоем. Общие схемы — на Zod в отдельном пакете, поэтому контракт один и для API, и для веба.
Модерация распределённая: жалоба на запись сообщества идёт сначала владельцу сообщества со суточным сроком и только потом эскалируется. У каждого скрытия есть причина, у каждого действия — след в журнале: на вопрос «за что удалили» отвечает факт, а не память модератора.
Качество держится проверками, а не аккуратностью: типы, дубликаты кода, мёртвый код, юнит-тесты и e2e — одной командой, до коммита.
Результат
В разработке. Сейчас это 46 тысяч строк TypeScript и Vue, 52 тысячи строк Dart, 91 набор тестов и 18 миграций базы. Карта, прогулки, чат и лента работают, мобильный клиент собирается под обе платформы.