Skip to content

Core concepts

Several terms are used throughout Indiekit’s documentation.

Content store

A content store is a location where Indiekit can save post content and media files. This could be a Git repository, an FTP server or even a database. A content store plug-in provides this functionality.

For example, if you are saving your posts to the file system, install the file system store:

sh
npm install @indiekit/store-file-system

Then add it to your configuration:

json
{
  "plugins": ["@indiekit/store-file-system"],
  "@indiekit/store-file-system": {
    "directory": "project/www"
  }
}
js
export default {
  plugins: ["@indiekit/store-file-system"],
  "@indiekit/store-file-system": {
    directory: "project/www"
  }
}

Endpoint

An endpoint is a path on your Indiekit server that applications can send requests to or users can access certain features at.

By default Indiekit provides the following endpoints:

EndpointFunctionality
/authEndpoint for authenticating users and applications.
/filesInterface for uploading and managing files.
/mediaMicropub media endpoint for uploading media files.
/micropubMicropub endpoint for creating post files.
/postsInterface for creating and managing posts.
/shareInterface for creating bookmark posts.
/syndicateEndpoint that can be pinged to initiate post syndication.

Post type

A post type is used to identify a type of content based on common definitions agreed by the IndieWeb community.

Common post types include notes, articles, photos, replies and likes. A full list of post types can be found on the IndieWeb wiki.

By default Indiekit supports creating the following post types:

Post typeFunctionality
articlePosts with more structure than a note that include a title, multiple paragraphs, and often subheadings, blockquotes and images.
bookmarkPosts that comprise of a URL with a title and text describing or quoting from its content.
likePosts used to share likes of other people’s posts.
notePosts containing short, unstructured thoughts.
photoPosts whose primary content is a photograph or other image.
replyPosts used to reply to other people’s posts.

Publication

A publication is any website to which you are publishing content to via Indiekit.

Publication preset

Indiekit needs to know what post types you want to publish (for example notes and photos) and in which format.

This information can be provided by setting the publication.postTypes and publication.postTemplate configuration values. See customising post types and post template.

A publication preset plug-in provides default values for these 2 options (which you can then override).

For example, if you use the Hugo static site generator, you can install the Hugo publication preset:

sh
npm install @indiekit/preset-hugo

Then add it to your configuration:

json
{
  "plugins": ["@indiekit/preset-hugo"],
  "@indiekit/preset-hugo": {
    "frontMatterFormat": "json"
  }
}
js
export default {
  plugins: ["@indiekit/preset-hugo"],
  "@indiekit/preset-hugo": {
    frontMatterFormat: "json"
  }
}

Syndication

Indiekit can be setup to share posts on other social networks, a process sometimes called syndication or cross-posting.

Syndicator plug-ins provide this functionality. For example, if you want to syndicate your content to Mastodon, you can install the Mastodon syndicator:

sh
npm install @indiekit/syndicator-mastodon

Then add it to your configuration, for example:

json
{
  "plugins": ["@indiekit/syndicator-mastodon"],
  "@indiekit/syndicator-mastodon": {
    "checked": true,
    "url": "https://mastodon.example",
    "user": "username"
  }
}
js
export default {
  plugins: ["@indiekit/syndicator-mastodon"],
  "@indiekit/syndicator-mastodon": {
    checked: true,
    url: "https://mastodon.example",
    user: "username"
  }
}

The checked option is used to tell Micropub clients whether a syndication target should be enabled or not by default.

Using the application interface to syndicate a post

A ‘Syndicate post’ button is shown on the detail page for any post that can be syndicated. Clicking this button will syndicate the post to any outstanding syndication targets (shown under the mp-syndicate-to property).

Using the syndication endpoint

Use the syndication endpoint to check if any posts are awaiting syndication.

This POST request should include your server’s access token. You can find this on your server’s status page.

This token can be provided in the URL using the token query parameter:

sh
POST /syndicate?token=[ACCESS_TOKEN] HTTP/1.1
Host: indiekit.example
Accept: application/json

You can also use the access_token form field:

sh
POST /syndicate HTTP/1.1
Host: indiekit.example
Content-type: application/x-www-form-urlencoded
Accept: application/json

access_token=[ACCESS_TOKEN]

Using an outgoing webhook on Netlify

If you are using Netlify to host your website, you can ping the syndication endpoint once a deployment has completed.

First, create an environment variable for your Indiekit server called WEBHOOK_SECRET and give it a secret, hard-to-guess value.

Then on Netlify, in your site’s ‘Build & Deploy’ settings, add an outgoing webhook with the following values:

  • Event to listen for: ‘Deploy succeeded’
  • URL to notify: [YOUR_INDIEKIT_URL]/syndicate
  • JWS secret token: The same value used for WEBHOOK_SECRET