Skip to content

A powerful and lightweight npm package for working with structured blog post data, featuring 200+ dummy posts out of the box. Includes built-in pagination, categorization, fuzzy search, and full TypeScript support. Perfect for static blogs, CMS backends, or frontend demos.

License

Notifications You must be signed in to change notification settings

devgauravjatt/best-blog-data

Repository files navigation

πŸ“š Best-blog-data

A powerful and lightweight npm package for working with structured blog post data, featuring 200+ dummy posts out of the box. Includes built-in pagination, categorization, fuzzy search, and full TypeScript support. Perfect for static blogs, CMS backends, or frontend demos.

Note

😍 200+ Posts and 30 Categories with SEO Meta!

GitHub License GitHub last commit NPM Downloads NPM Version


✨ Features

  • πŸ“„ Pagination – Retrieve posts with configurable page size and pagination
  • 🏷️ Category Filtering – Organize and access posts by categories
  • πŸ” Search – Fuzzy search powered by Fuse.js
  • πŸ”— Post Slug Lookup – Quickly fetch posts by slug
  • 🧩 Modular API – Simple, composable utilities
  • ⚑ Lightweight – Zero bloat, minimal dependencies
  • 🧠 Fully Typed – Built with TypeScript for great DX

πŸ“¦ Installation

npm install best-blog-data

or

pnpm add best-blog-data

πŸš€ Quick Start

Create Instance

import BestBlogData from 'best-blog-data'

const blogData = new BestBlogData()

πŸ“„ Get Paginated Posts

const { posts, nextPageAvailable } = blogData.getPosts() // Defaults to page 1
console.log(posts.length) // Up to 10 posts
const page2 = blogData.getPosts(2)
console.log(page2.posts.length)

πŸ”— Get Full Post by Slug with HTML Content

const post = blogData.getFullPostBySlug('my-blog-post-slug')
if (post) {
  console.log(post.title)
}

🏷️ Filter Posts by Category

const { posts, nextPageAvailable, categoryFound } =
  blogData.getPostsByCategory('technology')
if (categoryFound) {
  console.log(posts)
}
const reactPostsPage2 = blogData.getPostsByCategory('react', 2)

πŸ“š Get All Categories

const categories = blogData.getAllCategories()
console.log(categories)
// [
//   { slug: 'react', name: 'React' },
//   { slug: 'ai', name: 'Artificial Intelligence' },
//   ...
// ]

πŸ” Fuzzy Search Posts

const searchResults = blogData.getPostsBySearch('AI content')
searchResults.forEach(({ item, score }) => {
  console.log(`${item.title} (score: ${score})`)
})

πŸ“˜ API Reference

blogData.getPosts(pageIndex?: number): { posts: Post[], nextPageAvailable: boolean }

Returns paginated posts (10 per page by default).


blogData.getFullPostBySlug(slug: string): Post | undefined

Fetch a single post by its unique slug.


blogData.getPostsByCategory(categorySlug: string, pageIndex?: number): { posts: Post[], nextPageAvailable: boolean, categoryFound: boolean }

Retrieve posts filtered by a category slug.


blogData.getAllCategories(): Category[]

Returns a list of all unique categories found in posts.


blogData.getPostsBySearch(query: string): FuseResult<Post>[]

Performs fuzzy search across post titles. Returns max 10 results with match scores.


🧱 Data Structure

Post

interface Post {
  slug: string
  title: string
  content?: string
  date: string
  image: string
  categorie: {
    slug: string
    name: string
  }
  meta_seo: {
    title: string
    description: string
    image: string
    url: string
  }
}

Category

interface Category {
  slug: string
  name: string
}

πŸ”§ Search Configuration (Fuse.js)

  • Threshold: 0.3
  • Search Keys: ['title']
  • Limit: 10 results

πŸ“¦ Dependency

  • fuse.js β€” Fuzzy search engine

πŸ’‘ Use Cases

  • Build static blog websites
  • Power blog UIs with real or mock content
  • CMS & content preview tools
  • Search-enabled article listings
  • Prototyping frontend blog layouts

🧠 TypeScript Support

This package is fully typed with built-in definitions, ensuring IntelliSense and compile-time safety in modern editors and TypeScript projects.


🀝 Contributing

Found a bug or have a feature idea? PRs and issues are welcome!

git clone https://github.com/devgauravjatt/best-blog-data

πŸ“„ License

MIT Β© devgauravjatt


πŸ” Keywords

blog, cms, posts, pagination, search, categories, typescript, fuse, content, npm-package


About

A powerful and lightweight npm package for working with structured blog post data, featuring 200+ dummy posts out of the box. Includes built-in pagination, categorization, fuzzy search, and full TypeScript support. Perfect for static blogs, CMS backends, or frontend demos.

Topics

Resources

License

Stars

Watchers

Forks