Comparativo técnico · 25 mai 2026 · v1
Whitelabel técnico · USPIX por PSYCO

O whitelabel ficou melhor que o original.

USPIX é o whitelabel de off-ramp USDT→PIX que a PSYCO entregou pro Thiago Moya tendo o Crypto2pay como referência funcional. Este documento compara as duas stacks lado a lado · performance, segurança, acessibilidade e LGPD · pra mostrar por que o whitelabel não foi cópia, foi upgrade técnico medido em produção.

Whitelabel
uspix.vc
Next.js 15 + Vercel
Referência
crypto2pay.com.br
pay.crypto2pay.com.br
Método
Playwright headless
curl · Performance API
TL;DR

Três pontos onde o whitelabel passou na frente.

Resumo direto do que o USPIX entrega de diferente. Cada item tem evidência técnica nas seções abaixo · números medidos em produção, sem opinião.

USPIX · Segurança

Zero painel admin público.

Next.js + Vercel não tem wp-login.php, xmlrpc.php nem REST API exposta · o conteúdo vem do código-fonte versionado em Git. Headers HSTS, CSP, X-Frame-Options declarados no next.config.ts · uma linha cada. O Crypto2pay original carrega tudo isso em aberto por padrão do WordPress.

USPIX · Performance

Carrega em 0,6s · 7,7× mais rápido.

USPIX entrega FCP em 584ms, Load em 564ms, 241 KB em 23 requests. O Crypto2pay original demora 4,5s pro primeiro pixel e 5,6s pro Load · 3 MB em 30 requests, incluindo um vídeo de hero de 2,3 MB carregado sem aparecer na rota de pagamento.

USPIX · LGPD

Conforme por default · sem tracking.

USPIX não dispara analytics nem tracker algum sem consent. O Crypto2pay original dispara GTM + GA4 + Google Ads remarketing antes de qualquer interação, sem banner, setando cookies persistentes · violação direta do Art. 8º da LGPD que o whitelabel já resolve.

Performance · medido em produção

O whitelabel é 7,7× mais rápido na primeira pintura. Em bytes, 13×.

Mesma ferramenta (Playwright headless, Chromium 130, viewport 1440×900), mesmo dia, mesma região de teste. Aviso: nav total considera networkidle · ambos foram aguardados até o último request fechar.

Métrica
crypto2pay
USPIX
Δ
First Contentful Paint
4.512 ms
584 ms
7,7× mais rápido
First Paint
3.880 ms
584 ms
6,6× mais rápido
DOMContentLoaded
4.492 ms
373 ms
12× mais rápido
Load event
5.623 ms
564 ms
10× mais rápido
Navegação total (networkidle)
7.295 ms
1.442 ms
5× mais rápido
Bytes transferidos
~3.089 KB
241 KB
12,8× menor
Requests HTTP
30
23
−23%
H1 / H2 / H3 (estrutura semântica)
0 / 0 / 0
1 / 6 / 12
WCAG 1.3.1 OK
Imagens com atributo alt
11/36
4/4 (100%)
A11y completo
Landmarks (header/nav/main/footer)
0 / 4
4 / 4
SR-friendly
Meta description / Open Graph
ausentes
presentes
SEO OK
Banner de consent (LGPD)
ausente
não aplica (zero tracking)
conforme
Stack do produto original

O que o Crypto2pay roda hoje.

Dois ambientes distintos no original · institucional em WordPress sob hosting compartilhado e o app de pagamento como SPA Vite sem framework declarado. Mistura cara de manter, devagar pra evoluir · ambos resolvidos por uma única base Next.js no whitelabel.

crypto2pay.com.br · institucional

WordPress + Apache + PHP 8.3 em GoDaddy.

