banatie-service/inbox/task-placeholder-guide-rewr...

516 lines
13 KiB
Markdown

# 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
<img
src="https://cdn.banatie.app/landing/demo/live/test?prompt=mountain+landscape"
alt="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
<img
src="https://cdn.banatie.app/{org}/{project}/live/avatars?prompt=professional+studio+headshot&aspectRatio=1:1"
alt="User avatar"
class="w-16 h-16 rounded-full object-cover"
/>
```
#### 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
<img
src="https://cdn.banatie.app/{org}/{project}/live/products?prompt=product+photo+white+background&aspectRatio=1:1"
alt="Product"
class="w-full aspect-square object-cover rounded-lg"
/>
```
#### 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
<div class="relative w-full h-96 rounded-xl overflow-hidden">
<img
src="https://cdn.banatie.app/{org}/{project}/live/hero?prompt=abstract+tech+background&aspectRatio=16:9"
alt="Hero background"
class="w-full h-full object-cover"
/>
<div class="absolute inset-0 bg-black/50 flex items-center justify-center">
<h1 class="text-4xl font-bold text-white">Your Headline</h1>
</div>
</div>
```
---
### 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
<head>
<meta property="og:image" content="https://cdn.banatie.app/{org}/{project}/live/og?prompt=your+description&aspectRatio=1200:630" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
</head>
```
[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
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div class="text-center">
<img
src="https://cdn.banatie.app/{org}/{project}/live/features?prompt=icon+illustration&aspectRatio=1:1"
alt="Feature"
class="w-16 h-16 mx-auto rounded-lg"
/>
<h3 class="mt-4 font-semibold">Feature Title</h3>
<p class="mt-2 text-sm text-gray-600">Feature description goes here.</p>
</div>
<!-- Repeat for other features -->
</div>
```
---
### 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