infopage
Infopage
Create document-style HTML pages. Utilitarian, readable, no decoration.
Style
Warm, readable, classic. Serif typography with subtle color accents.
Color Palette
| Name | Hex |
|---|---|
| cream | #f5f3e8 |
| black | #222 |
| red | #db5439 |
| pink | rgba(220, 84, 57, 0.5) |
| gold | #eebe6d |
Valid Combinations
| Background | Text |
|---|---|
| cream | black |
| red | black |
| pink | black |
| gold | black |
| black | cream |
| black | gold |
Use any combination, but:
- Cards must all use the same combination
- Page background must differ from card background
Base Template
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PAGE_TITLE</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&display=swap');
:root {
--cream: #f5f3e8;
--black: #222;
--red: #db5439;
--pink: rgba(220, 84, 57, 0.5);
--gold: #eebe6d;
}
</style>
<script>
tailwind.config = {
theme: {
fontFamily: {
serif: ['"Libre Baskerville"', 'Georgia', 'serif'],
},
extend: {
colors: {
cream: 'var(--cream)',
black: 'var(--black)',
red: 'var(--red)',
pink: 'var(--pink)',
gold: 'var(--gold)',
}
}
}
}
</script>
</head>
<body class="bg-cream text-black font-serif min-h-screen">
<div class="max-w-6xl mx-auto px-8 py-16">
<header class="mb-12">
<h1 class="text-2xl font-bold uppercase tracking-wide">PAGE_TITLE</h1>
<p class="text-sm mt-2 italic text-black/70">SUBTITLE</p>
</header>
<main>
<!-- Content -->
</main>
<footer class="mt-16 pt-8 border-t border-black/20 text-sm text-black/60">
Generated DATE
</footer>
</div>
</body>
</html>
Patterns
Section with Heading
<section>
<h2 class="text-lg font-bold uppercase tracking-wide mb-4">Section Title</h2>
<p class="leading-relaxed">Body text goes here.</p>
</section>
Numbered List
<ol class="space-y-3 list-decimal list-inside">
<li><span class="font-semibold">Step one.</span> Description.</li>
<li><span class="font-semibold">Step two.</span> Description.</li>
</ol>
Bullet List
<ul class="space-y-2">
<li class="flex gap-3">
<span>*</span>
<span>Item description</span>
</li>
</ul>
Divider
<hr class="my-8 border-black">
Key-Value
<dl class="space-y-2">
<div class="flex gap-4">
<dt class="font-semibold min-w-32">Label</dt>
<dd>Value</dd>
</div>
</dl>
Table
<table class="w-full text-sm border-collapse">
<thead>
<tr class="border-b-2 border-red">
<th class="text-left py-3 px-4 font-bold">Name</th>
<th class="text-left py-3 px-4 font-bold">Value</th>
</tr>
</thead>
<tbody>
<tr class="border-b border-black/10">
<td class="py-3 px-4">Item</td>
<td class="py-3 px-4 text-black/70">Details</td>
</tr>
</tbody>
</table>
Cards (Preferred for Comparisons)
Cards show key facts at a glance. No verbose descriptions.
<div class="grid gap-4 md:grid-cols-2 lg:grid-cols-3">
<div class="bg-pink border-4 border-red p-5">
<div class="flex justify-between items-start mb-3">
<a href="https://example.com" class="font-bold uppercase text-sm tracking-wide hover:underline" target="_blank">App Name</a>
<span class="text-xs font-bold bg-gold text-black px-2 py-1">92/100</span>
</div>
<p class="text-xl font-bold mb-3">$12/mo</p>
<div class="flex flex-wrap gap-2 mb-3">
<span class="text-xs border border-black/30 px-2 py-1">Offline</span>
<span class="text-xs border border-black/30 px-2 py-1">Local AI</span>
</div>
<dl class="text-sm space-y-1">
<div class="flex justify-between">
<dt class="text-black/70">Free Tier</dt>
<dd class="font-semibold">Yes</dd>
</div>
<div class="flex justify-between">
<dt class="text-black/70">Trial Length</dt>
<dd>2,000 words/week</dd>
</div>
</dl>
</div>
</div>
Card content:
- Clickable title (links to website, no separate "Visit Website")
- Rank/score badge
- Price
- Tags for key features
- Key facts (free tier, trial length, etc.)
- No description paragraphs - that's where AI waffle creeps in
Grid columns:
- 2-3 columns:
md:grid-cols-2 lg:grid-cols-3 - More columns for simpler cards:
md:grid-cols-3 lg:grid-cols-4
Note/Callout
<div class="border-l-4 border-red pl-4 my-6 py-3 pr-4">
<p class="text-sm italic">Note: Important information here.</p>
</div>
Tags/Badges
<span class="text-xs font-bold bg-gold text-black px-2 py-1">Featured</span>
<span class="text-xs font-bold bg-red text-cream px-2 py-1">New</span>
<span class="text-xs border border-black/30 px-2 py-1">Tag</span>
Links
<a href="#" class="text-red hover:underline">Link text →</a>
File Naming
Default: index.html in current directory
If index.html exists:
- Ask user before overwriting, OR
- Create a subdirectory:
./topic-name/index.html
Never: Long descriptive filenames like compare-voice-apps-on-mac.html
Examples:
# Good
./index.html
./voice-apps/index.html
~/Desktop/examples/index.html
# Bad
./compare-voice-apps-on-mac.html
./my-keyboard-shortcuts-reference.html
Rules
- Use only palette colors (cream, black, red, pink, gold)
- Cards use same bg color, distinct from page bg
- Border-4 for cards, not border-1
- No rounded corners
- Serif typography (Libre Baskerville)
- Generous whitespace
- Prefer card grids over lists for comparisons
- Cards are minimal - name + one key fact, click to expand
- No AI waffle - no "gold standard", "exceptionally accurate", just facts
- Transitions only on user action (expand/collapse OK, no auto-animations)
TODO: Future Looks
- Monospace/terminal variant
- Sans-serif modern variant
- Dark mode (white on black)
More from cerico/macfair
infographic
Generate infographics from text. Extracts key info, renders SVG, exports PNG. Uses Claude Code (no API costs).
38visx
Build data visualizations with visx (React + D3). Use for charts, graphs, and interactive data exploration.
21creative-design
Create distinctive, memorable UI for landing pages, portfolios, marketing sites, and one-off creative work. Use when the user explicitly wants something "distinctive", "creative", "memorable", or "unique" - NOT for standard app components where consistency matters.
20threejs
Build 3D scenes, animations, and interactive experiences with Three.js. Use for product viewers, backgrounds, data visualization, or creative experiments.
13prototype
Create quick React prototypes that bundle to a single HTML file. Use for demos, interactive experiments, or shareable artifacts - NOT for full apps (use audreygen/Next.js for those).
13test-review
Review existing tests for completeness, quality issues, and common mistakes
12