# Task: Rewrite Placeholder Images Guide **Priority:** High **Estimated time:** 1-2 hours **Type:** Documentation rewrite --- ## Overview Delete current `/docs/guides/placeholder-images/page.tsx` and create new guide with structure below. **Tone:** Technical, professional, concise. No marketing fluff. **Audience:** Developers who want practical examples they can copy-paste. **Live examples:** Use `https://cdn.banatie.app/sys/demo/live/{scope}` for all images. --- ## SEO Metadata Keep existing SEO config in `docs-seo.ts` for `guide-placeholder-images`: ```typescript 'guide-placeholder-images': { path: '/docs/guides/placeholder-images/', title: 'AI Placeholder Images Guide | Banatie', description: 'Generate AI placeholder images for development. Replace gray boxes with contextual visuals. Sizes for avatars, thumbnails, heroes, and more.', keywords: [ 'placeholder images', 'ai placeholder generator', 'placeholder image api', 'image placeholder dark', 'profile placeholder image', 'placeholder image url', 'dummy image generator', ], }, ``` --- ## Page Structure ``` tocItems = [ { id: 'what-this-guide-covers', text: 'What This Guide Covers', level: 2 }, { id: 'ai-generation-basics', text: 'AI Generation Basics', level: 2 }, { id: 'quick-start', text: 'Quick Start', level: 2 }, { id: 'organizing-placeholders', text: 'Organizing Placeholders', level: 2 }, { id: 'prompt-tips', text: 'Prompt Tips', level: 2 }, { id: 'avatar-placeholder', text: 'Avatar Placeholder', level: 2 }, { id: 'product-image', text: 'Product Image', level: 2 }, { id: 'hero-section', text: 'Hero Section', level: 2 }, { id: 'og-image', text: 'OG Image', level: 2 }, { id: 'features-block', text: 'Features Block', level: 2 }, { id: 'file-based-workflow', text: 'File-based Workflow', level: 2 }, ] ``` --- ## Content ### Hero **Title:** AI Placeholder Images **Subtitle:** Generate contextual images for development. Copy-paste ready examples with Tailwind CSS. --- ### Section: What This Guide Covers This guide shows how to generate placeholder images with Banatie: - **Live URLs** — embed AI-generated images directly in HTML - **Ready-to-use snippets** — copy into your project with Tailwind classes - **File download** — save images locally via API All examples use real Live URLs. Images you see on this page are generated by Banatie. --- ### Section: AI Generation Basics Banatie generates images from text descriptions. Key concepts: **Prompt → Image** Describe what you need. The AI generates a matching image. **Prompt Enhancement** Short prompts are automatically expanded. "office" becomes a detailed description with lighting, composition, and style. **Templates** Control visual style with the `template` parameter: - `photorealistic` — photo-like images - `digital-art` — stylized illustrations - `3d-render` — 3D graphics **Caching** Same prompt returns the same image. First request generates, subsequent requests serve from cache instantly. --- ### Section: Quick Start Basic Live URL format: ``` https://cdn.banatie.app/{org}/{project}/live/{scope}?prompt={description}&aspectRatio={ratio} ``` Minimal example: ```html Mountain landscape ``` Parameters: | Parameter | Required | Description | |-----------|----------|-------------| | `prompt` | Yes | Image description (URL-encoded) | | `aspectRatio` | No | Ratio like `1:1`, `16:9`, `4:3` (default: `16:9`) | | `template` | No | Style template name | For full parameter reference, see [Live URLs documentation](/docs/live-urls/). --- ### Section: Organizing Placeholders Use scopes to group related images: ``` /live/avatars?prompt=... → team member photos /live/products?prompt=... → product catalog /live/blog?prompt=... → article images /live/hero?prompt=... → hero sections ``` Scopes are created automatically on first use. Each scope maintains its own cache. For scope configuration and limits, see [Live URLs → Scopes](/docs/live-urls/#scopes). --- ### Section: Prompt Tips **Be specific** ``` ❌ "office" ✅ "modern minimalist office with plants and natural light" ``` **Dark mode** Include theme context in your prompt: ``` "abstract gradient background dark theme" "product photo on dark surface moody lighting" "avatar silhouette dark background" ``` **Consistent style** Use the `template` parameter for visual consistency across multiple images: ``` ?prompt=...&template=photorealistic ?prompt=...&template=digital-art ``` [TIP] All examples in this guide use prompt enhancement. Your short descriptions are automatically expanded into detailed prompts. --- ### Section: Avatar Placeholder **Aspect ratio:** `1:1` **Use case:** User profiles, team sections, testimonials. #### Live Example [LIVE_PREVIEW: testimonial-card] Create a testimonial card component with: - Dark card background (slate-800) - Avatar image: 64x64px, rounded-full - Quote text - Author name and role - Use this exact URL: `https://cdn.banatie.app/landing/demo/live/avatars?prompt=professional+studio+headshot+confident+woman+neutral+background&aspectRatio=1:1` - Quote: "Banatie cut our design mockup time in half. No more hunting for stock photos." - Author: "Sarah Chen" - Role: "Product Designer at Acme" [/LIVE_PREVIEW] #### Code Snippet ```html User avatar ``` #### Team Grid Example [LIVE_PREVIEW: team-grid] Create a 3-column responsive grid with: - 3 avatar cards side by side on desktop, stacked on mobile - Each card: avatar (48x48, rounded-full), name, role - Gap between cards - Use these URLs: 1. `https://cdn.banatie.app/landing/demo/live/avatars?prompt=professional+headshot+young+man+friendly+smile&aspectRatio=1:1` — "Alex Rivera", "Engineering Lead" 2. `https://cdn.banatie.app/landing/demo/live/avatars?prompt=professional+headshot+woman+glasses+confident&aspectRatio=1:1` — "Maria Santos", "Design Director" 3. `https://cdn.banatie.app/landing/demo/live/avatars?prompt=professional+headshot+man+beard+casual&aspectRatio=1:1` — "James Wilson", "Product Manager" [/LIVE_PREVIEW] --- ### Section: Product Image **Aspect ratio:** `1:1` (square) or `4:5` (portrait) **Use case:** E-commerce catalogs, product cards, listings. #### Live Example [LIVE_PREVIEW: product-card] Create a product card with: - White/light background card with subtle shadow - Product image: square, rounded corners - Product name - Price - "Add to Cart" button (small, secondary style) - Use URL: `https://cdn.banatie.app/landing/demo/live/products?prompt=minimalist+wireless+headphones+white+background+product+photo&aspectRatio=1:1` - Name: "Wireless Pro Headphones" - Price: "$299" [/LIVE_PREVIEW] #### Code Snippet ```html Product ``` #### Product Grid Example [LIVE_PREVIEW: product-grid] Create a 2x2 product grid: - 4 product cards - Each: image (1:1), name, price - Use these: 1. `?prompt=modern+smart+watch+product+photo` — "Smart Watch X1", "$199" 2. `?prompt=wireless+earbuds+case+product+photo` — "AirPods Pro", "$249" 3. `?prompt=portable+bluetooth+speaker+product+photo` — "Portable Speaker", "$79" 4. `?prompt=laptop+stand+aluminum+product+photo` — "Laptop Stand", "$129" Base URL: `https://cdn.banatie.app/landing/demo/live/products` with `&aspectRatio=1:1` [/LIVE_PREVIEW] --- ### Section: Hero Section **Aspect ratio:** `16:9` **Use case:** Landing page heroes, section backgrounds, feature highlights. #### Live Example [LIVE_PREVIEW: hero-section] Create a full-width hero section: - Full width, 400px height - Background image with dark overlay (50% black) - Centered white text: heading + subheading - Rounded corners - Use URL: `https://cdn.banatie.app/landing/demo/live/hero?prompt=aerial+view+modern+city+skyline+sunset+dramatic+lighting&aspectRatio=16:9` - Heading: "Build the Future" - Subheading: "Start your next project with AI-powered tools" [/LIVE_PREVIEW] #### Code Snippet ```html
Hero background

