๐ What is Mishka Blog?
mishka_blog is the blog extension of Mishka CMS. It adds posts, collections, tags, bloggers, editorial teams, threaded comments, ratings, bookmarks and follows to a site, with admin screens under /admin/dashboard/blog, a JSON:API, and ready-made page components that read the blog and draw it.
Every record belongs to a site, so each site in a Mishka CMS install has its own blog.
๐งฉ Part of Mishka CMS
Mishka Blog is an extension of Mishka CMS, an open source real-time CMS. It runs on mishka_cms_core, the engine, inside the mishka_cms application, and it is listed with the other CMS extensions.
โจ Features
- Posts that are a draft, scheduled, published or archived, with a scheduled publish time, an excerpt, a featured flag and image, reading time, SEO tags and Schema.org data. A post's text can place components from the site's library, and its code blocks are highlighted when the post is saved.
- Collections for nested categories, and nested tags. Posts, collections and tags can be written in several languages.
- Version history with restore for posts, collections, tags, bloggers and teams.
- Bloggers with a public profile (bio, expertise, social links and a slug). A post can have several authors. Bloggers can be grouped into teams, and each team has its own page.
- Threaded comments with the moderation states pending, approved, flagged and spam, pinning, and up and down votes.
- For readers: a 1 to 5 star rating for each post, bookmarks, follows for bloggers and teams, and a count of unique views.
- An analytics page with daily views, the most-read posts, where readers came from and whether they were signed in, over a period you choose.
- Seventeen page components (eleven blocks that run their own queries and six smaller pieces they draw with) and nine sample pages: the blog index, a post, a category, a tag, an author, a team, and the lists of categories, tags and people.
- The sample pages hang on the site's
site-mainlayout and draw nothing around themselves. The blog hands the layout its bar (Posts, Categories, Tags and People) and, for a post, a category, a tag, a blogger or a team, the languages that record is written in, each at its own address, which the header's language menu lists. - SEO for each record: its own head,
BlogPostingand breadcrumb JSON-LD,sitemap.xmlentries for posts, categories, bloggers and teams, and share cards. - A notification to the blog's admins when a post is published, and dashboard widgets for recent posts, top posts, drafts and scheduled posts, comments to moderate, and bloggers.
- A JSON:API for admins at
/api/json/v1/master/admin/mishka-blog/โฆand/api/json/v1/tenant/admin/mishka-blog/โฆ, and one for readers at/api/json/v1/user/mishka-blog/โฆ(published posts, comments, ratings, bookmarks, follows and votes), described in the CMS's OpenAPI spec. - Permissions
admin:dashboard:blog:postandadmin:dashboard:blog:comment, withadmin:api:twins for the API, so a moderator can hold the comments alone. - Events for plugins, such as
blog:blog_post:after_publishandblog:comment:after_create.
๐ Getting started
Mishka Blog is installed with Mishka CMS. Add it from Hex:
{:mishka_blog, "~> 0.0.1"}Mishka CMS loads it from __extensions/mishka_blog instead when that folder exists.
Mishka CMS registers it in three places: MishkaBlog in ash_domains and MishkaBlogWeb in the core's extensions list, both in config/config.exs, and MishkaBlog in the domains of the JSON:API router.
Then install the blog onto a site. Tick Blog in the install wizard, or open the Blog dashboard of a site that does not have it yet and press Set up. Either way the site gets the seventeen components, the nine sample pages and a sidebar snippet. Running it again adds only what is missing and leaves anything you edited.
For sample bloggers, posts and comments in development, run mix run priv/repo/dev_seeds.exs in mishka_cms.
๐ Documentation
- Mishka Blog documentation, which is still being written
- Features, the post editor, SEO, the REST API and the admin preview
- Mishka CMS documentation
- Mishka Installer documentation, for plugins and events
- The Mishka blog
๐ฌ Community and support
- Report a bug or ask a question in GitHub issues.
- Read about new releases on the Mishka blog.
- For a custom blog feature, a migration from another CMS or priority support, hire the Mishka team.
๐ Support the project
Mishka CMS and its extensions are free and open source. You can support their development through GitHub Sponsors or Buy Me a Coffee.
๐ License
Apache License 2.0. See LICENSE.