- Carlos Eduardo (carlosems)
- Débora Eviliane (debora-eviliane)
- Leandro Fernandes (LeandroFernandes105)
- Pedro Faustino (sayplys)
- Thawany Lima (thawanylima)
- Vitória Novaes (veetwt)
Este é um projeto Expo que utiliza o Expo Router para roteamento baseado em arquivos.
Instale todas as dependências do projeto, seguidas pelos pacotes específicos necessários para o Banco de Dados (SQLite) e componentes de UI (SVG, LinearGradient):
# 1. Instala todas as dependências listadas no package.json
npm install
# 2. Instala pacotes cruciais que o Expo não instala por padrão:
npx expo install expo-sqlite react-native-svg expo-linear-gradient react-native-safe-area-contextSempre inicie o servidor limpando o cache para garantir que todas as configurações do Metro sejam carregadas corretamente:
npx expo start --clearNa saída do terminal, você encontrará opções para abrir o aplicativo em emuladores ou no Web Browser (pressionando w).
O projeto utiliza SQLite (via expo-sqlite) para persistência local de dados. Para que ele funcione no ambiente Web (navegador), é obrigatória a configuração do bundler Metro.
Verifique o arquivo metro.config.js na raiz do projeto e garanta que ele contenha a regra para resolver a extensão .wasm (necessária para o SQLite no ambiente web):
const { getDefaultConfig } = require('expo/metro-config');
const config = getDefaultConfig(__dirname);
config.resolver.assetExts.push('wasm');
module.exports = config;Toda a lógica de persistência (CRUD) é centralizada na classe DatabaseService. O método init() deve ser chamado uma única vez no início da aplicação para criar as tabelas e inserir os dados iniciais (statusHumor e configuracao global).
| Path | Descrição |
|---|---|
app/index.js |
O ponto de entrada (rota /) que carrega o componente HomeScreen. |
src/services/database.service.ts |
Contém a classe DatabaseService com todas as operações CRUD (createMoodEntry, getAllMoodEntries, etc.). |
src/screens/ |
Pasta para outras telas do aplicativo. |
O modelo de banco de dados foi construído para suportar múltiplos humores e tags por registro, utilizando as seguintes tabelas e relacionamentos:
| Tabela | Chave Estrangeira (FK) | Relacionamento | Finalidade |
|---|---|---|---|
registroHumor |
N/A | 1:N (para as tabelas N:N) | Armazena o registro principal, texto e data/hora. |
statusHumor |
N/A | 1:N (para registroStatus) |
Armazena os tipos de humor disponíveis (ex: Feliz, Triste). |
tag |
N/A | 1:N (para registroTag) |
Armazena as tags ou categorias. |
registroStatus |
idRegistroHumor, idStatusHumor |
N:N (Tabela Associativa) | Permite que um registro tenha MUITOS humores. |
registroTag |
idRegistroHumor, idTag |
N:N (Tabela Associativa) | Permite que um registro tenha MUITAS tags. |
configuracao |
N/A | Global (1:1 conceitual) | Armazena configurações únicas do aplicativo (lembretes, tema). |
- Expo Router documentation: Guia de roteamento baseado em arquivos.
- Expo documentation: Documentação oficial do Expo.