Files
Containr/app/mobile/AGENTS.md
T
Tomas DvorakandDevin 925199633b feat(mobile): Containr companion app — Expo/RN thin client
Phone app v1 (Phase I): PAT auth against any instance, secure-store
credentials, dark UI matching the design system.

- Overview: service status counts, per-project health dots, deploy feed
- Services/Projects: status badges, drill-down detail
- Service detail: start/stop/restart/redeploy/sleep/wake, env-doctor
  issues, deployment history + rollback
- Logs: 300-line tail, 5s poll, stderr highlighted
- Databases: status, start/stop/restart, backup-now
- Settings: server info, disconnect

CI: mobile job (tsc + expo lint) gated on a dedicated app/mobile paths
filter so non-mobile PRs skip it entirely.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-09 05:08:48 +02:00

2.5 KiB

This is an Expo/React Native mobile application — the Containr companion client. Prioritize mobile-first patterns, performance, and cross-platform compatibility.

Expo has changed — do not trust your training data

Expo ships breaking changes every SDK release. APIs you remember are likely renamed, moved, or removed. Before writing any code that touches an Expo, EAS, or React Native API:

  1. Read the major version of the expo package in package.json.
  2. Fetch the matching versioned docs: https://docs.expo.dev/versions/v<major>.0.0/
  3. For anything else, fetch https://docs.expo.dev/llms.txt — an index of all Expo docs with corrections to common LLM misconceptions. Follow its links to the specific page you need; never answer from memory.

Commands

npx expo install <package>  # ALWAYS use instead of npm/yarn/pnpm/bun add — resolves SDK-compatible versions
npx expo start              # start the dev server
npx expo lint               # lint
npx tsc --noEmit            # typecheck
npx expo-doctor             # diagnose dependency and config issues
npx expo install --fix      # fix incompatible package versions

Run lint and typecheck before declaring any task done.

Navigation & Routing

  • Use Expo Router for all navigation. Routes live in src/app/ — every file there is a screen, _layout.tsx files define navigators. Keep non-route code (components, hooks, utils) outside src/app/.
  • Import Link, router, and useLocalSearchParams from expo-router.
  • Docs: https://docs.expo.dev/router/introduction.md

Building with EAS

Use EAS to build, sign, and submit the app in the cloud (eas build, eas submit) and to ship over-the-air updates (eas update) — no local Xcode or Android Studio required. Run EAS CLI as npx eas-cli@latest <command>. Docs: https://docs.expo.dev/eas/index.md

Rules

  • If ios/ and android/ directories do not exist, they are generated (Continuous Native Generation). Never create or edit them by hand — configure native behavior in app.json and config plugins. They are gitignored.
  • Expo Go only includes its bundled native modules. After adding a library with native code, the app needs a development build: npx expo run:ios|android locally, or eas build --profile development.
  • Prefer recommended Expo modules over third-party libraries. Docs: https://docs.expo.dev/versions/latest/index.md
  • The app speaks only to the Containr REST API (/api/v1) with a cnp_ personal access token — same contract as the CLI and MCP server. Add endpoints there, never to the mobile client alone.