Skip to content

debora-evilaine/mood-app

Repository files navigation

Desenvolvedores

  • Carlos Eduardo (carlosems)
  • Débora Eviliane (debora-eviliane)
  • Leandro Fernandes (LeandroFernandes105)
  • Pedro Faustino (sayplys)
  • Thawany Lima (thawanylima)
  • Vitória Novaes (veetwt)

Guia Completo do Projeto MoodFlow


1. Primeiros Passos

Este é um projeto Expo que utiliza o Expo Router para roteamento baseado em arquivos.

1.1. Instalar Dependências

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-context

1.2. Iniciar o Aplicativo

Sempre inicie o servidor limpando o cache para garantir que todas as configurações do Metro sejam carregadas corretamente:

npx expo start --clear

Na saída do terminal, você encontrará opções para abrir o aplicativo em emuladores ou no Web Browser (pressionando w).


2. Configuração do Banco de Dados (SQLite Web)

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.

2.1. Ajuste do metro.config.js (Crítico)

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;

2.2. Inicialização do Serviço de Dados

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).


3. Estrutura do Projeto e a base de Dados

3.1. Arquivos de Lógica Essenciais

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.

3.2. Modelo de Dados (Relacionamentos N:N)

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).

5. Recursos de Aprendizagem

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6