# 🚀 ELO — Guia de Início Rápido

> **Controle Parental + Educação + Autonomia Digital**
> Plataforma completa: backend NestJS + App dos Pais (Flutter) + App da Criança (Flutter)

---

## ⚡ Setup em 5 minutos

### Pré-requisitos (instale se não tiver)

| Ferramenta | Versão | Link |
|------------|--------|------|
| Docker Desktop | Qualquer | [docker.com](https://www.docker.com/products/docker-desktop) |
| Node.js | 20+ | [nodejs.org](https://nodejs.org) |
| Flutter | 3.16+ | [flutter.dev](https://flutter.dev/docs/get-started/install) |

### 1. Execute o setup automático

**Windows (PowerShell como Administrador):**
```powershell
cd elo
powershell -ExecutionPolicy Bypass -File scripts/setup.ps1
```

**Linux / macOS:**
```bash
cd elo
chmod +x scripts/setup.sh && ./scripts/setup.sh
```

### 2. Inicie a API

```bash
cd services/api
npm run start:dev
```

A API estará disponível em `http://localhost:3000/api`
Documentação Swagger: `http://localhost:3000/api/docs`

---

## 📱 Rodando os apps Flutter

### App dos Pais

```bash
cd apps/parent_app
flutter pub get
flutter run
```

**Credenciais demo para login:**
- Email: `parent@elo.local`
- Senha: `EloDemo2024!`

### App da Criança

```bash
cd apps/child_app
flutter pub get
flutter run
```

> O app do filho precisa de **pareamento** com o app dos pais:
> 1. No app dos pais: Toque no perfil do filho → "Parear dispositivo"
> 2. Escaneie o QR Code ou digite o código no app do filho

---

## 🏗️ Estrutura do projeto

```
elo/
├── services/api/        ← Backend NestJS (porta 3000)
├── apps/
│   ├── parent_app/      ← App dos Pais (Flutter)
│   └── child_app/       ← App da Criança (Flutter)
├── docker-compose.yml   ← PostgreSQL + Redis
├── .env.example         ← Variáveis de ambiente
└── scripts/             ← Scripts de setup
```

---

## 🔑 Variáveis de ambiente importantes

Arquivo: `.env` (criado automaticamente a partir de `.env.example`)

| Variável | Padrão | Descrição |
|----------|--------|-----------|
| `AI_PROVIDER` | `mock` | `mock` funciona sem API key. Use `anthropic` ou `openai` para IA real |
| `JWT_SECRET` | valor dev | **Troque em produção!** |
| `DATABASE_URL` | local Docker | URL do PostgreSQL |

---

## 🗄️ Banco de dados

```bash
# Visualizar dados no navegador
cd services/api
npx prisma studio

# Resetar tudo e rerodar seed
npm run db:reset

# Apenas rerodar seed
npm run db:seed
```

**Usuários de demonstração:**

| Tipo | Email | Senha |
|------|-------|-------|
| Responsável | `parent@elo.local` | `EloDemo2024!` |
| Admin | `admin@elo.local` | `EloAdmin2024!` |

---

## 🎯 Fluxo principal (como o produto funciona)

```
1. Responsável cria conta → família criada automaticamente
2. Responsável cria perfil do filho
3. Responsável gera código de pareamento (QR Code)
4. Filho escaneia QR Code no seu app → dispositivo pareado
5. Responsável configura política (limites de apps, horários)
6. App do filho sincroniza política e controla uso
7. Filho faz missões educacionais → ganha tempo de tela
8. Filho pode pedir tempo extra → responsável aprova/nega
```

---

## 🤖 IA (opcional)

Por padrão, `AI_PROVIDER=mock` — funciona sem nenhuma API key.

Para usar IA real nas missões geradas:

```bash
# No .env:
AI_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
```

---

## 🐛 Solução de problemas

**"Não consigo conectar ao banco"**
```bash
docker compose up -d postgres redis
# Aguardar 10s e tentar novamente
```

**"Port 3000 already in use"**
```bash
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F

# Linux/Mac
lsof -ti:3000 | xargs kill
```

**"Flutter: no devices"**
```bash
flutter doctor
# Verificar emulador/dispositivo conectado
flutter devices
flutter run -d <device_id>
```

**"App do filho não conecta à API"**
- No emulador Android, `10.0.2.2` é o `localhost` da máquina host
- No dispositivo físico, use o IP real da máquina: `http://192.168.x.x:3000`
- Configure em `apps/child_app/lib/features/missions/data/missions_repository.dart`

---

## 📚 Documentação técnica

| Documento | Descrição |
|-----------|-----------|
| `docs/ARCHITECTURE.md` | Arquitetura geral |
| `docs/ANDROID_CONTROL_ENGINE.md` | Motor de controle Android |
| `services/api/prisma/schema.prisma` | Esquema do banco de dados |
| `http://localhost:3000/api/docs` | API Swagger (quando rodando) |

---

## 🚀 Deploy

Para produção, configure:
1. `JWT_SECRET` e `JWT_REFRESH_SECRET` com valores fortes (`openssl rand -base64 64`)
2. `NODE_ENV=production`
3. `DEV_MODE=false`
4. Banco PostgreSQL em serviço gerenciado (RDS, Supabase, etc.)
5. Redis gerenciado (ElastiCache, Upstash, etc.)

```bash
# Build da API
cd services/api
npm run build
npm start
```
