MSICS — дневник питания в вебе и на Android
Один продукт на двух интерфейсах: открытый каталог и веб-дневник на сайте, отдельное Android-приложение со сканером штрихкода и Health Connect — в RuStore.
- Сайт
- msics.ru
- Приложение
- Открыть в RuStore
- Год
- 2026
- Роль
- Мой проект: продукт, интерфейсы, код, публикация и сопровождение — я
Задача
Счётчики питания часто требуют идеальной дисциплины и превращают один день сверх плана в ощущение провала. Нужен был спокойный дневник: записать еду быстро, увидеть факты и продолжить на следующий день без оценок.
Продукт должен работать и как открытый сайт с каталогом калорийности, и как полноценное приложение на телефоне — с одним аккаунтом, общей серверной логикой и возможностями Android.
Что сделано
- Веб-дневник и открытый каталог продуктов: поиск, страницы калорийности и калькулятор КБЖУ доступны на сайте.
- Отдельное приложение на Expo и React Native: дневник, быстрый ввод, повтор записей, вода, вес, замеры и тренировки.
- Поиск по собственному каталогу и Open Food Facts; сканер штрихкода использует камеру телефона.
- Шаги синхронизируются через Health Connect после отдельного разрешения пользователя; тренировки можно вести вручную.
- Общий NestJS API и PostgreSQL обслуживают веб и Android: аккаунт, дневник и расчёты не расходятся между платформами.
- Сборка подписывается для магазина, версия и материалы RuStore хранятся рядом с кодом и проходят тот же релизный процесс.
Стек
- Expo 55, React Native 0.83, TypeScript — Android-приложение
- Next.js 15 — сайт, веб-дневник и каталог калорийности
- NestJS 11 на Fastify + TypeORM — общий API
- PostgreSQL 16 — аккаунты, дневник и данные продукта
- Expo Camera, Secure Store, SQLite, Notifications и Health Connect
- Docker Compose + nginx; сборки Android для RuStore
Что можно применить в вашем проекте
- Сайт и приложение лучше проектировать как один продукт: общий API и аккаунт убирают двойную логику и расхождения в данных.
- Телефон оправдан там, где нужны камера, уведомления, защищённое хранение и системные данные — для обычного просмотра страниц приложения не требуется.
- Публикация в магазине — часть разработки: разрешения, подпись, карточка и проверяемая сборка планируются вместе с функциями.