teqo/next.config.mjs
Francisco Solla 30c26aed1b
Some checks failed
CI (PR) / lint (pull_request) Successful in 40s
CI (PR) / docs-guards (pull_request) Successful in 8s
CI (PR) / plans-only-closes (pull_request) Successful in 7s
CI (PR) / format (pull_request) Successful in 51s
CI (PR) / e2e (1) (pull_request) Failing after 25s
CI (PR) / build (pull_request) Failing after 1m32s
CI (PR) / int (pull_request) Failing after 1m46s
CI (PR) / cycles (pull_request) Successful in 36s
CI (PR) / typecheck (pull_request) Successful in 33s
CI (PR) / knip (pull_request) Successful in 38s
CI (PR) / unit (pull_request) Successful in 57s
Agent pool supervisor / tick (pull_request) Has been skipped
Main merge flips claimed issues to done + in-prod / issue-done (pull_request) Has been skipped
Promote plan-issue Related on main merge / plan-issue-ready (pull_request) Has been skipped
PR Ready + auto-merge / ready-automerge (pull_request) Failing after 11s
CI (PR) / scope (pull_request) Successful in 29s
CI (PR) / e2e (2) (pull_request) Successful in 5m58s
CI (PR) / checks (pull_request) Failing after 2s
feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube
Board "Acompanhe de perto" (S1) ganha o feed automático do canal oficial:
global SocialFeedSettings (admin-only, kill switch + toggle + maxItems +
exclusões por item), loader src/utilities/youtubeFeed.ts (Data API v3
search→statistics, unstable_cache tag social-feed + revalidate 300,
fail-closed com snapshot persistido via SQL direto — revalidateTag dentro
de unstable_cache lança no Next 15.4), card generalizado
(CampaignArticleCard → CampaignContentCard, external com noopener) e merge
por recência com o grande = mais recente elegível. Stub HTTP do YouTube no
webServer do Playwright (porta dev+1000) + 4 e2e novos no describe serial.
Migration 20260818_111748_add_social_feed_settings (não destrutiva).
Closes #18
2026-08-18 13:28:54 -03:00

22 lines
922 B
JavaScript

import { withPayload } from '@payloadcms/next/withPayload'
/** @type {import('next').NextConfig} */
const allowedImageHost = process.env.NEXT_PUBLIC_SITE_URL || 'https://jorgesolla.com.br'
const nextConfig = {
distDir: process.env.NEXT_DIST_DIR || '.next',
...(process.env.NEXT_OUTPUT_STANDALONE === '1' ? { output: 'standalone' } : {}),
images: {
remotePatterns: [
new URL(`${allowedImageHost}/**`),
// YouTube video thumbnails (campaign home content board, S2) come from
// the platform's CDN — see `src/utilities/youtubeFeed.ts`.
new URL('https://i.ytimg.com/**'),
// e2e-only: the YouTube stub (tests/e2e/youtube-stub.mjs) serves the
// fixture thumbnails locally so specs never touch the real network.
{ protocol: 'http', hostname: 'localhost', pathname: '/thumbs/**' },
],
},
}
export default withPayload(nextConfig, { devBundleServerPackages: false })