Link Search Menu Expand Document


v1.0.0 Alpha 2

22 May 2022

Bug Fixes

  • endpoint-image: make endpoint route public (adcdb1e)

v1.0.0 Alpha 1

20 May 2022

Bug Fixes

  • endpoint-image: include missing got dependency (50d706e)
  • indiekit: include missing plug-in dependencies (a905b7d)

v1.0.0 Alpha 0

20 May 2022

This is the first alpha release for the first major version of Indiekit. This release is a breaking change as it uses a new configuration format.

Main features include:

  • A project initialiser (npm init indiekit [DIRECTORY_NAME])
  • A server executable
  • A new configuration format
  • A token endpoint
  • An image resizing endpoint
  • Ability to create NewBase60 URL slugs, thanks to the inclusion of daily post count – thanks @joebuhlig!
  • New and updated localisations – thanks @aciccarello and contributors on Localazy!

Bug fixes, refinements and documentation to follow.


  • create-indiekit: project initializer (7f224d6)
  • endpoint-image: add image resizing endpoint (21da1d3)
  • endpoint-image: use mongodb cache store (da8de0d)
  • endpoint-media: show icon if media not found (744ff7d)
  • endpoint-media: show media in files view (dc40f79)
  • endpoint-media: show media in files view (24981cc)
  • endpoint-micropub: add post type count token for the day (60f469b)
  • endpoint-micropub: paginate posts (a3b388e)
  • endpoint-token: add token endpoint (e8fbb4c)
  • frontend: file grid component (aded86b)
  • frontend: file list component (0672ce6)
  • frontend: global to generate pagination data (30b6d7c)
  • frontend: pagination component (683b559)
  • frontend: revert to using es modules (976e82c)
  • frontend: support custom media constraints (4dfd302)
  • indiekit: add debug option to serve command (7659970)
  • indiekit: ensure client_id includes path component (fcd416c)
  • indiekit: force https (cc9ece0)
  • indiekit: increase rate limit (bd9b9a4)
  • indiekit: refactor config loading and format. fixes #402 (65ff927)
  • don’t use default environment variable for MongoDB (abc1e64)
  • enable all plugins to include an assets path (d1083ab)
  • register defined view directories for plug-ins (77eeed2)
  • add and update plug-in icons (56f5cf4)
  • add Indonesian localisation from Zeky Chandra (e5508f1)
  • add Spanish translation from @aciccarello (e556ada)
  • update Dutch localisation (8d20a58)
  • update French localisation (f784e71)
  • update German localisation (1e8a9e9)
  • update Portuguese localisation (d730157)

Bug Fixes

  • endpoint-media: throw useful errors when creating data (d2ab6f4)
  • endpoint-micropub: normalise properties after updating post data (0d43082)
  • endpoint-micropub: throw error if post type not configured. fixes #423 (fb56937)
  • endpoint-micropub: typo (700e720)
  • endpoint-token: return 403 if token URL doesn’t match publication URL (807690e)
  • endpoint-token: use body parameters not query values when granting a token (edec575)
  • frontend: ensure app logo can be parsed (fd315a5)
  • frontend: ensure icon size scales with text (8b7c785)
  • frontend: main padding on login layout (0c29310)
  • frontend: missing border-radius on login form (61d3d8a)
  • frontend: summary value content spacing (a86ffc2)
  • indiekit: correct post request to token endpoint (5b02665)
  • indiekit: save session to app locals (6e8171f)
  • indiekit: simpler check for database (3ebccac)
  • syndicator-mastodon: missing init function (0a436d6)
  • use correct request format for authentication requests (46836f8)


6 February 2022

This release adds a syndicator for Mastodon, refactors how IndieAuth is used to authorise requests, and updates how localisations are loaded and managed. It also improves overall test coverage, and sets some of the groundwork for the next release: v1.0 👀

⛔ IndieAuth

IndieAuth was previously handled using a third-party library. As this was designed to be used in either the browser or server environment, it included a number of dependencies that aren’t needed if only supporting Node.js. It also no longer appears to be maintained, and some of the dependencies have security vulnerabilities. Bringing this functionality ‘in-house’ means the number of dependencies has been reduced and all this code is now covered by tests, something that was hard to achieve before.

🌐 Localisation

Apart from refactoring how localisation strings are loaded (plug-ins no longer need to register localisation files, for example), I’ve also made it easier for people to contribute new localisations towards this project. If you see a translation that is not quite right, or would like to add support for a new language, please contribute to the project.

📖 Documentation

Since the last release, the documentation site has been updated, using the fantastic Just the docs theme. Some of the content has been revised, but there’s much more to follow.

⏩ Next

