516 lines
13 KiB
Markdown
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
|