Your Headline

``` --- ### Section: OG Image **Aspect ratio:** `1200:630` (standard for social media) **Use case:** Social sharing previews, Twitter/LinkedIn cards. #### Live Example [LIVE_PREVIEW: og-preview] Create a social card preview mockup: - Browser-like frame with URL bar showing "twitter.com" - Inside: the OG image preview card - Image with title overlay area - Use URL: `https://cdn.banatie.app/landing/demo/live/og?prompt=abstract+gradient+purple+blue+tech+background&aspectRatio=1200:630` - Show how it would appear as a link preview [/LIVE_PREVIEW] #### Code Snippet ```html ``` [TIP] OG images are crawled once and cached by social platforms. Change the prompt to generate a new image for updated content. --- ### Section: Features Block **Aspect ratio:** `1:1` **Use case:** Feature grids, benefit sections, service highlights. #### Live Example [LIVE_PREVIEW: features-grid] Create a 3-column features section: - Section heading: "Why Choose Us" - 3 feature cards, each with: - Square illustration (64x64) - Feature title - Short description (1-2 lines) - Use these: 1. `?prompt=minimal+icon+illustration+lightning+bolt+speed+blue` — "Lightning Fast", "Deploy in seconds with our global CDN" 2. `?prompt=minimal+icon+illustration+shield+security+green` — "Secure by Default", "Enterprise-grade security built in" 3. `?prompt=minimal+icon+illustration+puzzle+piece+integration+purple` — "Easy Integration", "Works with your existing stack" Base URL: `https://cdn.banatie.app/landing/demo/live/features` with `&aspectRatio=1:1` [/LIVE_PREVIEW] #### Code Snippet ```html
Feature

