Pular para o conteúdo
Marcelo Santos
Todos os projetos
Produto próprio2025—2026

Stream Trophy

SaaS de vitrine de troféus da PlayStation Network

Meu papel
Produto, design e engenharia — sozinho
Stack
Next.js 16React 19TypeScriptDrizzle ORMPostgreSQLAuth.jsStripeRedisResendTailwind v4
Abrir o projeto

O problema

Jogadores de PlayStation não têm uma forma bonita e pública de mostrar a própria coleção de troféus — o perfil nativo da Sony é fechado e feio de compartilhar. A API da PSN, por sua vez, não é pública: exige o cookie de uma conta autenticada, que jamais pode vazar para o navegador.

As decisões

  1. 01

    Um app só, backend nas Route Handlers

    Sem serviço separado: as Route Handlers do App Router fazem o papel de backend. O token da conta de serviço vive apenas no servidor e nunca é enviado ao cliente — o browser só conversa com a minha API, nunca com a Sony.

  2. 02

    Cache antes de escalar

    Cada perfil é cacheado por 60 minutos no Redis, e o botão de forçar atualização tem rate limit de 1 chamada a cada 15 minutos por IP. Isso mantém o consumo da API de origem previsível mesmo se um perfil viralizar.

  3. 03

    Assinatura de verdade, não um botão falso

    Stripe para planos e cobrança recorrente, Auth.js com adapter Drizzle para sessão, Postgres para estado e Resend com React Email para os transacionais. É o ciclo completo de um SaaS, não um protótipo.

  4. 04

    Falhar de forma legível

    Perfil inexistente, perfil privado e API fora do ar são três problemas diferentes e recebem três telas diferentes (404, 403, 503). O usuário sempre sabe se o erro é dele ou meu.

O resultado

  • Produto no ar em domínio próprio, com assinatura ativa.
  • Galeria responsiva de 1 a 5 colunas com destaque visual para platinas e 100%.
  • Dark mode com paleta PlayStation e skeleton screens durante o carregamento.
  • Nenhuma credencial de terceiro exposta ao cliente.