The next release will include breaking changes to server configuration, and given this project is following semver, it’ll require a major version bump. 😬


  • syndicator-mastodon: add mastodon syndicator (b8148ca)
  • indiekit: use Localazy localisation service (004caa0)
  • indiekit: rate limit some requests (6a7d520)
  • indiekit: split express app config from server (b1f7364)
  • indiekit: split express app config from server (f388d6d)
  • frontend: add absoluteUrl filter (dcc0616)
  • plug-ins no longer need to add locales (e489594)
  • add default exports for plug-ins (8518285)
  • add plug-in info (f289df4)

Bug Fixes

  • indiekit: env vars as default values for options that accept secrets (1af9707)
  • indiekit: get application info from indiekit package.json (439d845)
  • indiekit: handle timeout connecting to mongodb (79e6206)
  • indiekit: remove prototype-polluting assignment (45042f4)
  • endpoint-micropub: typos (bf71b09)
  • endpoint-micropub: use absolute url for media items (3903845)
  • frontend: fix size of footer logo (6b9b9ec)
  • frontend: use text colour for summary values (42b7caf)
  • store-bitbucket: env vars as default values for options that accept secrets (78e4bbb)
  • store-ftp: env vars as default values for options that accept secrets (06fd746)
  • store-gitea: env vars as default values for options that accept secrets (32124bd)
  • store-github: env vars as default values for options that accept secrets (da9d998)
  • store-gitlab: env vars as default values for options that accept secrets (fe3512d)
  • syndicator-internet-archive: env vars as default values for options that accept secrets (894a886)
  • syndicator-twitter: env vars as default values for options that accept secrets (ce436e7)
  • syndicator-twitter: only post replies to tweets (a40e58d)
  • improve appearance of post and syndication target icons (0fe768e)
  • make it easier to see and copy access token (7f381b5)
  • use package.json vars (4005873)


19 December 2021


  • store-ftp: add ftp content store. fixes #278 (fa7267f)
  • default to main as default branch name for git-based store plugins (9d6d8ef)

Bug Fixes

  • frontend: tweak styles for documentation site (59f65bc)
  • micropub: return list of categories (305588d). Thanks to @roobottom for reporting.


1 August 2021

Bug Fixes

  • throw error if feature requires database. fixes #358 (9316eaa)


14 June 2021

Bug Fixes

  • indiekit: allow overriding application url in config. fixes #352 (56affa5). Thanks to @adrusi for reporting.


30 May 2021

Bug Fixes

This release largely addresses issues with the Hugo preset, kindly reported by @jayeless:

  • indiekit: incorrect this assignment in postTemplate function. fixes #344 (52812b8)
  • preset-hugo: use camelcased frontmatter keys. fixes #345 (a4a6e93)
  • preset-hugo: add missing like-of property (75da03d)
  • preset-jekyll: add missing like-of property (6b0f60a)


16 May 2021

Bug Fixes

  • media uploads failing. fixes #343 (3ad644d). Thank-you to @jayeless for reporting.


15 March 2021

Release v0.1.0. We’ll use semantic versioning from now on rather than mess about with an alpha tag. 🎉

…from my POV re: all this, big hurrah, we’re ready to upload i.e. let’s launch the f**ker

– Fergus Williams, The Thick of It

v0.1.0 Alpha 23

15 March 2021

Bug Fixes

  • disable watch for Nunjucks templates to stop chokidar dependency errors (b29e9e2)

v0.1.0 Alpha 22

15 March 2021

Bug Fixes

  • always syndicate to Twitter using HTML content property (dea22bb)
  • endpoint-micropub: relative media path for publication url with path component (9dd58ef)


  • endpoint-media: show message when no files to show (6110ff1)
  • endpoint-micropub: parse geo uri for location property (b28d789)
  • endpoint-micropub: show message when no posts to show (a3d9bce)
  • indiekit: localise 404 page (09ac3ac)
  • preset-jekyll: disable line folding on yaml strings (ba3b21b)
  • syndicator-twitter: always use absolute urls for uploading media (5190195)
  • pass publication config to syndicator (32e1f35)
  • preset-hugo: disable line folding on yaml strings (c72a598)

v0.1.0 Alpha 21

1 February 2021

Bug Fixes

  • endpoint-micropub: adding item to value which is not yet an array (1067e8d)
  • endpoint-micropub: creating posts with single media property (901ad93)
  • indiekit: add default for publication.jf2Feed (2d667a1)
  • indiekit: always return responses in auth flow (069eac4)
  • indiekit: remove extraneous form input (4620f5d)
  • preset-hugo: update content fallback values (1794e34)
  • preset-jekyll: update content fallback values (29111ae)


  • frontend: show ’Error:’ prefix for validated page title (f9622b6)
  • frontend: updated markup for error message (22a7f5d)
  • indiekit: remove media endpoint resolution (3025aa7)
  • abstract summaryRow filter for post and file views (f32e28c)
  • make syndicator plug-ins dryer (bc68462)
  • remove syncing website post data using a JF2 Feed (6f39349)
  • endpoint-micropub: add available queries to config query (5545c59)
  • endpoint-micropub: convert stored jf2 to mf2 on source query (33e248c)
  • endpoint-micropub: normalise properties when updating post data (b498868)
  • endpoint-micropub: only return categories for category query (3d63ea0)
  • endpoint-micropub: remove mf2 from post view (4f85678)
  • indiekit: prevent pages from being crawled or indexed (53bc449)

