Updating Content
Learn how to update text, images, and data in your Capricorn template.
Content System Overview
Capricorn templates use a file-based content system — no database or CMS required. Your content lives in easy-to-edit files within the content/ folder.
Two Types of Content
| Type | Format | Best For |
|---|---|---|
| MDX Files | Markdown + frontmatter (.mdx) | Long-form content with individual pages (blog posts, services, case studies) |
| TypeScript Files | Data arrays (.ts) | Structured lists displayed on pages (team members, testimonials, pricing, FAQ) |
MDX Content
MDX combines Markdown formatting with structured metadata, perfect for content that needs its own page.
How MDX Works
Each .mdx file has two parts:
---
title: "Your Title"
slug: "url-friendly-slug"
excerpt: "Brief description"
date: "2024-01-15"
image: "/images/your-image.jpg"
---
Your content here using **Markdown** formatting.
## Subheadings work
- So do lists
- And other Markdown featuresFrontmatter (between ---) contains metadata that:
- Defines the page URL via
slug - Provides info for listing pages
- Sets SEO data
Content (below frontmatter) is your actual page content written in Markdown.
Creating New MDX Content
- Navigate to the appropriate folder in
content/ - Create a new
.mdxfile (e.g.,my-new-post.mdx) - Add frontmatter with required fields
- Write your content below
- Save — the page is automatically created!
MDX Tips
URLs are generated from the slug field:
slug: "my-awesome-post" → /blog/my-awesome-postUse Markdown formatting:
## Headings
**Bold text** and *italic text*
- Bullet lists
- Work great
1. Numbered lists
2. Also work
> Blockquotes for testimonials or highlights
[Links](https://example.com) and Keep slugs URL-friendly:
- ✅
teeth-whitening-guide - ❌
Teeth Whitening Guide!
TypeScript Content
For structured data displayed on pages (not needing individual URLs), we use TypeScript files with data arrays.
How TypeScript Content Works
// content/team.ts
export const team = [
{
name: "Jane Smith",
role: "Founder",
bio: "20+ years of experience...",
image: "/images/team/jane.jpg",
},
{
name: "John Doe",
role: "Manager",
bio: "Specializes in...",
image: "/images/team/john.jpg",
},
];Components then import and display this data automatically.
Editing TypeScript Content
- Open the relevant
.tsfile incontent/ - Modify the data array
- Save — changes appear immediately
Common Content Types
Most templates include some of these:
| File | Contains |
|---|---|
team.ts | Team/staff members |
testimonials.ts | Customer reviews |
pricing.ts | Pricing plans/tiers |
faq.ts | Frequently asked questions |
services.ts | Service listings (if not MDX) |
Check your specific template documentation for exact files available.
Images
Adding Images
- Place images in
public/images/ - Organize by type:
public/images/ ├── blog/ ├── team/ ├── services/ └── general/ - Reference with absolute paths:
/images/folder/filename.jpg
Image Best Practices
Formats:
.jpg— Photos and complex images.png— Graphics with transparency.webp— Modern format (smaller files).svg— Icons and logos
Optimization:
- Compress images before uploading
- Aim for under 500KB per image
- Use appropriate dimensions (don’t upload 4000px images for thumbnails)
Recommended Sizes:
| Use Case | Dimensions |
|---|---|
| Hero/Banner | 1920×1080 |
| Blog/Content | 1200×800 |
| Team photos | 600×600 (square) |
| Thumbnails | 400×300 |
| Logos | SVG preferred |
Naming:
- Use lowercase
- Use hyphens for spaces
- Be descriptive
- ✅
teeth-whitening-before.jpg - ❌
IMG_1234.JPG
Configuration Files
Site Configuration
Edit config/site.config.ts for business info:
export const siteConfig = {
name: "Your Business Name",
description: "Your business description",
phone: "(555) 123-4567",
email: "info@yourbusiness.com",
address: "123 Main St, City, State 12345",
social: {
facebook: "https://facebook.com/yourbusiness",
instagram: "https://instagram.com/yourbusiness",
twitter: "https://twitter.com/yourbusiness",
},
};Navigation
Edit config/navigation.config.ts for menus:
export const navigationConfig = {
mainNav: [
{ label: "Home", href: "/" },
{ label: "Services", href: "/services" },
{ label: "About", href: "/about" },
{ label: "Contact", href: "/contact" },
],
};Customization Checklist
When setting up your template, update in this order:
- ☐
config/site.config.ts— Your business name, contact info - ☐
app/globals.css— Your brand colors - ☐
config/navigation.config.ts— Your menu structure - ☐
content/*.ts— Your team, testimonials, etc. - ☐
content/*.mdx— Your services, blog posts, etc. - ☐
public/images/— Replace all placeholder images
Tips for Great Content
Writing
- Keep paragraphs short (2-3 sentences)
- Use headings to break up content
- Include calls-to-action
- Write for your audience
SEO
- Write descriptive titles (50-60 characters)
- Keep excerpts compelling (150-160 characters)
- Use relevant keywords naturally
- Add alt text to images
Consistency
- Use the same image dimensions for similar content
- Keep formatting consistent across pages
- Match your brand voice throughout
Template-Specific Content
Each template has its own content structure. See your specific template documentation for:
- Exact MDX frontmatter fields required
- Available TypeScript content files
- Template-specific components
Template Guides:
Next: Styling & Theming →