Aplicativo Web

coffe to relax

Uma cafeteria digital para focar com calma

Ambiente de foco no navegador com dez sons relaxantes gerados ao vivo, até quatro players tocando juntos (YouTube, Spotify, links e arquivos de áudio) e modo noite. Sem conta e sem rastreamento.

ver detalhes técnicos
Tela principal: canais de áudio, biblioteca e Mesa de Ambiente

O desafio

Quem trabalha ou estuda com som de fundo acaba com várias abas abertas: uma para chuva, outra para música, outra para o audiobook. E muitos desses sites exigem conta, mostram anúncios ou rastreiam o visitante.

O que foi feito

  • Mesa de Ambiente com dez sons (chuva, trovão, mar, lareira, cafeteria e outros), cada um com volume próprio, mais cinco combinações prontas
  • Até quatro canais tocando ao mesmo tempo, com YouTube, playlists, Spotify, links de áudio e arquivos do computador
  • Retomada de onde parou em áudios longos, velocidade ajustável e biblioteca de links salva no próprio navegador
  • Modo noite, teclado de notas musicais e sons de clique pensados para não cansar
  • Privacidade por padrão: nada é salvo antes do consentimento, sem analytics e com botão para apagar tudo
  • Documentação, FAQ, página de status e formulário de contato

Resultado

O site está no ar em coffe.lotmhub.com.br, com código aberto no GitHub. Funciona sem conta e sem banco de dados: tudo o que o usuário guarda fica no próprio navegador.

Telas do projeto

Mesa de Ambiente com a mistura "Tempestade lá fora" ligada
Mesa de Ambiente com a mistura "Tempestade lá fora" ligada
Modo noite, com paleta escura e quente
Modo noite, com paleta escura e quente
Documentação com busca, explicando cada som
Documentação com busca, explicando cada som
Tela de entrada: um toque libera o áudio
Tela de entrada: um toque libera o áudio
Canais de áudio em uma coluna no celular
Canais de áudio em uma coluna no celular
Mistura "Café da tarde" na Mesa de Ambiente
Mistura "Café da tarde" na Mesa de Ambiente

// por dentro

Como foi construído

O coffe to relax é um app Next.js 16 (App Router) quase todo client-side, sem banco de dados. Os dez sons ambientes não são arquivos: são sintetizados em tempo real por um motor próprio sobre a Web Audio API, com buffers de ruído branco e marrom, filtros biquad, reverb por convolução e compressor no master. Os players de mídia integram a IFrame Player API do YouTube (via youtube-nocookie.com), o embed oficial do Spotify, HTMLAudioElement para links diretos e Object URLs para arquivos locais. O estado do usuário vai para o localStorage por meio de uma camada que só grava depois do consentimento. O servidor cuida da documentação em MDX (Fumadocs), do formulário de contato com Server Action e de rotas de SEO.

Front-end
Next.js 16.3React 19.2TypeScript 5Tailwind CSS 4shadcn/ui sobre Radix UIMotionlucide-react
Áudio e mídia
Web Audio API (motor próprio, 769 linhas)YouTube IFrame Player APIembed do SpotifyoEmbed do YouTube e do Spotify
Back-end
Server Actions do NextRoute Handlers (/api/status, /api/search)e-mail pela API REST do Resend
Documentação
Fumadocs (core, mdx e ui 16) com busca indexada no build
Infra e SEO
Vercel com redirect 301 do domínio antigo para coffe.lotmhub.com.brMetadata APIJSON-LDsitemaprobotsllms.txtmanifest e imagens OG geradas com next/og

Arquitetura

Som sintetizado, não baixado

Um AudioEngine próprio cria dois barramentos (interface e ambiente) que passam por reverb de convolução e um DynamicsCompressor antes da saída. Cada camada é ruído branco ou marrom gerado em buffer e moldado com filtros biquad e osciladores, então não há arquivo de áudio, requisição, CORS nem licença.

Segurança

Consentimento aplicado no armazenamento

Toda leitura e escrita de preferência passa por uma camada sobre o localStorage que fica bloqueada até o usuário aceitar. O único registro gravado antes disso é a própria escolha, versionada para o banner reaparecer quando o texto mudar, e 'apagar meus dados' limpa também as chaves de versões antigas.

Segurança

Privacidade por construção

Não há analytics nem pixels, as fontes são servidas pelo próprio domínio, o YouTube toca por youtube-nocookie.com e o player do Spotify só carrega quando um item do Spotify entra num canal. Arquivos locais tocam por URL.createObjectURL e nunca saem do navegador.

Segurança

Formulário de contato sem banco e com anti-spam

A Server Action valida tipo, tamanho e formato no servidor, usa honeypot e tempo mínimo de preenchimento de 3 s, e limita a 3 envios por IP a cada 10 minutos em memória. O HTML do e-mail escapa toda entrada, e o envio usa fetch direto na API do Resend, sem SDK.

Arquitetura

Players heterogêneos com uma interface só

Um parser reconhece vídeo e playlist do YouTube, os tipos do Spotify, links de áudio e arquivos locais, e cada canal escolhe a engine correspondente. Volume, velocidade de 0,75x a 2x e repetição são por canal, e itens de 10 minutos ou mais guardam a posição para retomar depois.

SEO

Dois layouts raiz e SEO completo

O site e a documentação Fumadocs usam layouts raiz separados com globalNotFound do Next para a 404. A busca da documentação é indexada no build, /api/status responde sem cache com versão e commit, e o site expõe JSON-LD WebApplication e WebSite, sitemap, llms.txt e imagens OG geradas no build.

Quer um projeto como este?

Conte o que você precisa e receba uma proposta sem compromisso.

Pedir orçamento