v0.1.0 Alpha 20

7 January 2021

Bug Fixes

  • show 404 page if item not found in database (f737d0a)
  • endpoint-micropub: fix content display error (1d33c94)


  • endpoint-micropub: use relative media URLs (e76abde)
  • preset-hugo: fallback to html content (0022b71)
  • preset-jekyll: fallback to html content (5d96402)

v0.1.0 Alpha 19

4 January 2021

Bug Fixes

  • always use mp-slug key for slug property (49a2bf1)
  • endpoint-micropub: use timezone when updating post paths (a55bed5)
  • endpoint-syndicate: import JF2 properties into database (daf2784)

v0.1.0 Alpha 18

1 January 2021


  • endpoint-syndicate: use JF2 Feed, not JSON Feed (78d515a)

v0.1.0 Alpha 17

1 January 2021


  • endpoint-micropub: reinstate forced syndication (3a11ffe)
  • endpoint-syndicate: check if post in json feed has already been syndicated (abb1898)

v0.1.0 Alpha 16 (aka how I spent New Year’s Eve 2020)

31 December 2020

Bug Fixes

  • syndicator-twitter: improve status text creation (e59f166)


  • endpoint-micropub: add text and html values to content property (95d4724)
  • endpoint-syndicate: add syndication from a json feed (9f545f0)
  • preset-hugo: always use content.text value (3243e8a)
  • preset-jekyll: always use content.text value (6659a45)
  • syndicator-twitter: add alt text to photo uploads (7a2eac2)
  • syndicator-twitter: more robust in-reply-to check (3e7d012)
  • syndicator-twitter: more robust status text creation (7159d81)

v0.1.0 Alpha 15

28 December 2020

Bug Fixes

  • respect force syndication option (14824b5)
  • update demo config to not require a MongoDB URL (933fdcd)


  • store-bitbucket: add bitbucket store. fixes #277 (a0cb424)
  • syndicator-twitter: add twitter syndicator. fixes #307 (b8122a3)

v0.1.0 Alpha 14

16 November 2020

Bug Fixes

  • endpoint-syndicate: correct success message. fixes #295 (210ee79)
  • indiekit: only show access token in status if session token present (f97fa0b)
  • indiekit: validate redirect given to auth callback (32af0c0)
  • syndicator-internet-archive: add assets folder to module package (2f1839a)


  • endpoint-micropub: allow server to override client checked syndication targets. fixes #296 (af57800)
  • allow syndicators to supply assets (fdf8b87)
  • syndicator-internet-archive: add support for ‘checked’ property (c5666b8)

v0.1.0 Alpha 13

29 October 2020

Bug Fixes

  • endpoint-syndicate: return 200 status code when responding (882c2f9)

v0.1.0 Alpha 12

29 October 2020


  • endpoint-syndicate: endpoint for triggering syndication (4cf89fa)
  • preset-hugo: add syndication property (5826963)
  • preset-jekyll: add syndication property (540bb51)
  • syndicator-internet-archive: syndicate to internet archive. fixes #35 (818eabd)

v0.1.0 Alpha 11

12 October 2020

Bug Fixes

  • endpoint-media: correctly identify dates without a time (52066f3)
  • endpoint-micropub: capture missing operation when updating post data (96bfeb8)
  • endpoint-micropub: correct query to find published post (cac37c5)
  • endpoint-micropub: correctly identify dates without a time (10af2a7)
  • endpoint-micropub: fix undelete action (502d465)
  • endpoint-micropub: throw error with an invalid replacement value (bdea302)
  • endpoint-micropub: undelete action uses create scope (a308618)
  • indiekit: merge values when adding a locale (767c6dd)
  • preset-hugo: correct property key for mp-syndicate-to (656efa4)
  • preset-jekyll: correct property key for mp-syndicate-to (73475d5)


  • add store support for Gitea. fixes #100 (255be67)
  • move documentation to new website (6e9d62f)
  • add French translation (ccb0eea)
  • frontend: use commonjs modules for compatibility (cec14bb)
  • indiekit: show theme colour scheme setting on status page (becfe34)
  • endpoint-share: translate bookmarklet include on status page (0e8c701)

v0.1.0 Alpha 10

3 October 2020

