Loading Spinner - Copy this React, Tailwind Component to your project
# Projeto: AdSafe AI – App completo no Google Opal (Frontend + Backend + Banco + i18n) ## Visão Geral Criar um micro SaaS completo chamado **AdSafe AI**, com objetivo de detectar palavras proibidas em textos publicitários para plataformas como Facebook Ads, Google Ads e TikTok Ads. O app deve ter: Autenticação completa (login, cadastro, recuperação de senha) Frontend moderno Backend com API REST Banco de dados relacional Suporte a 3 idiomas (pt BR, en US, es ES) Plano freemium com limites # FRONTEND ## Framework e UI Framework: Next.js Estilização: Tailwind CSS Componentes: UI Clean com acessibilidade Responsivo: Mobile first Suporte multilíngue: i18next com arquivos `auth.json`, `dashboard.json`, `analyzer.json`, etc. ## Páginas ### 1. /login Campos: email, senha Links: “Esqueceu a senha?”, “Criar conta” Validações visuais ### 2. /signup Campos: nome, email, senha, confirmar senha Botão: “Criar Conta” ### 3. /forgot Campo: e mail Mensagem de confirmação de envio ### 4. /reset?token= Campos: nova senha, confirmar senha Validação de token ### 5. /dashboard Texto de boas vindas Botão: “Analisar novo texto” Tabela: histórico de análises Seção do plano atual (gratuito ou PRO) ### 6. /analyze Textarea para colar copy Seletor de plataforma (Facebook, Google, TikTok, LinkedIn) Botão: “Analisar” Exibição de: Pontuação de risco Palavras proibidas (vermelho) Palavras sensíveis (amarelo) Sugestões de substituição Botão: exportar PDF # BACKEND (API) ## Rotas REST ### POST /api/register Campos: nome, email, senha Output: token JWT + dados do usuário ### POST /api/login Campos: email, senha Output: token JWT + dados ### POST /api/logout ### POST /api/forgot password Envia e mail com token ### POST /api/reset password Redefine senha com token válido ### GET /api/me Retorna dados do usuário autenticado ### POST /api/analyze Input: texto + plataforma Output: palavras perigosas, sensíveis, sugestões, pontuação, diagnóstico ### POST /api/export Gera PDF da análise # BANCO DE DADOS (PostgreSQL) ## Tabela: users id (UUID) nome email (único) senha_hash plano (gratuito, pro) data_criacao email_verificado token_recuperacao token_expira_em ## Tabela: textos_analisados id user_id (FK) plataforma texto_original palavras_proibidas (array) palavras_sensiveis (array) sugestoes (JSON) pontuacao_risco gerado_em ## Tabela: historico_pagamentos (opcional) id user_id tipo_pagamento valor status data_pagamento plano_referente # AUTENTICAÇÃO Login com JWT Hash de senha com bcrypt Recuperação de senha via token por e mail Proteção contra brute force no login (rate limiter) Logout por invalidar token # i18n (Internacionalização) ## Idiomas pt BR (Português Brasil) en US (Inglês) es ES (Espanhol) ## Pastas de tradução
