Перейти к содержимому
supastack
Обзор документации
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/mobile/project-structure.md (or send Accept: text/markdown).

Структура проекта

Найдите маршруты, модули функций и границу с бэкендом.

Задать вопрос об этом руководстве
Открыть в

Настройка и конфигурация

Перед любым шагом прочитайте Перед началом работы и Основы терминала. Откройте папку supastack в корне — папке, содержащей package.json. Checkout Mobile содержит apps/mobile плюс общие пакеты ниже; монорепозиторий All Platforms добавляет Web-бэкенд и оболочку Desktop. Переменная окружения — это именованная настройка, хранящаяся в локальном файле .env или в вашей панели хостинга; перезапускайте приложение после изменений и держите серверные секреты вне значений EXPO_PUBLIC_.

1. Откройте apps/mobile/app/_layout.tsx в редакторе — корневой макет, общий для каждого экрана.

2. Просмотрите apps/mobile/src/ — одна папка на область функций, каждая содержит свою логику и тесты.

3. Из корня репозитория выполните corepack pnpm --filter @supastack/mobile start и откройте предпросмотр на устройстве.

Приложение Expo организовано как маршруты, вызывающие модули функций. Маршруты остаются тонкими — они рендерят экраны; вызываемая ими логика живёт под src/ со своими тестами рядом. Читайте AGENTS.md и .ai/PROJECT_CONTEXT.md перед изменением поведения; зеркальные документы .ai/ фиксируют решения, не видимые из одного только файла.

apps/mobile/app/          Expo Router routes — sign-in, onboarding, invite, paywall
apps/mobile/app/(app)/    Signed-in screens — home, chat, notifications, settings, content, commerce, assistant
apps/mobile/src/          Feature modules — auth, api, purchases, offline, push, ui, theme, i18n
packages/ui-native/       Shared native view-models
packages/design-tokens/   Shared theme tokens
apps/mobile/app.config.ts Scheme and allowed-origin derivation
apps/mobile/eas.json      EAS build and submit profiles
docs/                     Runbooks incl. store submission
.agents/skills/           Task guides for coding agents

Куда поместить изменение

Перед редактированием решите, какая папка владеет изменением. Эмпирическое правило: файл маршрута только рендерит; переиспользуемая логика живёт в модуле src/; всё, что должен решать сервер, никогда не входит в приложение.

  • Новый экран в авторизованной зоне → apps/mobile/app/(app)/ для маршрута плюс apps/mobile/src/<feature>/ для логики.
  • Новый пред-аутентификационный или отдельный экран → apps/mobile/app/ вне группы (app).
  • Вызов к бэкенду → apps/mobile/src/api/client.ts — расширяйте типизированный клиент вместо ad hoc fetch.
  • Визуальный элемент, общий для экранов → примитивы apps/mobile/src/ui/; кроссплатформенная модель представления → packages/ui-native/.
  • Цвета, отступы и значения тёмной/светлой темы → apps/mobile/src/theme/ на основе packages/design-tokens/.
  • Новый ключ перевода → все четыре каталога под apps/mobile/src/i18n/.
  • Всё серверное — данные, разрешения, вызовы провайдеров → репозиторий Web-бэкенда, который является отдельным checkout для покупок только Mobile.

Рабочий процесс внедрения

Начните с файла маршрута, проследите за модулем функций, который он рендерит, затем за вызовом клиента API — сервер решает вопрос владения; приложение никогда не переопределяет его. Навык add-a-mobile-screen в .agents/skills/ проходит тот же порядок.

Запускайте тесты пакета и проверку типов после редактирования общего пакета или клиента API; клиент должен поддерживать тот же контракт, который обслуживает бэкенд.

Проверка и устранение неполадок

Если expo start сообщает о недостающем модуле, запустите команду установки из корня репозитория — одна папка приложения не может разрешить пакеты workspace. Если экран появляется без стиля, проверьте, что он компонует примитивы src/ui, а не сырые элементы с жёстко заданными цветами.

corepack pnpm --filter @supastack/mobile test
corepack pnpm --filter @supastack/mobile typecheck