CMSWordPress (não-versionado)
RuntimeApache · PHP 8.3.30
HostingGoDaddy · cPanel · p3plzcpnl509523
Temacustom · /themes/crypto2pay/
Plugins críticosYoast 26.9 · WPML 4.9.0 · WP Rocket 3.20.3
Smooth scrollLenis (não-minificado)
Schema.org JSON-LDpresente (gerado por Yoast)
hreflangpt-br · en · es · zh-hans · x-default
HTML home72 KB
Hero PNG1,35 MB · sem WebP/AVIF · sem srcset
pay.crypto2pay.com.br · app de pagamento

SPA Vite vanilla, sem framework declarado.

BuildVite · bundle único hash-versionado
Frameworknenhum marker (React/Vue/Angular)
TipografiaGilroy self-hosted (4 pesos) + Rajdhani Google
ÍconesFont Awesome 6.5 · flag-icons CDN
Rajdhani usada?não · custo morto carregando
HTML langen · mesmo com ?lang=pt
Title"Crypto2Pay" · sem hierarquia
Meta descriptionausente
Open Graphausente
ServerNode minimal · Express-like (sem header)
Segurança

O que o WordPress carrega de bagagem.

Zero security headers · administração do WP totalmente exposta · vetores conhecidos prontos pra exploração automática. Nada disso existe na base Next.js do whitelabel · não há painel admin público pra invadir.

Crítico

Endpoints WP abertos sem proteção.

  • /wp-login.php retorna 200 · sem 2FA · sem rate limit visível
  • /wp-admin/ redireciona pro login · sem IP allowlist
  • /xmlrpc.php ativo · vetor clássico de brute-force e amplificação pingback
  • REST API exposta · /?rest_route=/ + /wp-json/ respondem · enumeração de usuários via /wp/v2/users viável
Crítico

Zero security headers.

Sem Strict-Transport-Security, sem Content-Security-Policy, sem X-Frame-Options, sem X-Content-Type-Options, sem Referrer-Policy, sem Permissions-Policy.

Servidor expõe Server: Apache e X-Powered-By: PHP/8.3.30 · facilita o fingerprinting de CVE conhecido na versão exata.

Atenção

Robots.txt e sitemap aceleram reconhecimento.

robots.txt com Disallow: vazio · /wp-admin/, /wp-login.php e /wp-content/uploads/ indexáveis pelo Googlebot. Sitemap Yoast cita caminhos do plugin · serve como mapa pra atacante saber o que está instalado.

Atenção

Backend leak no app de pagamento.

A chamada de cotação no wizard tem o param user=iliketech hardcoded na URL · parece ID de tenant ou conta interna exposto pro cliente. Vale revisar se isso deveria sair do front.

UX · wizard de pagamento

Onde o whitelabel encurtou o fluxo.

O wizard original tem quatro passos · em três deles encontramos atrito, contradição entre UI e validação ou contraste ilegível. Cada item abaixo virou requisito de design na entrega USPIX · onde dava pra resolver, resolvemos.

Crítico · UX

Validação contraditória no Step 1.

A interface mostra "Valor mínimo: 10,00 BRL". Ao tentar avançar, toast amarelo aparece dizendo "Valor precisa ser maior ou igual a R$ 50". UI e backend divergem · usuário fica perdido.

USPIX define mínimo único (10 USDT) declarado em um só lugar · sem toast surpresa.

Crítico · A11y

Botão "Avançar" desabilitado é invisível.

No estado disabled, contraste do texto preto sobre o azul cyan #5CD3E9 fica em 1.04 · WCAG AA exige 4.5. O usuário não enxerga que o botão está bloqueado · clica, nada acontece, abandona.

Atenção · UX

Step 2 trava em silêncio.

Quatro campos obrigatórios · clicar em "Avançar" sem preencher não mostra erro inline algum. O botão simplesmente não responde. Não há feedback do que está faltando · atrito de descoberta sobre atrito de leitura.

Atenção · UX

Carrossel duplica função do menu.

O slider "Como funciona" abaixo do wizard repete o que o link "Como funciona" do header já faz. Espaço above-the-fold consumido por redundância em vez de redução de fricção.

