From b95911f5a6623ed37c112c284ac4b6f3c4b73277 Mon Sep 17 00:00:00 2001 From: Evandro Fonseca Junior Date: Sat, 24 Oct 2026 04:52:15 -0300 Subject: [PATCH] docs(readme): redesenha o README com hero em SVG [skip ci] --- README.md | 133 ++++++++++++++++++++++++++++------------- assets/readme/hero.svg | 52 ++++++++++++++++ 2 files changed, 142 insertions(+), 43 deletions(-) create mode 100644 assets/readme/hero.svg diff --git a/README.md b/README.md index adbb2bb..6edd482 100644 --- a/README.md +++ b/README.md @@ -1,58 +1,105 @@ -# Tibia Trade - Marketplace Seguro para Itens de Tibia +
-Marketplace multi-servidor seguro e confiável para compra, venda e negociação de itens de Tibia. Sistema de escrow protege 100% das transações. +Tibia Trade: marketplace de itens de Tibia por servidor, com um anúncio em leilão, meios de pagamento aceitos e os botões Dar Lance e Intenção de compra -## 🎯 Características +![Next.js 15.5.0](https://img.shields.io/badge/Next.js-15.5.0-ffd700?style=flat-square&labelColor=0a0a0a) +![React 19.1.0](https://img.shields.io/badge/React-19.1.0-ffd700?style=flat-square&labelColor=0a0a0a) +![PostgreSQL + Redis + MongoDB](https://img.shields.io/badge/dados-PostgreSQL_%C2%B7_Redis_%C2%B7_MongoDB-ffd700?style=flat-square&labelColor=0a0a0a) +![Status: em desenvolvimento](https://img.shields.io/badge/status-em_desenvolvimento-ffd700?style=flat-square&labelColor=0a0a0a) -- **Marketplace Multi-Servidor**: Funciona com qualquer servidor de Tibia -- **Sistema Escrow Seguro**: Protege 100% das transações contra scam -- **Múltiplos Idiomas**: Português e Inglês -- **Interface Moderna**: Design responsivo e acessível -- **Core Web Vitals Otimizados**: Performance máxima para SEO +[Plano de melhorias](docs/PLANO_MELHORIAS_MARKETPLACE.md) · [Configurar o AbacatePay](ABACATEPAY_SETUP.md) · [Issues](https://git.evandro.dev.br/evandro/pagodera/issues) -## 🚀 Como Iniciar +
-```bash -# Instalar dependências -pnpm install +O catálogo de itens vem no repositório (`data/tibiawiki.db`, SQLite com dados do TibiaWiki BR). Lido com o SQLite embutido do Node 22.13+, sem instalar nada: -# Desenvolvimento -pnpm dev - -# Build para produção -pnpm build - -# Iniciar servidor de produção -pnpm start +```console +$ node --no-warnings -e "const db = new (require('node:sqlite').DatabaseSync)('data/tibiawiki.db', { readOnly: true }); const t = db.prepare(\"select name from sqlite_master where type = 'table' and name not like 'sqlite_%'\").all(); const n = t.reduce((s, { name }) => s + db.prepare('select count(*) as c from ' + name).get().c, 0); console.log(t.length + ' categorias, ' + n + ' itens'); console.table(db.prepare('select nome, lvl, voc, peso from espadas order by lvl desc limit 3').all())" +28 categorias, 2575 itens +┌─────────┬────────────────────────┬─────┬───────────┬──────┐ +│ (index) │ nome │ lvl │ voc │ peso │ +├─────────┼────────────────────────┼─────┼───────────┼──────┤ +│ 0 │ 'Grand Sanguine Blade' │ 600 │ 'Knights' │ 6000 │ +│ 1 │ 'Grand Sanguine Razor' │ 600 │ 'Knights' │ 7900 │ +│ 2 │ 'Sanguine Blade' │ 600 │ 'Knights' │ 6100 │ +└─────────┴────────────────────────┴─────┴───────────┴──────┘ ``` -## 🛠️ Tecnologias +## O que é -- **Framework**: Next.js 15 (App Router) -- **Styling**: Tailwind CSS 4 -- **UI Components**: Radix UI -- **Animações**: Motion (Framer Motion) -- **Internacionalização**: next-intl -- **Validação**: Zod -- **Typescript**: TypeScript 5 +Tibia Trade (repositório `pagodera`) é um marketplace web para comprar, vender e leiloar itens de Tibia, separado por servidor. A interface tem português e inglês (`next-intl`, `messages/pt.json` e `messages/en.json`). -## 📦 Palavras-chave SEO +| Página | O que faz | +|---|---| +| `/market` | Anúncios de venda por servidor, leilões com lances, intenções de compra ("Minhas intenções") e chat com o vendedor | +| `/market/analytics` | Impressões e cliques dos seus anúncios | +| `/library` | Catálogo de itens por categoria | +| `/apoiar` | Doação por PIX (QR code gerado pelo AbacatePay) | +| `/admin` | Cadastro de itens e categorias e gestão de planos de assinatura | +| `/precos`, `/sobre` | Ainda mostram "em construção" | -- tibia marketplace -- tibia trade -- comprar itens tibia -- vender itens tibia -- tibia escrow -- tibia gold -- tibia coins -- tc tibia -- marketplace tibia seguro +## Por que usar -## 🌐 Domínios +- **Preço no meio que o jogador usa**: cada anúncio aceita PIX, Tibia Coins, gold coins ou troca. +- **Leilão de verdade**: anúncios podem ter prazo (`auction_ends_at`) e incremento mínimo de lance; cada lance gera notificação. +- **Negociação registrada**: o comprador abre uma intenção de compra, que vira um chat em tempo real com o vendedor (Socket.IO no servidor customizado `server.ts`, mensagens no MongoDB); o vendedor marca o anúncio como vendido. -- Desenvolvimento: https://tibiatrade.evandro.dev.br -- Produção: https://tibiatrading.com (futuro) +Quando não usar: se você precisa de pagamento garantido entre comprador e vendedor. O escrow existe só no modelo de dados (status `in_escrow`, tabela `Transaction`, taxa de 2%); nenhuma rota movimenta dinheiro, e o AbacatePay só é usado para doações. Também não serve para quem quer subir algo leve: o app precisa de PostgreSQL, Redis e MongoDB. -## 📄 Licença +## Como funciona -Privado - Uso interno +1. `server.ts` sobe o Next.js 15 (App Router) e o Socket.IO no mesmo servidor HTTP. +2. As rotas em `app/api/` cuidam de autenticação (JWT com refresh, senhas com bcrypt), anúncios, lances, intenções de compra, chats, notificações, servidores, assinaturas e doações. +3. PostgreSQL guarda usuários, anúncios, lances e intenções (Prisma em `prisma/schema.prisma` e SQL puro em `lib/db/migrations/`); Redis atende autenticação, Socket.IO e controle de uso da IA; MongoDB guarda chats e mensagens. +4. O catálogo de itens sai de `data/tibiawiki.db` (com imagens em `data/images/`) e é importado por `lib/items/import-from-sqlite.ts`. +5. No admin, a análise de um item novo pode usar o Gemini (`GEMINI_API_KEY`); sem a chave, o app usa um fallback estático. + +## Início rápido + +Requisitos: Node.js 18+ (o deploy em `nixpacks.toml` usa `nodejs_18`), pnpm, e instâncias de PostgreSQL, Redis e MongoDB. Não existe `.env.example`: crie o `.env` com as variáveis abaixo. + +```bash +git clone https://git.evandro.dev.br/evandro/pagodera.git +cd pagodera +pnpm install # o postinstall roda `prisma generate` +pnpm db:migrate # aplica as migrações SQL no PostgreSQL (PG_DB) +pnpm db:seed # cadastra os servidores de Tibia +pnpm dev # tsx server.ts → http://localhost:3000 +``` + +Outros scripts: `pnpm build` (`next build --turbopack`), `pnpm start` (`NODE_ENV=production tsx server.ts`, sintaxe de shell POSIX), `pnpm lint` (Biome), `pnpm test` (`tests/run-tests.ts`), `pnpm db:test` (testa a conexão). + +## Configuração + +| Variável | Uso | +|---|---| +| `PG_DB` | Connection string do PostgreSQL para o pool `pg` e as migrações (obrigatória) | +| `DATABASE_URL_APP` | Connection string do PostgreSQL para o Prisma | +| `REDIS_DB` | Connection string do Redis (obrigatória) | +| `MONGO_URL` | Connection string do MongoDB, para chats (obrigatória) | +| `JWT_SECRET`, `JWT_REFRESH_SECRET` | Assinatura dos tokens de acesso e de refresh (obrigatórias) | +| `NEXT_PUBLIC_BASE_URL` | Origem aceita pelo Socket.IO (padrão `http://localhost:3000`) | +| `GEMINI_API_KEY` | Análise de itens no admin (opcional) | +| `ABACATE_APIKEY`, `ABACATE_TEST_APIKEY`, `ABACATEPAY_WEBHOOK_SECRET`, `ABACATEPAY_WHITELIST_IPS` | Doações por PIX e o webhook do AbacatePay (veja [`ABACATEPAY_SETUP.md`](ABACATEPAY_SETUP.md)) | +| `HOSTNAME`, `PORT` | Endereço do servidor (padrão `localhost:3000`) | + +## Estado do projeto + +Em desenvolvimento (`package.json` na versão `0.1.0`). O último commit no branch padrão (`develop`) é de 2025-11-22; o branch `wip/2026-10-20` guarda um snapshot de alterações ainda não finalizadas. O ambiente de desenvolvimento `tibiatrade.evandro.dev.br` não respondia com o app em 2026-10-24. + +O que falta: + +- Escrow e pagamento entre usuários (veja "Quando não usar"). +- O webhook de doações ainda não persiste a doação nem envia e-mail (pendências marcadas em `app/api/webhooks/abacatepay/route.ts`). +- `/precos` e `/sobre` estão em construção. +- `pnpm test` cobre só a validação dos metadados de itens (3 testes); não há CI. + +## Licença + +Sem licença publicada: todos os direitos reservados. + +
+ +Feito por Evandro Fonseca Junior · git.evandro.dev.br + +
diff --git a/assets/readme/hero.svg b/assets/readme/hero.svg new file mode 100644 index 0000000..54e2d54 --- /dev/null +++ b/assets/readme/hero.svg @@ -0,0 +1,52 @@ + + Tibia Trade + Tibia Trade é um marketplace de itens de Tibia separado por servidor. À direita, um anúncio em leilão do item Grand Sanguine Blade no servidor Antica, com os meios de pagamento aceitos (PIX, Tibia Coins, gold coins e troca) e os botões Dar Lance e Intenção de compra. + + + + + pagodera · marketplace + Tibia Trade + Compre, venda e leiloe itens de Tibia + por servidor, com chat em tempo real. + Next.js 15.5 · PostgreSQL · Socket.IO + + + + + + + Antica + + LEILÃO + + + + + + + + Grand Sanguine Blade + Espadas · nível 600 · Knights + + + + aceita + + PIX + + Tibia Coins + + gold coins + + troca + + + + + Dar Lance + + Intenção de compra + + +