Aplicativo mobile da plataforma SyncDesk, desenvolvido com Expo, React Native e TypeScript.
O SyncDesk Mobile é a interface mobile voltada principalmente para usuários/clientes da plataforma. O aplicativo inclui autenticação, recuperação de senha, perfil do usuário, abertura e acompanhamento de chamados, chat, triagem e atendimento em tempo real.
https://github.com/Titus-System/syncdesk-mobile
| Tecnologia | Uso |
|---|---|
| Expo | Ambiente de desenvolvimento e execução do app React Native |
| React Native | Camada de interface mobile |
| Expo Router | Roteamento baseado na estrutura da pasta app/ |
| TypeScript | Linguagem principal da aplicação |
| NativeWind | Estilização com classes no padrão Tailwind para React Native |
| TanStack React Query | Requisições assíncronas, cache e estado de carregamento |
| Expo Secure Store | Armazenamento seguro de tokens e dados sensíveis |
| WebSocket | Comunicação em tempo real para chat |
| Axios / fetch customizado | Comunicação HTTP com a SyncDesk API |
| Android Studio Emulator | Execução local no emulador Android |
| Jest | Testes automatizados |
| ESLint e Prettier | Padronização e qualidade de código |
app/
|-- chat/
|-- _layout.tsx
|-- edit-profile.tsx
|-- forgot-password.tsx
|-- index.tsx
|-- login.tsx
|-- password-success.tsx
|-- profile.tsx
|-- reset-password.tsx
`-- tickets.tsx
components/
|-- BottomAppBar.tsx
`-- Toolbar.tsx
contexts/
`-- AuthContext.tsx
hooks/
|-- useAttendanceQuery.ts
|-- useClientConversations.ts
|-- useCreateTriageMutation.ts
|-- useLiveChatSocket.ts
|-- usePaginatedMessages.ts
|-- useSendTriageMessageMutation.ts
`-- useStartSupportMutation.ts
lib/
|-- api.ts
|-- auth-storage.ts
|-- env.ts
`-- errors.ts
services/
|-- chatbot.ts
`-- live-chat.ts
assets/
`-- images/
| Pasta | Responsabilidade |
|---|---|
app/ |
Telas e rotas do aplicativo, seguindo o padrão do Expo Router |
components/ |
Componentes visuais reutilizáveis |
contexts/ |
Contextos globais da aplicação, como autenticação |
hooks/ |
Hooks de consultas, mutações, paginação e WebSocket |
lib/ |
Configuração de API, variáveis de ambiente, storage e tratamento de erros |
services/ |
Serviços específicos de comunicação com recursos da API |
assets/ |
Imagens, ícones e recursos visuais do aplicativo |
android/ |
Projeto Android nativo gerado pelo Expo |
- Node.js
- npm
- Expo via
npx - Android Studio
- Android Emulator configurado
- Android SDK
- Backend SyncDesk disponível
No desenvolvimento local em Windows, o fluxo mais comum é executar o app no emulador Android pelo Android Studio.
Clone o repositório:
git clone https://github.com/Titus-System/syncdesk-mobile.git
cd syncdesk-mobileInstale as dependências:
npm installCrie o arquivo de ambiente:
cp .env.example .envNo Windows PowerShell:
Copy-Item .env.example .envConfigure a URL da API no arquivo .env.
Inicie o Expo:
npm run startOu inicie limpando o cache:
npx expo start -cCom o emulador Android aberto, pressione:
a
Isso executa o aplicativo no Android Emulator.
O projeto utiliza variáveis de ambiente para definir a URL da API.
Antes de iniciar o app, configure a variável EXPO_PUBLIC_API_BASE_URL no arquivo .env.
Exemplo de .env:
EXPO_PUBLIC_API_BASE_URL=http://api.syncdesk.pro/api| Variável | Descrição |
|---|---|
EXPO_PUBLIC_API_BASE_URL |
URL base da SyncDesk API usada pelo aplicativo mobile |
Por padrão, o projeto pode apontar para a API publicada:
EXPO_PUBLIC_API_BASE_URL=http://api.syncdesk.pro/apiPara rodar com backend local no emulador Android, use:
EXPO_PUBLIC_API_BASE_URL=http://10.0.2.2:8000/apiNo Android Emulator, localhost aponta para o próprio emulador. Por isso, para acessar a API local da máquina host, use 10.0.2.2.
Para rodar em um celular físico na mesma rede, use o IP local da máquina:
EXPO_PUBLIC_API_BASE_URL=http://SEU_IP_LOCAL:8000/apiExemplo:
EXPO_PUBLIC_API_BASE_URL=http://192.168.0.10:8000/apiNo Windows, o IP local pode ser consultado com:
ipconfig| Comando | Descrição |
|---|---|
npm run start |
Inicia o Expo/Metro |
npx expo start -c |
Inicia o Expo limpando o cache |
npm run android |
Executa o app no Android |
npm run ios |
Executa o app no iOS, apenas em macOS |
npm run web |
Executa a versão web, se aplicável |
npm run lint |
Executa o ESLint |
npm run test |
Executa os testes |
npm run type-check |
Executa a checagem de tipos TypeScript |
npm run check |
Executa validações combinadas, se configurado no projeto |
Fluxo recomendado para desenvolvimento:
cd syncdesk-mobile
npm install
npx expo start -cDepois:
- Abra o Android Studio
- Inicie o emulador Android
- Pressione
ano terminal do Expo
Se for usar a API publicada, mantenha:
EXPO_PUBLIC_API_BASE_URL=http://api.syncdesk.pro/apiSe for usar a API local no emulador Android, use:
EXPO_PUBLIC_API_BASE_URL=http://10.0.2.2:8000/apiO aplicativo depende da SyncDesk API para autenticação, chamados, chat, triagem, perfil e demais fluxos protegidos.
A URL da API é centralizada na variável:
EXPO_PUBLIC_API_BASE_URL=O backend precisa estar acessível pelo dispositivo em que o app está rodando.
Para testar se a API local está disponível, acesse no navegador da máquina:
http://localhost:8000/docs
Para o emulador Android, a URL equivalente é:
http://10.0.2.2:8000/docs
O ambiente de desenvolvimento principal usa o emulador Android pelo Android Studio.
Configuração comum:
| Item | Valor recomendado |
|---|---|
| Device | Pixel 9 |
| Sistema | Android recente e estável |
| Execução | Android Studio Device Manager |
| API local no emulador | http://10.0.2.2:8000/api |
Quando for necessário gerar novamente o projeto nativo Android:
npx expo prebuild --cleanPara gerar o APK release:
cd android
./gradlew assembleReleaseNo Windows PowerShell:
cd android
.\gradlew.bat assembleReleaseO APK será gerado em:
android/app/build/outputs/apk/release/app-release.apk
Para geração de APK release assinado, é necessário configurar a assinatura Android conforme o ambiente de distribuição do projeto.
Verifique se a API está rodando:
http://localhost:8000/docs
Se estiver usando Android Emulator, configure:
EXPO_PUBLIC_API_BASE_URL=http://10.0.2.2:8000/apiSe estiver usando celular físico, use o IP local da máquina:
EXPO_PUBLIC_API_BASE_URL=http://SEU_IP_LOCAL:8000/apiTambém verifique se o firewall do Windows permite conexões na porta 8000.
Reinicie o Expo limpando o cache:
npx expo start -cVerifique se o Android Emulator está aberto e se o adb reconhece o dispositivo:
adb devicesSe não aparecer nenhum dispositivo, reinicie o emulador pelo Android Studio.
Execute:
npx expo start -cSe necessário, reinstale as dependências:
rm -rf node_modules
npm install
npx expo start -cNo Windows PowerShell:
Remove-Item -Recurse -Force node_modules
npm install
npx expo start -cFinalize processos antigos do Node ou reinicie o terminal.
Depois rode novamente:
npx expo start -c- O aplicativo usa Expo Router, então as rotas são definidas pela estrutura da pasta
app/. - O arquivo
.envdefine qual API o app irá consumir. - No emulador Android, use
10.0.2.2para acessar serviços locais da máquina. - A API publicada padrão é
http://api.syncdesk.pro/api. - Para desenvolvimento com backend local, a API deve estar rodando com host
0.0.0.0e porta liberada no firewall.