Observação

console.log de produção.

O app deixa console.log("gravando no local br") rodando na carga · marker de debug que escapou. Pequeno, mas é tema recorrente quando não há pipeline de build/CI rigoroso · próximo log pode vazar dado sensível.

Observação

"Politica" sem acento no rodapé.

Link "Politica de Privacidade" sem o í no footer. Detalhe pequeno · mas em página legal, sinaliza que ninguém revisou.

Step 1 do wizard crypto2pay com valor R$100 preenchido
Step 1 · UI diz mínimo R$ 10, toast diz R$ 50
Step 2 do wizard com 4 campos obrigatórios
Step 2 · sem validação inline
Acessibilidade

Onde a estrutura semântica fez diferença.

Acessibilidade não é checkbox de ESG · é o que define se um screen reader, um crawler ou um teclado conseguem operar o site. O app original falha no básico · o whitelabel acerta porque foi escrito em componentes semânticos desde a primeira linha.

Crítico · WCAG 1.3.1

Zero hierarquia de cabeçalho.

O scan encontrou 0 h1, 0 h2, 0 h3. Todo conteúdo está em <div>. Leitores de tela não conseguem navegar por seções · Google não consegue derivar tópicos.

USPIX renderiza 1 h1 + 6 h2 + 12 h3 · um por seção, hierarquia limpa.

Crítico · WCAG 1.1.1

25 imagens sem atributo alt.

36 imagens no documento · apenas 11 têm alt (algumas vazias, decorativas) · 25 sem nenhum atributo alt. Imagens ilustrativas inacessíveis a leitor de tela.

Zero imagens com loading="lazy" · todas baixam de uma vez no first paint.

Crítico · WCAG 3.1.1

HTML lang="en" em rota PT.

Mesmo acessando ?lang=pt, o atributo lang do <html> permanece "en". Leitor de tela pronuncia o português com fonemas em inglês · resultado inutilizável.

Atenção

Sem landmarks ARIA.

Zero <header>, <nav>, <main>, <footer> nem atributos role no markup. Navegação por landmarks · impossível.

LGPD · privacidade

Por que o whitelabel não carrega passivo regulatório.

O Brasil tem a Lei Geral de Proteção de Dados desde 2018 · vigência efetiva em 2020. Operar PIX no BR sem consent management é exposição direta a ANPD e Procon. O USPIX nasceu sem analytics default · zero exposição enquanto o produto cresce.

Crítico · LGPD Art. 8º

GA4 + Google Ads sem opt-in.

No carregamento do pay.crypto2pay.com.br/cryptopix:

  • Google Tag Manager · ativo
  • GA4 G-TM9181MC5H · ativo
  • Google Ads AW-17485903598 com remarketing · ativo
  • Endpoints pagead/viewthroughconversion e 1p-user-list disparados na carga inicial

Zero banner de consentimento detectado no markup. Cookies persistentes (_ga, _gcl_au, _ga_TM9181MC5H) setados sem opt-in.

Crítico · LGPD Art. 9º

Zero menção a LGPD no markup.

A LGPD exige aviso claro sobre tratamento de dados (finalidade, base legal, retenção, direitos do titular). No app crypto2pay, não há banner, modal, link de "Configurações de privacidade", "Configurar cookies" · nada. O único link existente é "Politica de Privacidade" no footer · sem acento e sem cookie management.

Atenção · regulatório

Operação BR via PJ Delaware.

Footer declara endereço "8 The Green, Ste R, Dover, State of Delaware, Zip Code 19901" · operadora é LLC norte-americana atendendo usuário brasileiro via PIX. Estrutura jurídica legítima · mas amplifica obrigação de compliance LGPD pelo Art. 3º (alcance extraterritorial). Procon não pergunta endereço fiscal · pergunta se houve aviso claro ao consumidor.

Observação

WPML cookie sem aviso.

