Hydrogen
Commerce primitives for you and your coding agents. Add cart, products, money, and accounts to the framework you already use.
Encontre e compre as fotos do seu evento: corridas, festas, formaturas e esportes.
Translation pending
CommerceTypeScript · PythonGitHub @gamaral203OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Marketplace onde fotógrafos vendem fotos e vídeos de eventos e clientes encontram os seus por selfie ou número de peito e compram os originais. Pagamento por Pix e cartão, dados hospedados no Brasil. O projeto está na Parte A: o produto inteiro sendo construído com dados de exemplo, atrás de uma camada de dados (src/dados/). As integrações (banco, login real, R2, processamento no servidor, reconhecimento facial e numérico, gateway de pagamento, e-mail e WhatsApp) ficam para a Parte B, quando formos testar com fotos reais. Na troca, só a camada de dados muda; as telas continuam iguais.Read the full README ↗
Marketplace onde fotógrafos vendem fotos e vídeos de eventos e clientes encontram os seus por selfie ou número de peito e compram os originais. Pagamento por Pix e cartão, dados hospedados no Brasil.
O projeto está na Parte A: o produto inteiro sendo construído com dados de exemplo, atrás de uma camada de dados (src/dados/). As integrações (banco, login real, R2, processamento no servidor, reconhecimento facial e numérico, gateway de pagamento, e-mail e WhatsApp) ficam para a Parte B, quando formos testar com fotos reais. Na troca, só a camada de dados muda; as telas continuam iguais.
O que já funciona:
REKOGNITION_*; rostos de exemplo sem elas)/admin) para gestores: entradas, saídas, receita, vendas, saques e usuários com troca de papelO andamento completo, fase por fase, está em docs/tarefas.md.
Contas de exemplo (senha clicouai123): [email protected] (cliente), [email protected] e [email protected] (fotógrafos) e [email protected] (gestor); todas só fora da produção; lá a equipe entra pelas contas de GESTORES (ver .env.example). Sem DATABASE_URL, fora da produção, o app usa o PGlite: um Postgres em memória, com as mesmas migrações e esses dados de exemplo, recriado a cada início do servidor. Com DATABASE_URL ou POSTGRES_URL (Supabase), os dados ficam no banco; npm run db:migrar aplica as migrações e grava os exemplos num banco vazio, sem as contas com a senha de exemplo, que só existem no PGlite (na produção, só as categorias; ver deploy.md). A dica dessas contas em /entrar só aparece no PGlite e nunca na produção.
Requisitos: Node.js 20.9 ou mais novo e npm.
npm install
npm run dev
Abra http://localhost:3000. Não há banco para configurar na Parte A.
Mercado Pago (opcional): sem credenciais, o pagamento e o saque são simulados. Para testar com o Mercado Pago, copie .env.example para .env.local e preencha as credenciais de teste da aplicação. Com elas:
localhost mesmo sem o webhook;ngrok http 3000) e cadastre https://<túnel>/api/webhooks/mercadopago no evento "Order (Mercado Pago)".Login com Google e reconhecimento facial (opcionais): também no .env.local. Com GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET e APP_URL, aparece o botão "Continuar com Google" (URI de redirecionamento no Google Cloud: {APP_URL}/api/auth/google/callback); e-mails em ADMIN_EMAILS entram como gestores. Com REKOGNITION_REGIAO, REKOGNITION_ACCESS_KEY_ID e REKOGNITION_SECRET_ACCESS_KEY, a busca por selfie usa o Amazon Rekognition (não use os nomes AWS_*, que a Vercel reserva). Detalhes em .env.example.
| Comando | O que faz |
|---|---|
npm run dev | Servidor de desenvolvimento |
npm run build | Build de produção (também confere os tipos) |
npm run start | Sobe o build de produção |
npm run lint | ESLint |
npm run test | Testes (Vitest) das regras de dinheiro e da validação |
npm run typecheck | Gera os tipos de rota do Next e confere os tipos |
npm run format | Formata o código com Prettier |
npm run format:check | Confere a formatação sem alterar arquivos |
npm run exemplos:gerar | Baixa 24 fotos do picsum.photos e gera as prévias e miniaturas de exemplo, com marca d'água, em public/exemplo/ |
As imagens de exemplo já estão no repositório; só é preciso rodar exemplos:gerar de novo se a marca d'água mudar.
Ficam em src/dados/exemplo/: 3 fotógrafos, 5 categorias, 10 eventos e 780 fotos, além de pastas, colaborador, números de peito, cupons, faixas de desconto, pacotes e uma loja. Cada evento exercita uma regra: não listado, com senha (senha de exemplo formatura2026), liberação agendada no passado e no futuro, liberação manual e rascunho. Há também uma foto excluída, uma em processamento e uma com preço individual. As telas nunca importam esses arquivos direto: tudo passa por src/dados/index.ts, que tem as mesmas assinaturas que a implementação com o banco terá e concentra as regras de quem vê o quê.
Next.js 16 (App Router, Cache Components) + TypeScript, Tailwind CSS 4 + shadcn/ui (Base UI), Zod, Sharp e Mercado Pago (Orders e Payouts). Na Parte B entram PostgreSQL com Drizzle, Cloudflare R2, FFmpeg (worker de vídeo), reconhecimento facial e numérico, Inngest, Better Auth, Resend e a API oficial do WhatsApp. Detalhes e motivos em docs/arquitetura.md.
src/
app/
(publico)/ # página inicial, eventos, página do evento, página da foto
components/
galeria/ # cartão de evento, grade de fotos
site/ # cabeçalho e rodapé
ui/ # componentes do shadcn/ui
dados/ # camada de dados usada pelas telas
exemplo/ # implementação com dados de exemplo (Parte A)
lib/ # formatação, validação com Zod, utilitários
servicos/
imagens.ts # prévia e miniatura com marca d'água (Sharp)
scripts/
gerar-exemplos.ts # gera as imagens de exemplo
public/exemplo/ # prévias e miniaturas de exemplo
docs/ # arquitetura, riscos, tarefas, marca, skills
.claude/skills/ # skills do Claude Code usadas no projeto
A estrutura completa planejada, com cliente, painel do fotógrafo, admin, loja própria e API, está em docs/arquitetura.md.
feat(galeria): cria a página da foto. Um commit por mudança lógica.[x] em docs/tarefas.md no mesmo commit.npm run lint, npm run test, npm run format:check e npm run build sem erros.CLAUDE.md da raiz importa o docs/CLAUDE.md.