/indiekit

Indiekit is the little server that connects your personal website to the independent web.

Primary LanguageJavaScriptMIT LicenseMIT

Indiekit

Build status

Indiekit is a small but powerful server that acts as the go-between your website and the wider independent web.

  • Publish content to your website using apps like iAWriter, Micro.blog, Icro, Indigenous or services that support the Micropub API

  • Syndicate your content to social networks like Twitter and Mastodon, and save posts to the Internet Archive

  • Accept likes, comments and other types of feedback on your content with Webmention

  • Save files to different content stores such as Bitbucket, GitHub, GitLab and Gitea

  • Highly configurable, with presets available for common static site generators such as Jekyll and Hugo.

  • Localisable, with initial support for English, Dutch, French, German and Portuguese.

Features

  • Create, update and delete posts
  • Upload files
  • Configure different post types
  • Accept post status and visibility
  • Review previously published posts and files
  • Bookmarklet to save and share bookmarks
  • Publish to different content stores
  • Support for popular static site generators (Jekyll, Hugo, 11ty)
  • Localised to different languages
  • Plug-in API

Requirements

  • Node.js v16+

Install

npm install @indiekit/indiekit

Learn how to set up an Indiekit server and view an example server configuration.

Local development

npm start

If you’re developing a new feature, and want the application to automatically restart whenever a file change is detected, use npm run dev.

Testing

npm test

The following environment variables need to be set before running tests:

  • TEST_TOKEN
  • TEST_TOKEN_CREATE_SCOPE
  • TEST_TOKEN_NO_SCOPE
  • TEST_PUBLICATION_URL
  • TEST_SESSION_SECRET

TEST_TOKEN, TEST_TOKEN_CREATE_SCOPE and TEST_TOKEN_NO_SCOPE provide IndieAuth access tokens whose me value matches that set in TEST_PUBLICATION_URL.TEST_TOKEN should provide scope for create update delete, TEST_TOKEN should provide scope for create and TEST_TOKEN_NO_SCOPE should provide no scope at all.

Homebrew Access Token is a useful tool for creating access tokens for this purpose.

Decisions

Architectural decisions made on this project are documented using Architecture Decision Records, as described by Michael Nygard. These can be found in /docs/decisions.

Credits

Developed by Paul Robert Lloyd.

Thank-you to Aron Carroll for mentoring me during the development of this project. Indiekit is a much better project for his feedback and advice.

Similar projects

Indiekit is inspired by similar projects made by members of the IndieWeb community, all of which you are encouraged to try: