# Talk TEA – micro SaaS

Talk TEA e uma plataforma web pensada para facilitar a comunicacao entre pais e filhos com TEA usando pictogramas (AAC), rotina visual e registro de emocoes. O projeto combina **Laravel 12 + MySQL** no backend e uma **SPA React (Vite + Tailwind)** integrada ao mesmo codigo.

## Stack e recursos

- **Backend**: PHP 8+, Laravel 12, Sanctum, MySQL, servicos de plano e geracao de payload PIX (BR Code) com Simple QrCode.
- **Frontend**: React 18 + React Router, Tailwind CSS, Vite e axios consumindo a API REST.
- **Pagamentos**: PIX estatico com chave `11993279883`, payload EMV gerado segundo padrao BACEN + QR Code SVG.
- **Planos**: Free (limitado) e PRO (pagamento unico). Limites sao aplicados no backend e expostos ao frontend.
- **Paineis**:
  - Usuario: AAC (pictogramas), rotina visual, emocoes, upgrade PIX.
  - Admin: gestao de usuarios, bloqueios, confirmacao manual de pagamentos PRO.

## Pre-requisitos

| Dependencia | Versao sugerida |
|-------------|-----------------|
| PHP | 8.2+ com extensoes `mbstring`, `openssl`, `pdo_mysql`, `intl` |
| Composer | 2.x |
| MySQL/MariaDB | MySQL 8+ (ou MariaDB 10.5+) |
| Node.js | 20+ (para build do Vite/React) |
| npm | 10+ |

## Instalacao local

1. **Clonar e instalar dependencias**
   ```bash
   git clone <repo> talktea
   cd talktea
   composer install
   npm install
   ```
2. **Configurar `.env`**
   ```bash
   cp .env.example .env
   php artisan key:generate
   ```
   Ajuste as variaveis do banco (`DB_*`), dominio de producao (`APP_URL=https://talktea.eadbrasil.info`) e dados PIX (`PIX_KEY`, `PIX_RECEIVER_NAME`, etc.).

3. **Banco de dados**
   ```bash
   php artisan migrate --seed
   ```
   Isso cria todas as tabelas (users, pictograms, rotinas, payments, etc.) e um admin inicial:
   - **E-mail**: `admin@talktea.test`
   - **Senha**: `senha123`

4. **Executar os servidores**
   ```bash
   php artisan serve
   npm run dev
   ```
   A SPA React sera servida via Vite, conectando na API Laravel (`/api`).

5. **Build de producao**
   ```bash
   npm run build
   php artisan route:cache
   php artisan config:cache
   ```

## Estrutura de diretorios

```
app/
  Http/Controllers (Auth, Plan, Pictogram, Routine, Emotion, Admin/*)
  Http/Requests (validacoes)
  Middleware/EnsureUserIsNotBlocked.php
  Models (User, Pictogram, Routine, EmotionLog, Payment, ChildProfile)
  Policies/ (PictogramPolicy, RoutinePolicy)
  Services/ (PlanService, PixPayloadService)
bootstrap/app.php (registrando rotas API, middlewares)
config/talktea.php (planos + PIX)
resources/views/app.blade.php (shell da SPA)
resources/js/ (SPA React + context + paginas)
routes/api.php / web.php
```

## API principal

- `POST /api/auth/register`, `POST /api/auth/login`, `POST /api/auth/logout`, `GET /api/user`
- `GET|POST|PUT|DELETE /api/pictograms`
- `GET|POST|PUT|DELETE /api/routines`, `PATCH /api/routines/{id}/toggle`, `PATCH /api/routines/{id}/move`
- `GET /api/emotions/available`, `POST /api/emotions/log`
- `GET /api/plan`, `/api/plan/limits`, `/api/plan/upgrade`, `POST /api/plan/payment-request`
- Admin (`role=admin` + `auth:sanctum`): `/api/admin/users`, `/api/admin/users/{id}/block`, `/api/admin/users/{id}/plan`, `/api/admin/payments`, `/api/admin/payments/{id}/confirm`

## Frontend SPA

Localizado em `resources/js`, utiliza React Router com as rotas: `/login`, `/register`, `/dashboard`, `/comunicacao`, `/rotina`, `/emocoes`, `/assinatura`, `/admin`, `/admin/usuarios`, `/admin/pagamentos`. O layout `AppShell` traz navbar responsiva, cards e botoes amigaveis para mobile.

## Pagamento via PIX

- Valor fixo de **R$ 147,00** e payload EMV gerado pelo `PixPayloadService`.
- `GET /api/plan/upgrade` entrega QRCode em SVG base64 + payload BR Code para copiar.
- Apos pagar, o usuario chama `POST /api/plan/payment-request`, gerando registro `pending`. O admin confirma em `/api/admin/payments/{id}/confirm`, atualizando o plano para PRO e marcando `payment_confirmed`.

## Arquivo SQL

O script `talktea_schema.sql` contem todos os `CREATE TABLE` compativeis com MySQL, incluindo chaves, indices e relacionamentos para users, pictograms, routines, payments, etc. Use-o para provisionar o banco direto no cPanel se preferir.

## Deploy em servidor cPanel

1. **Upload**: compacte o projeto (sem node_modules/vendor) e envie via File Manager/SSH para `~/talktea`.
2. **Instalar dependencias em producao**:
   ```bash
   composer install --no-dev --optimize-autoloader
   npm install && npm run build
   ```
3. **Configurar DocumentRoot**: apontar o subdominio `talktea.eadbrasil.info` para a pasta `public/` do projeto.
4. **.env de producao**: ajustar banco MySQL do cPanel, chaves PIX, `APP_URL=https://talktea.eadbrasil.info`, `APP_ENV=production`, `APP_DEBUG=false`.
5. **Banco de dados**: importe `talktea_schema.sql` via phpMyAdmin e, se necessario, rode `php artisan migrate --force` para sincronizar futuros updates.
6. **Permissoes**: garanta escrita para `storage/` e `bootstrap/cache/` (`chmod -R 775`).
7. **Otimizacoes** (via SSH):
   ```bash
   php artisan config:cache
   php artisan route:cache
   php artisan view:cache
   ```

## Proximos passos sugeridos

- Adicionar upload real de imagens nos pictogramas (Storage Laravel + S3/cPanel).
- Implementar webhook de confirmacao PIX futuramente.
- Criar relatorios PDF e suporte a multiplos perfis infantis no painel PRO.

Contribuicoes e melhorias sao bem-vindas! :)