No institucional, o cookie _icl_visitor_lang_js é setado direto pelo WPML (preferência de idioma · finalidade legítima). Mesmo assim, qualquer cookie persistente sem aviso já é exposição. Em Next.js, idioma vai no path (/pt, /en) · zero cookie necessário.

Por que Next.js · concretamente

O que o whitelabel ganhou ao sair do WordPress.

Não é hype de framework · é problema técnico específico resolvido por escolha de stack. Cada bullet abaixo aponta um problema do original e mostra como Next + Vercel apaga ele de uma vez no USPIX.

Performance

HTML estático + edge caching grátis.

Next 15 com App Router gera HTML estático no build · Vercel serve do edge global. Resultado real medido no USPIX: FCP 584ms versus FCP 4.512ms do crypto2pay · sem CDN extra, sem plugin de cache, sem hack.

WP Rocket existe pra mascarar o peso do WordPress · em Next, nada disso é necessário.

Imagens

next/image resolve AVIF, srcset e lazy.

O hero PNG de 1,35 MB do crypto2pay viraria ~80 KB em AVIF com srcset responsivo, lazy load automático e blur placeholder · zero configuração no Next. Mesma imagem · 17× menos bytes.

i18n

App Router segments substituem WPML.

WPML custa licença + plugin + cookie · Next faz i18n nativo via app/[locale]/.... SEO ganha (URLs limpas tipo /pt, /en), hreflang sai automático, sem cookie de idioma necessário.

Segurança

Sem painel de admin público.

Next não tem wp-login.php, xmlrpc.php, REST API exposta. Conteúdo vem do código-fonte · não tem CMS pra invadir. X-Frame-Options, HSTS, CSP declarados no next.config.ts · uma única linha cada.

Bonus: deploy via Git · cada mudança rastreável, com preview URL antes de produção.

Acessibilidade

Componentes semânticos no DNA.

Em Next, <Header>, <main>, <footer>, <nav> são padrão. <h1> hierarquizado é prática default de qualquer dev React mediano · não precisa lutar contra builder visual que renderiza tudo em <div>.

LGPD

Sem tracking default · consent management opcional.

Next + Vercel não dispara analytics até você ligar. Quando ligar, frameworks como @vercel/analytics ou Plausible operam sem cookies (server-side, anônimo). Cookie banner vira plugin de 5 linhas · não dependência crítica.

Custo operacional

Sem manutenção de plugin.

WP exige atualização semanal de plugins (CVE comum em Yoast, WP Rocket, Elementor). Cada update pode quebrar layout · cada plugin desatualizado vira backdoor. Next vive de dependências npm versionadas no package.json · CI roda em segundos, rollback é um git revert.

Iteração

Preview por branch · stakeholders veem antes de prod.

Cada PR no Next + Vercel gera URL única tipo uspix-.vercel.app · stakeholder revisa antes de mergear. No WP, mudança é direto no banco · sem staging, sem rollback granular, sem versionamento.

Posicionamento do whitelabel

Não foi cópia · foi upgrade.

O Thiago pediu uma página com a estrutura do Crypto2pay · a PSYCO entregou a mesma estrutura sobre uma stack que ganha em velocidade, segurança, acessibilidade e conformidade LGPD. Tudo isso resolvido por escolha de stack, antes mesmo de qualquer trabalho de UI.

Onde o whitelabel se posiciona pra revenda:

  • 01O USPIX já está no ar em uspix.vc · serve de referência viva pra qualquer revendedor que comparar lado a lado.
  • 02Argumento técnico de venda · 10× mais rápido, 13× mais leve, 100% acessível, sem passivo LGPD · tudo medido em produção, não estimativa.
  • 03Custo operacional evitado · sem licenças de plugin WP, sem hosting compartilhado, sem rotina de patch de segurança em wp-login.
  • 04Pra leitura rápida · a tabela da seção Performance vende sozinha. Tudo o resto desce direto dela.