← Voltar ao índice

⌚ WatchCore

Plataforma social para colecionadores de relógios — catálogo pessoal, feed social, comunidades, diário de uso, trocas e marketplace integrado.

URL: watchcore.blackcatcorp.com.br
Frontend: Next.js 14
Banco: PostgreSQL (Prisma)
Repo: vituulm/watchcore
Status: ✅ Rodando
Next.js 14 Prisma PostgreSQL JWT (jose) Tailwind CSS PWA

Especificação do Produto

Missão

Plataforma social completa para colecionadores de relógios — combina catálogo pessoal inteligente, rede social, comunidades temáticas, diário de uso, manutenção e marketplace de trocas.

Usuários-alvo

Colecionadores de relógios, entusiastas de horology, traders de peças

Infra

Systemd user service watchcore.service — Caddy → 172.18.0.1:3040

Fases implementadas (1–8)
Modelos Prisma (12 models)

User, Watch, UserWatch (coleção), WishlistItem, Post, Comment, Like, Follow, Community, CommunityMember, WatchUsageLog, MaintenanceRecord, TradeProposal, TradeMessage, TradeReview, AuditLog

Endpoints principais da API

Autenticação — /api/auth

POST/api/auth/register
Registra novo usuário. Body: { name, email, password }. Retorna JWT.
POST/api/auth/login
Login com email/senha. Retorna JWT assinado com jose.
POST/api/auth/logout
Invalida sessão (cookie HttpOnly).

Catálogo — /api/watches

GET/api/watches
Lista relógios do catálogo global com filtros por marca, modelo e faixa de preço.
GET/api/watches/:id
Detalhe do relógio com estimativa de preço heurística e colecionadores que possuem.
POST/api/watches/identify
Identifica relógio por descrição textual (stub — integração com visão IA prevista).

Coleção — /api/collection

GET/api/collection Requer JWT
Lista relógios da coleção do usuário autenticado.
POST/api/collection Requer JWT
Adiciona relógio à coleção. Body: { watch_id, purchase_price, purchase_date, condition }
DELETE/api/collection/:id Requer JWT
Remove relógio da coleção.

Feed Social — /api/feed

GET/api/feed Requer JWT
Feed personalizado de posts de usuários seguidos.
POST/api/posts Requer JWT
Cria post. Body: { content, watch_id?, image_url? }
POST/api/posts/:id/like Requer JWT
Toggle like em post.
POST/api/posts/:id/comments Requer JWT
Comenta em post. Body: { content }

Comunidades — /api/communities

GET/api/communities
Lista comunidades públicas disponíveis.
POST/api/communities Requer JWT
Cria comunidade. Body: { name, description, is_private }
POST/api/communities/:id/join Requer JWT
Entra em comunidade pública (role MEMBER).

Diário & Manutenção — /api/usage / /api/maintenance

POST/api/usage Requer JWT
Registra uso diário de relógio. Body: { user_watch_id, date, notes }
POST/api/maintenance Requer JWT
Registra manutenção. Body: { user_watch_id, type, date, cost, notes }. 12 tipos disponíveis (revisão, troca de pulseira, polimento, etc.).

Trocas/Marketplace — /api/trades

POST/api/trades Requer JWT
Cria proposta de troca/venda. Body: { target_user_id, offered_watch_id, requested_watch_id?, price? }
PATCH/api/trades/:id/accept Requer JWT
Aceita proposta (SENT → ACCEPTED).
POST/api/trades/:id/messages Requer JWT
Envia mensagem no chat 1:1 da proposta.
POST/api/trades/:id/review Requer JWT
Avaliação pós-troca (1–5★). Body: { rating, comment }

Admin — /api/admin

GET/api/admin/metrics Requer JWT (admin)
Métricas gerais: usuários, relógios, posts, trocas, comunidades.
GET/api/admin/users Requer JWT (admin)
Gestão de usuários com paginação e filtros.
GET/api/admin/audit-log Requer JWT (admin)
AuditLog de ações administrativas e moderação.

Saúde

GET/api/health
Healthcheck. Retorna status do servidor e conexão com banco.

Arquitetura de Deploy

watchcore.service (systemd user)
  └─ Next.js 14 (porta 3040)
       ↑
  Caddy Reverse Proxy → 172.18.0.1:3040
       ↑
  watchcore.blackcatcorp.com.br (HTTPS — Cloudflare + Let's Encrypt)

Gerado automaticamente — BlackCat Corp • Voltar ao índice