📚 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