Skip to main content

Blogs

Bellamy Book includes a Blogs feature: long-form content with SEO, tags, comments, and media. Blogs are created and edited in the Admin Panel (Content → Blogs) and displayed on the social frontend (listing and detail pages). AI-generated blogs are saved as drafts and can be published from the same admin flow.


Overview

  • Admin: Create, edit, publish, and manage blogs (Tiptap rich editor, SEO fields, tags, featured image, inline images/files). List and filter published blogs.
  • Frontend: Blog listing (featured, latest, pagination, filters by tag/search), blog detail by slug (content, comments, related), optional blog download (file request).
  • API: api/Blog (read: list, slug, tags, recommended; write: create, publish, draft, uploads, tags, request-download). api/blog-comments for comments.
  • Search: Blogs are indexed in Elasticsearch; full-text search via api/Search (type blog).

Admin Panel

  • Content → Blogs (/content/blogs) — List published blogs; create/edit blog.
  • Create/Edit (/content/blogs/create, /content/blogs/edit/:id) — Tiptap editor, SEO (meta title, description, keywords), tags, featured image, inline images and file attachments. Extensions: YouTube, TikTok, iframe, resizable images. Publish or Save as draft.
  • Data source: api/Blog (read/write), api/blog-comments for comments.

Frontend (Social App)

  • Blog listing — Route under social app (e.g. /blogs): featured hero, latest blogs, filters (search, tags), pagination.
  • Blog detail — Route by slug (e.g. /blogs/:slug): full content, author, date, tags, comments, optional download link.
  • API: GET api/Blog (page, pageSize, search, tags, sortBy, sortDesc), GET api/Blog/slug/{slug} (increments view count), GET api/Blog/tags, GET api/Blog/recommended.

API Summary

Read (api/Blog)

MethodEndpointDescription
GET/api/BlogPaginated list (query: page, pageSize, search, tags, sortBy, sortDesc)
GET/api/Blog/slug/{slug}Get blog by slug (public)
GET/api/Blog/check-slugCheck slug availability (query: slug, excludeBlogId)
GET/api/Blog/tagsList tags
GET/api/Blog/recommendedRecommended blogs

Write (api/Blog) — Admin

MethodEndpointDescription
GET/api/Blog/adminAdmin list (drafts + published)
GET/api/Blog/{id}Get blog by ID (admin)
POST/api/BlogCreate blog
POST/api/Blog/{id}/publishPublish draft
POST/api/Blog/{id}/save-draftSave as draft
POST/api/Blog/upload-featured-imageUpload featured image
POST/api/Blog/upload-imageUpload inline image
GET/api/Blog/images/{mediaFileId}Get image URL
POST/api/Blog/upload-fileUpload file attachment
GET/api/Blog/files/{mediaFileId}Get file URL
POST/api/Blog/tagsCreate/ensure tags
POST/api/Blog/{id}/request-downloadRequest download (returns token)
GET/api/Blog/download/{token}Download file by token

Blog comments

  • api/blog-comments — Create, list, update, delete blog comments (see backend controller for exact routes).

SEO and slugs

  • Each blog has a slug (URL-friendly, unique). Frontend uses slug for detail URLs.
  • SEO fields (meta title, description, keywords) are editable in the admin blog editor and used for public pages.

When you publish posts about self-hosted social network topics or build your own platform stories, link readers to the canonical marketing URL: bellamybook.com/landing. That page is the primary conversion target alongside this documentation.