Get Started

v0.0.1

Mishka Blog is the blogging extension for Mishka CMS. It adds posts, categories, tags, author profiles, teams and comments to a site, pages and page blocks that show them, and a JSON:API that reads and writes the same data. Each site in a Mishka CMS installation has its own blog, because everything the extension stores belongs to one site.

What the blog gives you

  • Posts with a rich-text editor, a subtitle, an excerpt, a cover image, a Featured flag and a version history.
  • Collections, which readers see as categories and which can be nested, and tags.
  • Bloggers, the author profiles that posts credit, and teams that group them.
  • Comments from signed-in readers, held until a moderator approves them.
  • Posts, collections and tags in more than one language.
  • A search and sharing head, structured data and a share image for every kind of record.
  • A Permissions field on posts, collections and tags that keeps a record to the readers who hold a permission.
  • A dashboard with an editorial calendar, and an analytics page.
  • Seventeen components, which are eleven blocks and six pieces, and nine sample pages that you can use as they are or rebuild in the visual editor.
  • A JSON:API for posts, collections, tags, bloggers, teams, comments and auto posting, with reader routes for ratings, bookmarks, follows and comment votes.

Before you begin

  • Run a Mishka CMS project that includes the Mishka Blog package, and sign in to its admin. A standard project already includes it.
  • To write and manage content, use an account that holds admin:dashboard:blog:post. To moderate comments, it needs admin:dashboard:blog:comment. A wildcard such as admin:dashboard:blog:* covers both. See Blog permissions.
  • To set the blog up on a site, the account also needs the runtime permissions listed in Set up the blog on a site.

If your project does not include the package, add it from Hex to deps in mix.exs:

elixir
def deps do
  [
    {:mishka_blog, "~> 0.0.1"}
  ]
end

Run mix deps.get, then list the package's Ash domain and its web module in the project's config, as Install an extension shows.

Publish your first post

  1. Set up the blog on your site.
  2. Add a collection, a tag and a blogger.
  3. Write and publish a post.
  4. Open the blog's sample home page at /:lang/blog, with your site's language in place of :lang.

the Blog dashboard header with the Analytics and New Post buttons, the five key figures, and the section cards below them

The blog dashboard is the starting point for every blog screen.

For the whole path on the CMS side, including pages and layout, follow Start a blog.

Find what you need