Feature Title

Feature description goes here.

``` --- ### Section: File-based Workflow Sometimes you need image files in your repository instead of URLs. #### When to Use Files - Next.js projects with `/public` folder - Static site generators requiring local assets - Version-controlled images - Offline development #### API Generation + Download Generate an image and save it locally: ```javascript // Node.js example const fs = require('fs'); async function downloadPlaceholder(prompt, outputPath) { // Generate image const response = await fetch('https://api.banatie.app/v1/generations', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': process.env.BANATIE_API_KEY, }, body: JSON.stringify({ prompt: prompt, aspectRatio: '16:9', }), }); const { image } = await response.json(); // Download from CDN const imageResponse = await fetch(image.cdnUrl); const buffer = await imageResponse.arrayBuffer(); // Save to file fs.writeFileSync(outputPath, Buffer.from(buffer)); console.log(`Saved: ${outputPath}`); } // Usage downloadPlaceholder( 'modern office interior', './public/images/hero.png' ); ``` For full API reference, see [Generations API](/docs/api/generations/). --- ## Implementation Notes for Claude Code ### Live Preview Component Create a new component `LivePreview` or similar wrapper that: - Has dark background (slate-900 or similar) - Shows the rendered example - Has subtle border - Optionally shows "Live Example" label ### Code Structure ``` /docs/guides/placeholder-images/ page.tsx ← Main guide page ``` Use existing doc components: - `CodeBlock` for code snippets - `Table` for parameter tables - `TipBox` for tips - `SectionHeader` for sections - `Hero` for page header ### Image URLs All live example images use: ``` https://cdn.banatie.app/landing/demo/live/{scope}?prompt=...&aspectRatio=... ``` Scopes used: - `avatars` — avatar examples - `products` — product photos - `hero` — hero backgrounds - `og` — OG images - `features` — feature illustrations --- ## Verification After implementation: 1. All live preview images load correctly 2. Code snippets are properly formatted 3. Links to other docs work 4. Page renders without errors 5. TOC navigation works 6. Mobile responsive --- ## Done Criteria - [ ] Old guide deleted - [ ] New guide created with all sections - [ ] Live preview components render actual images - [ ] Code snippets are copy-paste ready - [ ] All internal links work - [ ] No TypeScript/lint errors