← Todos os projetos
FrontendPódio

BON — Botinho Online Network

Rede social estilo messenger: GraphQL, AeroCoins, missões, PWA e stack Swarm dedicada.

BON — Botinho Online Network (AERO)

Rede social production no estilo messenger MSN/Frutiger: missões, AeroCoins, feed, carteira e painel admin — monorepo aero-glow-social.

Para que serve

Plataforma social própria com identidade visual Aero Glow, economia interna (AeroCoins / AC), gamificação por missões e experiência PWA instalável.

URLPapel
aero.botingnonlab.com.brWeb / PWA
aero-api.botingnonlab.com.brGraphQL HTTP + WS
s3.botingnonlab.com.brMinIO — assets Frutiger

1. Infraestrutura

Stack Docker Swarm dedicada aero (deploy/stack.yml):

ServiçoImagem / runtimeRede
postgresPostgreSQL 16aero_net (overlay)
redisRedis 7 AOFaero_net
minioS3-compatibleaero_net + botinho_traefik-net
apiNode 22 + entrypointoverlay + Traefik
webVite dev server :5173overlay + Traefik

Overlay networks:

  • aero_net — isolamento interno (API ↔ Postgres ↔ Redis ↔ MinIO)
  • botinho_traefik-net — TLS Let's Encrypt via Traefik do homelab

Deploy: ./deploy/up.sh — gera stack.env, sobe stack, corre migrations na API.

Volumes: node_modules em volumes Docker (sem npm ci no host em produção).


2. Backend (API GraphQL)

Monorepo workspace @aero/apiClean Architecture:

  • Domain — entidades, sanitização de conteúdo
  • Application — use cases (LoginUser, RegisterUser, AdjustWalletBalance, …)
  • Infrastructure — Drizzle ORM, Redis pub/sub, S3, SMTP, JWT
  • Interfaces — GraphQL Yoga + graphql-ws (subscriptions)

API pública

POST https://aero-api.botingnonlab.com.br/graphql
WS   wss://aero-api.botingnonlab.com.br/graphql

Mutations principais: login, register, createPost, claimMission, adjustWalletBalance
Queries: feed, missions, myTransactions, perfil
Realtime: canal Redis aero:feed → subscriptions GraphQL

Dados & auth

  • PostgreSQL + Drizzle migrations (npm run db:migrate)
  • Redis — sessões, pub/sub feed
  • JWT cookie aero_access + refresh
  • Admin — TOTP (X-Admin-TOTP), e-mails em ADMIN_EMAILS
  • S3/MinIO — avatares, ícones Frutiger, notificações MSN-style

E-mail transacional (SMTP)

Nodemailer + templates HTML estilo Frutiger Aero (boas-vindas, reset de senha):

CampoValor
SMTPTitan (smtp.titan.email:465)
Remetentecontato@botinhodominios.siteBON - Aero network
Ícones no e-mailEMAIL_ICONS_BASE_URL → MinIO /icons/frutiger/brand.ico

Upload de ícones: npm run icons:upload-s3 -w @aero/api (define policy pública no bucket aero-assets).


3. Bots & integrações

  • Feed pub/sub para notificações em tempo real (estilo messenger)
  • Upload de ícones/assets via scripts (icons:upload-s3)
  • Integração futura com homelab (mesma overlay botinho_traefik-net)

4. Frontend (Web + PWA)

Workspace @aero/web:

  • React 19 + TanStack Router + TanStack Query
  • Tailwind v4 + design system Aero (GlassCard, AeroButton, AeroPill)
  • PWA — service worker, instalável no Chrome/Edge
  • Radix UI — componentes acessíveis
  • Tema Frutiger / MSN nostalgia

Desktop: apps/desktop — shell Electron só para dev da equipa; utilizadores usam PWA.

Economia

  • AeroCoins (AC) — moeda virtual, carteira e histórico de transações
  • Missões — gamificação; claimMission credita AC

Stack técnica resumida

CamadaTech
APITypeScript, GraphQL Yoga, Drizzle, Vitest
WebVite, React 19, TanStack
DadosPostgreSQL, Redis
StorageMinIO (S3 API)
InfraDocker Swarm, Traefik, overlay networks
Repoaero-glow-social (npm workspaces)