Продукты · В работе

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 миграций базы. Карта, прогулки, чат и лента работают, мобильный клиент собирается под обе платформы.

Все работы