Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 

Repository files navigation

RackTables Mobile

App mobile para leitura de QR Codes de ativos e operação de objetos RackTables via Integration API

Expo React Native TypeScript React Navigation Version

Aplicativo mobile construído com Expo e React Native para leitura de QR Codes de ativos (patrimônio) e operação de objetos do RackTables através da RackTables Integration API.

Consome a API sob o prefixo /v1/racktables — veja o repositório da API para detalhes de endpoints e Swagger.



📋 Visão Geral

O app possui dois fluxos principais:

  • Fluxo QR Code: lê um payload JSON dinâmico com dados de patrimônio e renderiza uma tela de detalhes customizada a partir dos campos presentes.
  • Fluxo de ID manual: permite ao usuário digitar um ID de objeto do RackTables, buscar o resumo do objeto na API e visualizar suas operações.

Usuários administradores também podem criar e gerenciar recursos do RackTables a partir da tela Home.


🛠 Stack Tecnológica

Tecnologia Uso
Expo SDK 56 Base do projeto
React Native UI mobile
React Navigation Navegação entre telas
Expo Camera Leitura de QR Code
AsyncStorage Persistência da URL da API
TypeScript Tipagem estática

✨ Funcionalidades

Gerais

  • Login com UI baseada em role (papel do usuário)
  • Scanner de QR Code para payload dinâmico de patrimônio
  • Busca manual de objeto por ID
  • Renderização dinâmica do resumo do objeto
  • Configuração da URL da API em runtime, com persistência entre reinicializações
  • Verificação de status da API pelo menu de opções

Admin — Operações em objeto

  • Editar resumo do objeto
  • Adicionar comentários
  • Alocar objeto em rack
  • Mover objeto entre racks
  • Desalocar objeto
  • Excluir objeto

Admin — Ações na Home

  • Criar objeto
  • Visualizar tipos de objeto
  • Criar rack
  • Criar/excluir linhas (rows)
  • Adicionar/remover localização de uma linha
  • Criar/excluir localizações

🔌 API

O app espera que a RackTables Integration API esteja disponível com o prefixo:

/v1/racktables

URLs base padrão

Ambiente URL
Emulador Android http://10.0.2.2:8000
Simulador iOS / Web / Local http://localhost:8000
Dispositivo físico IP da máquina host, ex: http://192.168.0.10:8000

⚠️ Não inclua /v1/racktables ao configurar a URL da API no app — o prefixo é adicionado automaticamente.

Alterando a URL da API

Home -> ... -> Ajustes

A URL configurada é persistida localmente via AsyncStorage.

Verificando a conexão com a API

Home -> ... -> API atual -> Verificar status

Isso dispara a chamada:

GET /v1/racktables/status/

📷 Payload do QR Code

O QR Code não é utilizado como ID de objeto do RackTables. Ele contém dados de ativo, geralmente no seguinte formato:

{
  "patrimonio": {
    "numero_patrimonio": "2026-000451",
    "numero_serie": "SN-8873421X",
    "descricao": "Servidor Rack Dell PowerEdge R750",
    "categoria": "Equipamento de Informática",
    "localizacao": {
      "unidade": "INPE/CPTEC",
      "rack": "Rack 07",
      "posicao_u": "12-14U"
    }
  }
}

O payload é dinâmico: seções e campos desconhecidos também são renderizados automaticamente.


👤 Papéis (Roles)

A UI suporta dois papéis:

Role Permissões
visitor Somente visualização de dados
admin Visualização e mutação de objetos/recursos

Comportamento atual de desenvolvimento:

const role = 'admin';

Isso está forçado em src/screens/home/index.tsx apenas para manter a UI de admin visível durante o desenvolvimento. Deve ser revertido para vir do fluxo de autenticação antes de produção.


🚀 Instalação

Instale as dependências:

npm install

Inicie o Expo:

npm start

Rodar em Android:

npm run android

Rodar em iOS:

npm run ios

Rodar na Web:

npm run web

📁 Estrutura do Projeto

src/
├── assets/              # Imagens e ícones do app
├── components/          # Componentes de UI reutilizáveis
├── screens/              # Telas do app
│   ├── home/            # Scanner de QR, ID manual, ações de admin
│   ├── login/           # Tela de login
│   ├── object_info/     # Detalhes e operações de objeto do RackTables
│   └── patrimonio_info/ # Exibição do payload dinâmico do QR
├── service/             # Cliente da API
├── types/                # Tipos de navegação e domínio
└── utils/                # Constantes compartilhadas

🧪 Scripts Úteis

Validação de tipos TypeScript (sem gerar build):

npx tsc --noEmit

📝 Notas

  • Use pacotes compatíveis com Expo SDK 56.
  • Não inclua /v1/racktables ao configurar a URL da API no app — o prefixo é adicionado automaticamente pelo cliente da API.
  • Para dispositivos físicos, configure a URL da API para o IP da máquina host (ex: http://192.168.0.10:8000), já que localhost aponta para o próprio dispositivo.

About

Mobile app built with Expo/React Native for QR code scanning and RackTables REST API integration

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages