O Geras é um ecossistema digital desenvolvido em React Native (Expo), desenhado para devolver a autonomia aos seniores e garantir a tranquilidade das suas famílias. A missão é combater o isolamento e promover a segurança através de uma comunidade unida e tecnologia acessível.
Este projeto foi desenvolvido no âmbito do Mestrado em Comunicação e Tecnologias Web (MCTW), seguindo a metodologia CBL (Challenge Based Learning) com a pareceria da Altice Labs. O desenvolvimento desta aplicação serviu como ponto de convergência para aplicar os conhecimentos adquiridos em todas as disciplinas do mestrado, resultando numa solução prática e integrada.
Note
A infraestrutura e código fonte deste projeto estão divididos em dois repositórios:
- Frontend (App Mobile): Este repositório atual.
- Backend (Supabase & Base de Dados): Disponível em Geras-CBL/Geras-Supabase.
Disponível aqui.
- Casa Inteligente e Segura: Integração com sensores (IoT) para monitorização de rotinas (toma de medicação, gestão de despensa) e deteção de quedas.
- Pedidos de Ajuda: Interface simplificada para seniores solicitarem apoio (compras, companhia) a voluntários verificados.
- Gestão para Cuidadores: Monitorização de saúde e alertas de segurança em tempo real para familiares.
- Voluntariado: Sistema de recompensas (vouchers) para quem presta auxílio, fomentando a economia local.
A aplicação encontra-se organizada dentro da pasta geras. A estrutura de ficheiros segue uma lógica modular, adaptada agora a uma arquitetura dinâmica com ligação ao backend, para facilitar a manutenção e escalabilidade:
- app/: Contém a lógica de navegação e as páginas principais da aplicação (Expo Router).
- assets/: Armazena recursos estáticos como imagens, ícones e tipos de letra.
- components/: Componentes de interface (UI) reutilizáveis, organizados por perfil e partilhados (ex: botões, cartões, cabeçalhos).
- constants/: Ficheiros de configuração global, como paletas de cores e definições de layout.
- context/: Gestão de estado global da aplicação (ex:
AuthContextpara sessões,ProfileContextpara perfis,NotificationsContext). - lib/: Inicialização e configuração base de bibliotecas externas, como o cliente principal do Supabase.
- services/: Serviços que agrupam a comunicação com a API, chamadas à base de dados, e processamento de serviços externos (ex: saúde, localização).
- types/: Definições de tipagem e interfaces TypeScript para garantir coerência de dados em toda a aplicação.
Esta aplicação é construída com Expo e suporta iOS e Android. Para correr a aplicação no seu ambiente local, siga as instruções abaixo:
- Node.js: Certifique-se de que tem o Node.js instalado (recomendada a versão 18 ou superior).
- Ambiente Expo: Instale a app Expo Go no seu dispositivo móvel (iOS ou Android) ou configure um emulador/simulador no seu computador (Android Studio ou Xcode).
-
Clone o repositório para a sua máquina local:
git clone <url-do-repositorio>
-
Aceda à pasta principal da aplicação (passo fundamental, pois a raiz contém outras pastas):
cd Gerascd geras -
Instale as dependências do projeto:
npm install
-
Configuração de Variáveis de Ambiente: Crie um ficheiro
.envna raiz da pastagerase adicione as seguintes variáveis com as credenciais do seu projeto Supabase (local ou remoto):EXPO_PUBLIC_SUPABASE_URL=a_sua_url_do_supabase EXPO_PUBLIC_SUPABASE_ANON_KEY=a_sua_anon_key_do_supabase
-
Inicie o servidor de desenvolvimento:
npm run start
No terminal, será gerado um QR Code e apresentadas várias opções:
- Pressione
apara abrir no emulador Android. - Pressione
ipara abrir no simulador iOS (apenas macOS). - Digitalize o código QR com a aplicação Expo Go (no Android) ou com a câmara do telemóvel (no iOS) para correr diretamente no seu dispositivo físico.
- Framework: React Native (via Expo)
- Linguagem: JavaScript / TypeScript
- Routing: Expo Router (File-based routing)
- Estilo: NativeWind (Tailwind CSS para React Native)
- Backend as a Service: Supabase (Autenticação, Base de Dados, Edge Functions)
"Se antecipamos um mundo digital, não podemos deixar ninguém para trás."