Generate a Next.js 14 (App Router) application using React, TypeScript, and Tailwind CSS for a project called "BMad DiCaster".
The application's purpose is to display daily summaries of Hacker News posts, including an optional AI-generated podcast.
**1. Overall Project Context & Technology Stack:**
- Framework: Next.js 14+ (App Router)
- Language: TypeScript
- UI Library: React (19+)
- Styling: Tailwind CSS (v3.4+)
- Base Component Library: Shadcn UI (latest). Assume necessary Shadcn UI components (like Button, Card, Dialog, Audio player if available, or primitives to build one) can be easily added or are available.
- State Management (Client-Side): Zustand (for specific client components like the podcast player). For initial scaffolding, component-level state is acceptable.
- Data Source (for displayed content): Supabase (PostgreSQL). For this initial v0 generation, use placeholder data or clearly indicate where data fetching from Supabase would occur. Server Components should be preferred for data fetching.
**2. Design System & Visual Styling:**
- Theme: "Synthwave technical glowing purple vibes." This translates to:
- A predominantly dark theme for the application background.
- Accent Color: A vibrant purple (e.g., Tailwind's `purple-500` or a custom shade like `#800080`) for interactive elements, links, highlights, and potentially subtle glows or text shadows on headings.
- Layout: Modern, minimalist, and clean, focusing on content readability and efficient information consumption.
- Typography: Use Tailwind's default sans-serif font stack. Employ semantic HTML and Tailwind's typography utilities (e.g., `text-2xl font-bold` for titles, `text-base` for body).
- Responsiveness: The application must be mobile-first and responsive across common breakpoints (sm, md, lg, xl) using Tailwind CSS.
- Accessibility: Adhere to WCAG 2.1 Level A. This includes semantic HTML, keyboard navigability, sufficient color contrast (especially with the dark theme and purple accents), and alt text for any images (though MVP is mostly text/content based).
**3. Application Structure & Routing (Next.js App Router):**
- The main application will live under the `/` path, effectively serving as the newsletter list page.
- `/newsletters`: This route should display a list of available newsletters. If the root `/` path doesn't directly serve this, it should redirect here or this should be the primary view.
- `/newsletters/[newsletterId]`: This dynamic route will display the content of a single, selected newsletter. `[newsletterId]` will be a unique identifier (e.g., a UUID).
**4. Page Structure & Key Components:**
**A. PageWrapper Component (Conceptual - Create if useful for consistency):**
- A layout component that wraps page content.
- Provides consistent horizontal padding (e.g., `px-4 md:px-8`) and a max-width container (e.g., `max-w-4xl mx-auto`) to ensure content is well-centered and readable on larger screens.
- Should include a simple header placeholder (e.g., just the text "BMad DiCaster" with the logo if available or a placeholder for it) and a simple footer placeholder (e.g., copyright text).
**B. Newsletter List Page (`/` or `/newsletters` -> `app/(web)/newsletters/page.tsx`):**
- Purpose: Display a list of available newsletters, ordered by date (most recent first).
- Key UI Elements:
- Page Title: e.g., "Daily DiCaster Updates" or "Latest Newsletters".
- List of `NewsletterCard` components.
- Data: Each card represents a newsletter and should display at least a title and date. Clicking a card navigates to the Newsletter Detail Page. For v0, use an array of 3-5 placeholder newsletter objects (e.g., `{ id: 'uuid-1', title: 'Tech Highlights - May 14, 2025', date: '2025-05-14', summary_short: 'A quick rundown of today\'s top tech news...' }`).
- Structure:
```html
[Page Title]
This is the full HTML content...
[Newsletter Date]