O aplicativo oficial da faculdade para consulta de salas de aula, matérias e mapas dos prédios.
- 🚀 Consulta de Salas de Aula: Descubra rapidamente onde é sua próxima aula.
- 🗺 Mapas Interativos: Explore os prédios da faculdade com o toque de seus dedos.
- 🔍 Pesquisa Intuitiva: Encontre o que precisa sem complicações.
- 📈 Analytics com Amplitude: Monitoramos o uso para melhorar sua experiência.
- 🎨 UI Moderna com @shopify/restyle: Design limpo e responsivo para todos os dispositivos.
- Certifique-se de ter o Expo CLI instalado.
- Clone o repositório:
git clone [https://github.com/seu-repositorio/uspolis.git](https://github.com/PCS-Poli-USP/USPolis-Mobile) cd uspolis
- Instale as dependências:
npm install
- Obtenha o .env (no drive de desenvolvedores do USPolis) ou obtenha as credenciais necessárias para o Google Authentication (sem Firebase)
- O uso da biblioteca de Google Sign-in React Native necessita de arquivos nativos de cada plataforma, para gerar e rodar a versão nativa:
npx expo prebuild --clean npx expo run:android && npx expo run:ios
- Inicie o projeto:
npm start
src/
│
├── @types/ # Tipos TypeScript globais e declarações.
├── assets/ # Recursos como imagens e ícones.
├── components/ # Componentes reutilizáveis.
├── contexts/ # Contextos do React para gerenciamento de estados.
├── dtos/ # Data Transfer Objects para formas consistentes de dados.
├── hooks/ # Hooks personalizados.
├── routes/ # Configuração das rotas e navegação.
├── screens/ # Telas ou páginas do aplicativo.
├── services/ # Serviços, como chamadas API.
├── storage/ # Manipulação de armazenamento persistente.
├── tests/ # Testes unitários e de integração, além dos mocks para esses testes.
├── theme/ # Estilização global e temas.
└── utils/ # Funções utilitárias.
- 📊 Analytics:
@amplitude/analytics-react-native
- ✒️ Fontes:
@expo-google-fonts/roboto
- 🗺 Mapas Zoom:
@openspacelabs/react-native-zoomable-view
- 🗂 Navegação:
@react-navigation
- 🖌 UI:
@shopify/restyle
- 🕸️ Requisições:
axios
- 📆 Manipulação de Datas:
date-fns
- 🖼️ UI/UX:
react-native-modal
,react-native-toast-message
- 📦 Armazenamento:
@react-native-async-storage/async-storage
- 📝 Validação:
yup
,react-hook-form
- 👤 Perfil/Login:
@react-native-google-signin/google-signin
⚠️ Nota: Estamos transitando denative-base
para@shopify/restyle
para estilização. Por favor, evite usarnative-base
em novos desenvolvimentos.
O projeto está configurado para utilizar o GitHub Actions e a plataforma Expo para criar a build e submeter os arquivos às lojas em modo draft ou teste. Para isso basta abrir um PR, revisá-lo, aprová-lo e fazer o merge com a branch main
.
A fim de realizar o deploy para a loja do android, os seguintes passos devem ser seguidos:
-
Criar uma conta em http://expo.dev ou utilize a conta do USPolis (nesse caso, pode pular para o item 3)
-
Configurar as credenciais de android para tal conta:
2.1 Conseguir Alias
2.2 Conseguir Senha
-
Logar na conta expo em seu terminar
npx expo login -h
-
Rodar
npx eas build --profile production --platform android
e seguir as instruções
A fim de realizar o deploy para a loja do iOS, os seguintes passos devem ser seguidos:
-
Criar uma conta em http://expo.dev ou utilize a conta do USPolis (nesse caso, pode pular para o item 3)
-
Configurar as credenciais de iOS para tal conta:
2.1 Conseguir Apple ID
2.2 Conseguir Apple Team ID
2.3 Conseguir Apple Provisioning Profile
2.4 Conseguir Apple Push Notifications Key
2.5 Conseguir Apple Push Notifications Certificate
-
Logar na conta expo em seu terminal
npx expo login -h
-
Rodar
npx eas build --profile production --platform ios
e seguir as instruções. Para isso você precisará de uma conta na apple connect que tenha permissões para realizar o build de aplicativos. -
Após o build ser realizado, rodar o comando
npx eas submit --platform ios
e seguir as instruções. Dessa forma o build irá automaticamente para a Apple como um build válido.
Sinta-se à vontade para contribuir e melhorar ainda mais nosso aplicativo. Se encontrar problemas ou tiver sugestões, abra uma Issue ou envie um Pull Request.
Feito com 💙 pela equipe USPolis.