Bug Fixes

  • correct time zone implementation. fixes #294 (a6f30b1)
  • improved german translation (with thanks to @afink70) (#293) (3dfdf76)


  • configurable colour scheme (7be2ba8)

v0.1.0 Alpha 9

28 September 2020

Bug Fixes

  • use timezone for path tokens (0618656)
  • endpoint-media: correct time zone handling. fixes #288 (3dc5f09)
  • endpoint-micropub: correct time zone handling. fixes #287 (7ae18c4)
  • endpoint-micropub: microformats display on post page (e758f4d)
  • frontend: unclosed div element (a515c65)

v0.1.0 Alpha 8

20 September 2020

Bug Fixes

  • make error summary title localisable (aea81a4)
  • indiekit: add missing translation string for session.logout (ddd1776)
  • indiekit: prevent log in with other URLs. fixes #283 (9c151b7)
  • application name shown on status page (7a83028)
  • locale used and shown on status page (30ba27d)


  • endpoint-share: add validation to share page. fixes #284 (31a875d)
  • endpoint-share: move url field above others (88f6d32)
  • endpoint-share: translate validation errors. fixes #285 (df5067d)
  • indiekit: add translation string for optional value (568be40)

v0.1.0 Alpha 7

19 September 2020

Bug Fixes

  • list missing files in package.json (fa48e0b)

v0.1.0 Alpha 6

18 September 2020

Bug Fixes

  • authenticate access to status page (eb42847)
  • frontend: ensure u-logo can be parsed. fixes #275 (6f3f45e)


  • customise commit message format. fixes #63 (b2e43a5)
  • internationalisation (e1eeb71)
  • redirect signed out users to sign in page. fixes #281 (7750c32)
  • reinstate time zone support. fixes #280 (21bf932)

v0.1.0 Alpha 5

6 September 2020

Bug Fixes

  • only query previously published items if saving is enabled (902d452)
  • frontend: banner text legibility with dark color scheme (4995ba3)
  • remove environment variable no longer needed to set up app on Heroku (b22224d)
  • update logging (a52b4f4)
  • endpoint-micropub: add lodash as dependency (7c9db31)
  • make dotenv a runtime dependency (0a831b0)


  • remove hosted documentation (18edd86)
  • add zero padded seconds token (c3994d)
  • add mongodbUrl to application config (fa418c7)
  • add preset and store directly to publication config (93a6677)
  • add uuid path variable. fixes #276 (6790462)
  • simplify publication config (7ef1e45)
  • move slug separator to publication settings (baa4219)
  • use uuids for secrets (48d6aa7)

v0.1.0 Alpha 4

29 August 2020

Bug Fixes

  • update media data to use published file properties (5548ee7)
  • reverse file and post listings (581f1e7)
  • improve display of files and posts (f443613)


  • log incoming requests (648c938)

v0.1.0 Alpha 3

26 August 2020

Bug Fixes

  • show correct version number in footer. fixes #269 (549fdca)


  • make needing a MongoDB database optional. fixes #264 (36cb470)

    Without MONGODB_URL environment variable, it will not be possible to store information about previously published posts of files (which means they can’t be updated), or cache any fetched files.

  • remove support for deprecated slug property. fixes #267 (dbed056)

    Indiekit now only recognises mp-slug

  • use url instead of value for media properties audio, photo, video. fixes #268 (04b27ec)
  • update presentation of file and post lists (c455c7d)

    Now includes the published URL and ensures there is text is always provided for the link

v0.1.0 Alpha 2

20 August 2020

Bug Fixes

  • update file listing in package manifests (9fe33c7)

v0.1.0 Alpha 1

19 August 2020

First alpha release for v0.1.0.

v0.0.3 – Maintenance release

27 July 2020

Bug Fixes

  • Default to create if no scope provided. Fixes #222
  • Remove Sunlit endpoint URL patch


  • Add note about TZ environment variable. Fixes #114
  • Use liquid raw tag instead of zero-width space characters. Fixes #224

v0.0.2 – Full Micropub support

22 September 2019

New features

  • Updating posts with support for replacing, adding and deleting properties
  • Basic internationalisation of public facing pages and commit messages (English and German for now)
  • New endpoint queries to get previously published posts and the last uploaded media file


  • Allow publication URLs to include a folder, i.e. https://site.example/microsite
  • Add h-x-app classes and meta information to public facing pages
  • Use @grantcodes post-type-discovery module for post type discovery
  • Update documentation and app.json to clarify required information to set up a new server

v0.0.1 – Basic Micropub support

17 August 2019

  • Creating posts using JSON or x-www-form-urlencoded syntax
  • Deleting posts with support for delete and undelete actions
  • Uploading media via media endpoint or including multipart/form-data in a request
  • Querying for configuration, source content and syndication targets. Additonal support for querying supported vocabularies.

Full test coverage and documentation.