Ryan Salazar 9c5b0e4959 wire real ad rotation: Blackmagic 300x600 fixed + rotating 300x250s
Replace the placeholder Unsplash banner array with the live AdSanity
inventory served from /legacy/ads/ (same 27 active creatives currently
on broadcastbeat.com).

New:
- src/lib/ads.ts: ad inventory (1 fixed Blackmagic 300x600, 22 rotating
  300x250s, 4 leaderboard 728x90s) + Fisher-Yates shuffle + pickAds()
  helper that draws N unique ads excluding any caller-supplied src set.
- src/components/AdImage.tsx: renders one ad as <a target=_blank rel=
  sponsored noopener noreferrer><AppImage>.
- src/components/SidebarAdStack.tsx: Blackmagic 300x600 fixed on top,
  then count rotating 300x250s. Memoizes the rotation per render so a
  refresh re-shuffles. Accepts excludeSrcs to coordinate with other
  slots on the same page.
- src/components/ArticleBody.tsx: splits article HTML at </p>
  boundaries, splices a 300x250 ad after every Nth paragraph (default
  4). Same exclude-set pattern.

Wiring:
- ArticleFeed.tsx: remove the inline sidebarAds array (was 5 Unsplash
  placeholders + 1 LiveU 300x250). Sidebar now <SidebarAdStack count=5/>.
- NewsArticleDetailClient.tsx: sidebar 300x600 + 300x250 AdSlot
  placeholders replaced with <SidebarAdStack count=4/>. Article body
  innerHTML replaced with <ArticleBody html=... everyN=4/> so
  300x250 ads slot in between paragraphs.

Same banners as the live broadcastbeat.com (sourced from the existing
WP AdSanity install we cached locally during Phase 2). Each <a> opens
in a new tab and uses rel='sponsored noopener noreferrer'.
2026-05-08 18:16:07 +00:00

Next.js

A modern Next.js 15 application built with TypeScript and Tailwind CSS.

🚀 Features

  • Next.js 15 - Latest version with improved performance and features
  • React 19 - Latest React version with enhanced capabilities
  • Tailwind CSS - Utility-first CSS framework for rapid UI development

🛠️ Installation

  1. Install dependencies:
npm install
# or
yarn install
  1. Start the development server:
npm run dev
# or
yarn dev
  1. Open http://localhost:4028 with your browser to see the result.

📁 Project Structure

nextjs/
├── public/             # Static assets
├── src/
│   ├── app/            # App router components
│   │   ├── layout.tsx  # Root layout component
│   │   └── page.tsx    # Main page component
│   ├── components/     # Reusable UI components
│   ├── styles/         # Global styles and Tailwind configuration
├── next.config.mjs     # Next.js configuration
├── package.json        # Project dependencies and scripts
├── postcss.config.js   # PostCSS configuration
└── tailwind.config.js  # Tailwind CSS configuration

🧩 Page Editing

You can start editing the page by modifying src/app/page.tsx. The page auto-updates as you edit the file.

🎨 Styling

This project uses Tailwind CSS for styling with the following features:

  • Utility-first approach for rapid development
  • Custom theme configuration
  • Responsive design utilities
  • PostCSS and Autoprefixer integration

📦 Available Scripts

  • npm run dev - Start development server on port 4028
  • npm run build - Build the application for production
  • npm run start - Start the development server
  • npm run serve - Start the production server
  • npm run lint - Run ESLint to check code quality
  • npm run lint:fix - Fix ESLint issues automatically
  • npm run format - Format code with Prettier

📱 Deployment

Build the application for production:

npm run build

📚 Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

🙏 Acknowledgments

  • Built with Rocket.new
  • Powered by Next.js and React
  • Styled with Tailwind CSS

Built with ❤️ on Rocket.new

Description
AV Beat — Next.js + Supabase (cloned from broadcastbeat 2026-06-01)
Readme 207 MiB
Languages
TypeScript 93.7%
PLpgSQL 4.4%
CSS 1.6%
JavaScript 0.3%