Blitzap - blog SEO/GEO com gerador de conteudo por IA (Next.js 16 + Prisma 7)
  • TypeScript 80.5%
  • CSS 14.9%
  • Python 4.3%
  • Dockerfile 0.2%
Encontrar um arquivo
Arquivos do repositório (último commit primeiro)
Nome de arquivo Última mensagem de commit Última data de commit
Thiago Fontoura 5d6f63a0c5 docs(readme): atualiza README com evidencia atualizada do repositorio
Substitui o README anterior por documentacao real e verificada do codigo:
stack com versoes, arquitetura, funcionalidades, como rodar e variaveis
de ambiente (apenas nomes). Preparatorio para migracao do repositorio
do GitLab (evolx.mkt) para a organizacao BLITZAP no OmniGit.
2026-10-22 20:54:57 -03:00
.claude Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
app Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
components Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
docs Seguranca, validacoes e double opt-in na newsletter 2026-03-27 18:08:16 -03:00
emails Documentacao e comentarios completos em todo o codebase 2026-03-24 16:16:16 -03:00
hooks Documentacao e comentarios completos em todo o codebase 2026-03-24 16:16:16 -03:00
lib Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
prisma Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
public Reorganizacao do admin em route groups, branding e melhorias de UI 2026-03-24 18:20:03 -03:00
types Documentacao e comentarios completos em todo o codebase 2026-03-24 16:16:16 -03:00
.dockerignore Homepage redesign, sistema de anuncios, dashboard melhorado e novas APIs 2026-03-25 13:54:39 -03:00
.env.example Homepage redesign, sistema de anuncios, dashboard melhorado e novas APIs 2026-03-25 13:54:39 -03:00
.gitignore Adiciona temp/ e *.zip ao .gitignore 2026-03-27 18:09:20 -03:00
AGENTS.md Initial commit from Create Next App 2026-03-24 13:01:34 -03:00
CLAUDE.md Seguranca, validacoes e double opt-in na newsletter 2026-03-27 18:08:16 -03:00
docker-compose.yml Homepage redesign, sistema de anuncios, dashboard melhorado e novas APIs 2026-03-25 13:54:39 -03:00
docker-entrypoint.sh Homepage redesign, sistema de anuncios, dashboard melhorado e novas APIs 2026-03-25 13:54:39 -03:00
Dockerfile Homepage redesign, sistema de anuncios, dashboard melhorado e novas APIs 2026-03-25 13:54:39 -03:00
eslint.config.mjs Initial commit from Create Next App 2026-03-24 13:01:34 -03:00
middleware.ts Reorganizacao do admin em route groups, branding e melhorias de UI 2026-03-24 18:20:03 -03:00
next.config.ts PDR completo: 10 fases de SEO e ranking em LLMs 2026-03-27 18:25:13 -03:00
package-lock.json Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
package.json Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
PDR-ATUALIZACOES.md Seguranca, validacoes e double opt-in na newsletter 2026-03-27 18:08:16 -03:00
PDR-GERADOR-IA.md Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
PDR-UX-LAYOUT.md Tema light + melhorias UX/Layout (PDR 10 fases) 2026-03-28 02:41:00 -03:00
PDR.md Gerador IA + anuncios tematizados + rotas llms.txt + melhorias UX 2026-03-28 15:13:19 -03:00
prisma.config.ts Documentacao e comentarios completos em todo o codebase 2026-03-24 16:16:16 -03:00
README.md docs(readme): atualiza README com evidencia atualizada do repositorio 2026-10-22 20:54:57 -03:00
tsconfig.json Initial commit from Create Next App 2026-03-24 13:01:34 -03:00

Blitzap Blog

Plataforma de blog headless própria (sem WordPress) para a Blitzap — SaaS de disparos em massa no WhatsApp com API Oficial.

Desenvolvida para atrair tráfego orgânico e ranquear tanto no Google quanto nas respostas de IAs generativas (ChatGPT, Perplexity, Google AI Overviews), com um gerador de conteúdo IA multi-LLM integrado e painel administrativo completo. Em produção com 82 artigos publicados.

Stack

