# Bottle AI

Experiencia de voz con personajes asociados a botellas vía código QR.

## Arquitectura

```
QR → Producto → Personaje → Micrófono → STT → LLM → TTS → Audio + animación
```

- **Mobile**: React Native + TypeScript
- **Backend**: FastAPI + MySQL
- **IA**: providers intercambiables (OpenAI/Ollama, Google STT, ElevenLabs TTS)

## Inicio rápido

### Backend + MySQL

```bash
cp .env.example .env
# Completar API keys en .env
```

API: http://localhost:8000  
Docs: http://localhost:8000/docs

### Seed de demo

```bash
cd backend
python3 -m venv .venv
source .venv/bin/activate

pip install -r requirements.txt
python ../scripts/seed_database.py

uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
```

QR de demo: `BOT-8F72K9`

### Mobile

```bash
cd mobile
npm install
cp .env.example .env
```

## 1. Instalar Android Studio
```bash
sudo snap install android-studio --classic
sudo usermod -aG kvm $USER
```

## 2. Abrir Android Studio y completar el setup
```bash
Elige Standard installation.
Acepta licencias.
Deja que descargue el Android SDK (suele quedar en ~/Android/Sdk).
En Device Manager → Create Device → elige un Pixel → imagen API 34 o superior → Finish → Play.
```
## 3. Variables de entorno
```bash
export ANDROID_HOME=$HOME/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin
```
## 4. Verificar si el emulador esta corriendo
```bash
adb devices
```

## 5. Correr la APP
```bash
cd /mobile
npx expo run:android
```

## Flujo MVP

1. Home → Scanner
2. Escanear QR (`BOT-8F72K9` o ingreso manual)
3. Ver producto + personaje
4. Conversar por voz
5. STT → LLM → TTS → personaje "talking"

## Providers

| Servicio | Variable | Opciones |
|----------|----------|----------|
| LLM | `LLM_PROVIDER` | `openai`, `ollama`, `mock` |
| STT | `STT_PROVIDER` | `google`, `mock` |
| TTS | `TTS_PROVIDER` | `elevenlabs`, `mock` |

utiliza mock para hacer pruebas sin conectar a las Apis.

Las API keys nunca van en el mobile.
