📚  Sumário
- Visão Geral do Projeto
 - Tuteli - Aplicativo React Native
 - Tuteli - Flask Server
 - NGROK (para rodar o projeto usando o Expo Go no celular)
 
Visão Geral do Projeto
Este repositório contém os principais componentes da nossa aplicação, organizados da seguinte forma:
- 
app/: Contém as interfaces de usuário do projeto. - 
server/: Contém a implementação do servidor backend. 
Tanto as pastas app quanto server possuem seus próprios arquivos README.md, com instruções e explicações detalhadas para ajudá-lo a compreender e trabalhar de forma mais eficiente em cada parte do projeto.
Para mais informações, consulte os respectivos arquivos README.md dentro de cada pasta.
Tuteli - Aplicativo React Native
🎨  Funcionalidades
- Suporte a Tema Escuro/Claro: Alternância automática de tema com base nas configurações do dispositivo
 - Navegação Moderna: React Navigation
 - Design Responsivo: NativeWind
 - Segurança de Tipos: TypeScript
 - Qualidade de Código: ESLint e Prettier
 
📋  Scripts Disponíveis
| Command | Description | 
|---|---|
npm start | 
Start the Expo development server | 
npm run android | 
Run on Android device/emulator | 
npm run ios | 
Run on iOS device/simulator | 
npm run web | 
Run in web browser | 
npm run lint | 
Run ESLint and Prettier checks | 
npm run format | 
Format code with ESLint and Prettier | 
npm run prebuild | 
Generate native code for custom builds | 
🔧  Configuração de Desenvolvimento
- 
Desenvolvimento Mobile:
- Instale o Expo Go em seu dispositivo móvel
 - Para Android: configure o Android Studio
 - Para iOS: configure o Xcode (somente macOS)
 
 - 
Desenvolvimento Web:
- Nenhuma configuração adicional é necessária, o projeto roda em qualquer navegador moderno
 
 
📝  Observações
- Este projeto utiliza o Expo SDK 53
 - Versão do React Native: 0.79.5
 - Suporte para plataformas iOS, Android e Web
 - Utiliza os novos recursos do React 19
 
🤝  Contribuindo
Ao contribuir para este projeto:
- Execute 
npm run lintantes de realizar o commit - Use 
npm run formatpara garantir a formatação consistente do código - Siga a estrutura e convenções de nomenclatura já existentes no projeto
 
📱  .env — App
# Base API URL (used by the mobile and web app)
EXPO_PUBLIC_API_URL=http://127.0.0.1:5000
Tuteli - Flask Server
Convenção de Nomeação de Branches
- 
Funcionalidades (Features):
As branches devem ser nomeadas de acordo com a user story que está sendo implementada, usando o formato:
feat/US_XX
ondeXXé o número da user story. - 
Correções de Bugs (Bug Fixes):
As branches destinadas a correções de erros devem usar o formato:
bugfix/BUG_XX
ondeXXé o número do bug. 
Observação: Caso não exista uma tarefa correspondente ao seu trabalho, entre em contato com o Gerente de Projeto (AGES IV) para garantir que uma tarefa seja criada antes de prosseguir.
Isso ajuda a manter o alinhamento e o acompanhamento adequado de todas as atividades de desenvolvimento.
Diretrizes de Commit
Os commits devem conter uma breve descrição do que foi implementado.
Isso auxilia na manutenção da clareza e rastreabilidade ao longo do processo de desenvolvimento.
Como executar localmente
- Certifique-se de que você está no diretório do servidor:
 
cd server
- Crie um ambiente virtual Python (versão 3.11):
 
python3.13 -m venv venv
source venv/bin/activate
- Instale as dependências:
 
pip install -r requirements.txt
- Exporte as variáveis de ambiente e inicie o servidor Flask:
 
Linux/macOS:
export FLASK_APP=src.app
export FLASK_ENV=development
flask run
PowerShell:
$env:FLASK_APP = "src.app"
$env:FLASK_ENV = "development"
flask run
Estrutura
tuteli/server/
├── src/                  # Application source code
│   ├── app.py            # Main entry point (Flask)
│   ├── models/           # Data models
│   ├── routes/           # API routes/endpoints
│   └── services/         # Business logic and helper services
├── tests/                # Automated tests
├── requirements.txt      # Python dependencies
├── serverless.yml        # Serverless Framework configuration
├── terraform/            # Terraform scripts and modules
└── README.md             # Project documentation
Configurando o GEMINI KEY
Windows (cmd):
set GEMINI_API_KEY=SUA_CHAVE_AQUI
PowerShell:
$env:GEMINI_API_KEY="SUA_CHAVE_AQUI"
Linux/macOS:
export GEMINI_API_KEY=SUA_CHAVE_AQUI
🌐  .env — Server
# Default AI provider
AI_PROVIDER=gemini
# Gemini configuration
GEMINI_API_KEY=your_gemini_api_key_here
GEMINI_MODEL=gemini-2.5-flash
# OpenAI configuration
OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-3.5-turbo
# Other settings
MAX_CONVERSATION_HISTORY=20
MAX_MESSAGE_LENGTH=4000
NGROK (para rodar o projeto usando o Expo Go no celular)
Para que o app possa rodar normalmente, é necessário exportar o backend para fora do localhost, já que estaremos utilizando duas máquinas (computador + celular).
O NGROK cria um túnel público temporário, permitindo que o celular acesse o servidor local.
Por isso, evite usar portas sensíveis e encerre o NGROK após o uso.
🧩 Instalação do NGROK
Windows
- Baixe o instalador no site oficial: https://ngrok.com/download
 - Extraia o arquivo baixado e mova o executável 
ngrok.exepara uma pasta acessível. - Adicione o NGROK ao PATH do sistema (opcional).
 - No terminal, conecte sua conta NGROK (necessário criar uma conta gratuita):
ngrok config add-authtoken SEU_TOKEN_AQUI 
Linux/macOS
- Execute o comando de instalação via terminal:
 
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
sudo apt update && sudo apt install ngrok
- Conecte sua conta:
 
ngrok config add-authtoken SEU_TOKEN_AQUI
🚀  Iniciando o NGROK no terminal
Após instalar, inicie o túnel com o comando:
ngrok http 5000
O NGROK exibirá uma URL pública (https) — é essa URL que deverá ser usada no .env do app.
📱  .env — App (com NGROK)
No arquivo .env do App, altere a URL base para a que o NGROK fornecer:
# Base API URL (usada pelo app mobile e web)
EXPO_PUBLIC_API_URL=URL_NGROK
Exemplo:
EXPO_PUBLIC_API_URL=https://ab12-34-567-89-123.ngrok-free.app