Tecnologia Versão Uso
Next.js 16.2.1 Framework React (App Router, RSC, ISR)
React 19.2.4 UI
TypeScript 5.x Tipagem estática
Prisma 7.5 ORM com @prisma/adapter-pg
PostgreSQL 15+ Banco de dados com full-text search tsvector
NextAuth.js v5 beta Autenticação credentials + JWT
TipTap 3.x Editor rich text do admin
React Email + nodemailer — Emails transacionais (SMTP configurável no admin)
@google/genai, openai — Gateway multi-LLM (Gemini, OpenAI, Grok/xAI, DeepSeek)
sharp 0.34 Processamento de imagens (WebP, variantes)
cheerio, rss-parser, youtube-transcript — Coleta de fontes (RSS, HTML, YouTube)
CSS Modules + Custom Properties — Design system (sem Tailwind)
Docker node:20-alpine Deploy multi-stage, porta 8160

Funcionalidades

Blog público

  • Homepage com artigo destaque e grid paginado (ISR 300s)
  • Página de artigo com sumário (TOC), compartilhamento e artigos relacionados (ISR 3600s)
  • Listagens por categoria, tag e autor com paginação
  • Busca full-text PostgreSQL (plainto_tsquery + ts_rank + ts_headline) com highlights
  • Glossário com páginas de definição (/glossario/[slug]) e página institucional /sobre
  • Comentários aninhados (1 nível) com honeypot anti-spam e moderação
  • Newsletter com double opt-in, múltiplos pontos de captura e exit-intent popup
  • Design responsivo dark theme

SEO e GEO (otimização para LLMs)

  • 24 modelos Prisma (prefixo blog_), incluindo topic clusters, citações verificáveis, definições e interlinking NLP
  • Full-text search com índice GIN e dicionário pg_catalog.portuguese (pesos A/B/C)
  • 9 schemas JSON-LD: BlogPosting, FAQPage, BreadcrumbList, WebSite, Organization, HowTo, DefinedTermSet, Person, Speakable
  • robots.ts permitindo AI crawlers (GPTBot, ClaudeBot, PerplexityBot etc.)
  • llm.txt e llms-full.txt para consumo direto por grandes modelos de linguagem
  • Sitemap dinâmico via Prisma com imagens incluídas
  • OG image dinâmica (1200x630) via /api/og
  • Topic clusters, glossário/definition pages, interlinking assistido por NLP, citações verificáveis e sinais E-E-A-T

Gerador de conteúdo IA multi-LLM

  • Gateway de LLMs em lib/llm/ com providers Gemini e OpenAI-compatível (OpenAI, Grok/xAI, DeepSeek)
  • Catálogo de modelos com custo por token (gemini-2.5-flash/pro, gpt-4o, grok-3, deepseek-chat e outros) e cost tracker com orçamento mensal (BlogLLMUsage)
  • Pipeline completo: Fontes (RSS, YouTube, HTML scraper via cheerio) → Ideias → Geração (streaming SSE) → Revisão
  • Endpoints CRON protegidos por CRON_SECRET: /api/cron/sync-sources, /api/cron/generate-ideas, /api/cron/auto-generate

Painel admin (/admin)

  • Dashboard com estatísticas reais do banco
  • Artigos: listagem, editor TipTap com toolbar completa, painel SEO lateral e wizard de geração via IA (/admin/artigos/gerar)
  • CRUD de categorias, tags e autores
  • Moderação de comentários (Pendente/Aprovado/Rejeitado/Spam)
  • Newsletter (subscribers, export CSV), mídia (upload + sharp), anúncios
  • Dashboards de analytics (GA4, top artigos, views internos via BlogPageView) e SEO (score por artigo)
  • Gestão de ideias, fontes e configurações de IA

Emails, analytics e performance

  • Emails transacionais com React Email + nodemailer (SMTP configurável no admin): ConfirmSubscription, WelcomeEmail, NewArticleNotification
  • Tracking: GA4, GTM, Microsoft Clarity, Meta Pixel, Google Search Console + analytics interno (BlogPageView com scroll depth e time on page)
  • Server Components por padrão, ISR em todas as páginas públicas, imagens WebP com variantes e blur placeholder, standalone output para Docker

Estrutura

