Задача
Каждый хозяин питомца хоть раз задумывался, что на самом деле означал этот лай. Приложения, которые обещают переводить с языка животных, — это либо игрушки с заготовленными шутками, либо обещания науки, которой не существует. Идея Dicitencell AI — быть честным и смешным одновременно. Это переводчик, который признаёт, что гадает, учитывает контекст и отвечает на неаполитанском. Кроме того, он должен был быть готов вырасти в платное приложение и приложение для iOS.
Что я сделал
Я создал веб-приложение, в котором вы записываете своего питомца, а оно с серьёзным видом и с шуткой в конце рассказывает, что он «сказал».
- С языка животного на человеческий — запишите до 15 секунд прямо в браузере и выберите контекст. Движок возвращает эмоцию, вероятное намерение, серьёзную интерпретацию поведения, шутку в одну строку на неаполитанском, оценку уверенности и, если нужно, предупреждение о безопасности.
- С человеческого на язык животного — напишите, что хотите сказать, и получите советы по тону, жесту и короткой команде, а также синтезированный лай или мяуканье. Звуки синтезируются в коде и явно помечены как имитация.
- Семь уровней неаполитанского — от «Лёгкого» до «Дворового пса» и «Кота-аристократа».
- Профили питомцев — фото, порода, характер и привычки попадают прямо в промпт, чтобы ленивый кот и гиперактивный щенок не получили одну и ту же фразу. Историю переводов и онбординг из шести шагов дополняют сценарий.
- Сменный ИИ-движок — приложение работает с единым интерфейсом. Адаптер Claude запрашивает строгий JSON и проверяет его с помощью Zod. Если ключа нет или ответ некорректен, подключается симулированный движок, так что пользователь всегда получает ответ.
- Админ-панель — пользователи и API-ключи управляются из приложения. Настройки голоса ElevenLabs и платежей через Stripe уже готовы к следующему этапу.
Технологии
Next.js 14 с App Router, TypeScript в строгом режиме, React 18 и Tailwind CSS. Supabase обеспечивает Postgres, аутентификацию и хранилище. В схеме 15 таблиц, все с row-level security, поэтому пользователи видят только своих питомцев и свои переводы. ИИ работает на Anthropic Claude через официальный SDK и только на сервере. Zod проверяет входные данные и ответы ИИ; движок покрыт тестами на Vitest.
Почему именно так
Я строил приложение по принципу API-first. Вся логика находится в серверных сервисах за REST-маршрутами, а веб-интерфейс — лишь один из клиентов. Запланированное приложение на SwiftUI для iPhone будет обращаться к тем же маршрутам, а не переписывать логику. Платный доступ устроен так же: внутренний тариф (free, premium, admin) хранится в базе данных, а Stripe или StoreKit только его устанавливают.


