Imported from LucianoPongeluppi/MyTrips (
apps/mobile/AGENTS.md). Install upstream withnpx skills add LucianoPongeluppi/MyTrips --skill mobile. Copyright stays with the author.
Guia do aplicativo móvel
Este arquivo complementa o guia do repositório. Suas regras
se aplicam a qualquer alteração em apps/mobile.
Estado atual e direção
O aplicativo usa Expo 57, React Native, TypeScript e Expo Router. As rotas ficam
em src/app; atualmente há apenas o layout raiz e a tela inicial.
A arquitetura deve crescer de forma progressiva. Não crie diretórios, camadas ou dependências apenas para antecipar necessidades. Consulte ARCHITECTURE.md antes de reorganizar uma funcionalidade.
Comandos
Execute na raiz do monorepo:
pnpm --filter @my-trips/mobile start
pnpm --filter @my-trips/mobile android
pnpm --filter @my-trips/mobile ios
pnpm --filter @my-trips/mobile lint
pnpm --filter @my-trips/mobile exec tsc --noEmit
Convenções de implementação
- Mantenha arquivos de rota e layouts em
src/app. Eles coordenam navegação e composição; mova UI ou lógica que cresça para módulos apropriados. - Use componentes pequenos, tipados e acessíveis. Componentes reutilizáveis não devem depender de uma rota ou de regras específicas de produto.
- Use estado local por padrão. Dados remotos pertencem à camada de server state; estado client-side compartilhado só deve ser global quando necessário.
- Não faça chamadas HTTP, persistência ou regras de negócio diretamente em componentes visuais. Isole integrações em serviços quando elas existirem.
- Para telas com formulários, use
react-native-keyboard-controllerquando for necessário manter campos e ações acessíveis com o teclado aberto. Não o adote em telas sem entrada de texto. - Preserve uma única fonte de verdade para cada informação. Não duplique dados remotos em estado local ou global sem uma razão explícita.
- Prefira aliases de importação quando configurados, evite
anye preserve o estilo dos arquivos próximos.
Integração, segurança e ambiente
- Contratos compartilhados com a API pertencem a
packages/contractsquando atendem mais de um cliente; não duplique seus tipos localmente. - Variáveis
EXPO_PUBLIC_*entram no bundle e nunca podem conter segredos. Tokens, credenciais e dados privados não devem ser registrados em logs. - Quando houver autenticação, armazene credenciais em armazenamento seguro, centralize a sessão e limpe dados privados no logout.
- Solicite somente permissões nativas necessárias e valide deep links ou URLs recebidas externamente.
Checklist de alteração
- A rota está enxuta e no diretório correto?
- Estado, acesso remoto e regras de domínio estão na camada adequada?
- Estados de carregamento, erro e vazio foram considerados quando aplicáveis?
- Não foi adicionada uma dependência ou abstração prematura?
pnpm --filter @my-trips/mobile lintepnpm --filter @my-trips/mobile exec tsc --noEmitforam executados?