blitzap-blog/
├── app/
│   ├── (blog)/                # Páginas públicas (ISR)
│   │   ├── [slug]/            # Artigo (ISR 3600s)
│   │   ├── categoria/ tag/ autor/ busca/
│   │   ├── glossario/[slug]/  # Definition pages
│   │   └── sobre/
│   ├── admin/
│   │   ├── (auth)/            # Login
│   │   └── (dashboard)/       # artigos (inclui gerar/), categorias, tags, autores,
│   │                          # comentarios, newsletter, midia, anuncios, analytics,
│   │                          # seo, ideias, fontes, configuracoes
│   ├── api/
│   │   ├── articles/ categories/ tags/ authors/ comments/ newsletter/
│   │   ├── search/ upload/ media/ revalidate/ analytics/ og/ settings/
│   │   ├── ai/                # config, generate-article (SSE), generate-field, generate-image, usage
│   │   ├── ideas/             # CRUD de ideias + geração por ideia
│   │   ├── cron/              # sync-sources, generate-ideas, auto-generate
│   │   └── auth/              # NextAuth
│   ├── llm.txt/ llms.txt/ llms-full.txt/   # Rotas de conteúdo para LLMs
│   ├── robots.ts              # Robots com AI crawlers
│   └── sitemap.ts             # Sitemap dinâmico com imagens
├── components/                # admin/, blog/, seo/, newsletter/, comments/, ui/ ...
├── lib/
│   ├── llm/                   # gateway, providers/, models, cost-tracker, crypto
│   ├── prisma.ts auth.ts search.ts seo.ts seo-score.ts upload.ts newsletter.ts
│   ├── interlinking.ts topic-clusters.ts citations.ts eeat.ts speakable.ts
│   └── llm-txt.ts llms-full.ts sitemap-images.ts stopwords-pt.ts
├── emails/                    # Templates React Email
├── prisma/                    # schema.prisma (24 modelos blog_), seed.ts, migrations/
├── docs/                      # ARQUITETURA.md, API.md
├── Dockerfile                 # Multi-stage node:20-alpine
├── docker-entrypoint.sh       # prisma migrate deploy + start na porta 8160
└── middleware.ts              # Proteção de rotas /admin

~228 arquivos TypeScript/TSX.

Como rodar

Desenvolvimento

npm install
cp .env.example .env.local        # preencher com as credenciais locais
npx prisma generate
npx prisma migrate dev
npx prisma db seed                # admin, categorias, tags e configurações iniciais
npm run dev                       # http://localhost:3000

Docker (produção)

docker build -t blitzap-blog .

docker run -p 8160:8160 \
  -e DATABASE_URL="postgres://..." \
  -e NEXTAUTH_SECRET="..." \
  -e NEXTAUTH_URL="https://blog.blitzap.com.br" \
  blitzap-blog

O docker-entrypoint.sh executa prisma migrate deploy automaticamente antes de iniciar o servidor Next.js na porta 8160.

Não inclua valores de segredos em commits, issues ou PRs. Todos os exemplos acima são placeholders.

Variáveis de ambiente

Lista completa em .env.example (apenas nomes — nunca versionar valores):

Variável Descrição
DATABASE_URL Connection string PostgreSQL
NEXTAUTH_SECRET Secret do JWT (mín. 32 caracteres)
NEXTAUTH_URL URL base da aplicação
NEXT_PUBLIC_SITE_URL URL pública do blog
NEXT_PUBLIC_LP_URL URL da landing page Blitzap
CRON_SECRET Secret dos endpoints /api/cron/*
REVALIDATION_SECRET Secret da revalidação ISR on-demand
GEMINI_API_KEY Chave do provider Gemini
RESEND_API_KEY Chave do Resend (envio de emails)
EMAIL_FROM Remetente dos emails transacionais
NEXT_PUBLIC_GA_ID Google Analytics 4
NEXT_PUBLIC_GTM_ID Google Tag Manager
NEXT_PUBLIC_CLARITY_ID Microsoft Clarity
NEXT_PUBLIC_META_PIXEL_ID Meta/Facebook Pixel
NEXT_PUBLIC_GSC_VERIFICATION Google Search Console
UPLOAD_DIR Diretório de uploads de mídia
ADMIN_EMAIL / ADMIN_PASSWORD Credenciais do admin inicial (seed)

Chaves de providers LLM adicionais (OpenAI, Grok/xAI, DeepSeek) e o SMTP de emails são configurados pelo painel admin (armazenamento criptografado).

Documentação

Origem do repositório

Este repositório foi migrado do GitLab (gitlab.com/evolx.mkt/blitzap-blog) para o OmniGit em 22/10/2026, com o histórico completo de commits preservado.


© EVOLX / Blitzap. Todos os direitos reservados.