Echo

Blog System

A complete blog system with rich content editing, categories, tags, and SEO optimization

Overview

What you can do with the blog system

  • Create and manage blog posts with a rich block editor
  • Organize posts with categories and tags
  • Upload images and media to Supabase Storage
  • Search and filter posts by category or keyword
  • Pin featured posts to the top
  • Preview posts before publishing

Block Editor

Rich content editing with customizable blocks

The blog uses a block-based editor that supports multiple content types:

  • Text blocks: Markdown content with headings, lists, links, and code
  • Image blocks: Upload and display images with captions
  • Video blocks: Embed YouTube or Vimeo videos
  • Image carousels: Create galleries with multiple images
# Block structure:
{
type: "text" | "image" | "video" | "carousel",
content: string,
metadata: { ... }
}

Categories & Tags

Organize your content

Categories

Each post can have one category. Categories are used for filtering and navigation.

Tags

Posts can have multiple tags. Use the featured tag to mark posts for the hero section.

Search & Filter

Find posts quickly

The blog includes built-in search and filtering capabilities:

  • Full-text search: Search across titles, excerpts, and content
  • Category filter: Filter posts by category
  • Pagination: Navigate through multiple pages of results

Media Management

Upload and manage images

Images are stored in Supabase Storage in the public-media bucket:

# Upload endpoint:
POST /api/admin/blog/upload
# Storage bucket:
public-media

Featured Posts

Highlight important content

Posts can be featured in multiple ways:

  • Pinned: Pin posts to always appear at the top
  • Featured tag: Use the featured tag
  • Cover image: Posts with cover images are prioritized for hero display

SEO Optimization

Built-in SEO features

Each post automatically includes:

  • Dynamic meta tags (title, description, OG image)
  • Reading time calculation
  • Social sharing buttons (Twitter, LinkedIn, Email)
  • Table of contents generation from headings