Commit Graph

7 Commits

Author SHA1 Message Date
dfa0180514 Fix: Restore DATABASE_URL in schema.prisma
Prisma 7 ainda precisa de url = env("DATABASE_URL") no datasource
Sem prisma.config.ts, a URL vem do schema + .env

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 18:20:13 +00:00
c92fcb5990 Fix: Remove prisma.config.ts incompatível com Prisma 7
Erro de build: '@prisma/client/generator-helper' não existe
Solução: Prisma 7 não precisa de prisma.config.ts
DATABASE_URL vem do .env (ambiente)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 18:19:59 +00:00
837e72ec40 Phase 5: Docker e Deploy Config
- Dockerfile multi-stage:
  * Build com pnpm + Prisma generate
  * Production com Node.js 22 alpine
  * Non-root user (nextjs:nodejs)
  * Standalone output

- next.config.ts: output standalone
- .dockerignore: excludes node_modules, .env, .next, etc

Ready para deploy EasyPanel com:
- Port 3000
- ENV: DATABASE_URL, NODE_ENV=production
- Build: Nixpacks ou Dockerfile

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 18:02:14 +00:00
5c34372d42 Phase 4: Páginas Dashboard
- Layout completo com Brand Descomplicar:
  * Header: logo dourado, sticky, shadow-sm
  * Footer: copyright Descomplicar®
  * Fonts: Inter (body), Montserrat (display)
  * Metadata PT-PT

- DashboardView component (client):
  * Fetch sites via /api/sites
  * Site selector dropdown
  * Fetch metrics via /api/metrics/[siteId]?period=30d
  * 4 KPI cards: visitors, sessions, engagement, pageViews
  * Chart área: tráfego diário (30d)
  * Chart pie: fontes de tráfego (top 10)
  * Tabela: Top 20 queries GSC (clicks, impressions, CTR, position)
  * Loading states em todos componentes
  * Error handling com mensagens PT-PT
  * Responsive: mobile/tablet/desktop

- Home page: render DashboardView

Features:
- Auto-select primeiro site na lista
- Comparação período anterior (% change)
- Formatação PT-PT (números, datas, percentagens)
- Brand colors (#cc8d00, #27a50e)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 18:01:37 +00:00
ff25811725 Phase 3: Componentes UI
- Inicializado shadcn/ui (New York style, RSC enabled)
- Instalados 8 componentes base: button, card, dropdown-menu, select, dialog, tabs, tooltip, badge
- Criados componentes dashboard custom:

MetricCard:
- KPI display com icon, value, change %
- Auto-detect trend (up/down/neutral)
- Loading e empty states
- Brand Descomplicar colors

ChartCard:
- Suporte line, area, pie charts (Recharts)
- Formatação PT-PT
- Custom tooltip styling
- Loading e empty states
- Brand gradient (#cc8d00)

SiteSelector:
- Dropdown multi-site
- Loading state
- Empty state handling

Todos componentes:
- Responsive design
- Brand Descomplicar (#cc8d00, #f2d9a2, #27a50e)
- Formatação PT-PT (formatNumber, formatPercent)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 18:00:02 +00:00
b99baa1200 Phase 2: Database e API Layer
- Configurado Prisma 7 com multiSchema para staging database
- Models: Site, GA4DailyTraffic, GA4TrafficSources, GSCSearchPerformance
- Created lib utilities (prisma.ts, utils.ts) com formatação PT-PT
- API routes implementadas:
  * GET /api/sites - lista sites activos
  * GET /api/metrics/[siteId]?period=30d - métricas agregadas + charts
  * GET /api/health - health check com conexão DB

Métricas incluem:
- KPIs: visitors, sessions, pageViews, newUsers com % change
- Charts: dailyTraffic, trafficSources, topQueries (GSC)
- Comparação período anterior para trends

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 17:56:56 +00:00
01353cef36 Initial commit: Next.js 15.5 + Tailwind 4 + Brand Descomplicar
- Scaffold Next.js com App Router e TypeScript
- Configurado Tailwind CSS 4 com Brand Descomplicar (cores, tipografia, spacing)
- Instaladas dependências core: Prisma, Recharts, Radix UI, etc
- Sistema espaçamento 8pt (xs=4px, sm=8px, md=16px, lg=24px, xl=32px, 2xl=48px)

Cores brand:
- Dourado: #cc8d00 (primária)
- Bege: #f2d9a2 (secundária)
- Verde: #27a50e (sucesso)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-13 17:54:14 +00:00