The little Node.js server with all the parts needed to publish content to your personal website and share it on social networks. https://getindiekit.com
  • JavaScript 83.5%
  • Nunjucks 10.7%
  • CSS 5.6%
  • HTML 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ricardo 98dbd80068 fix(endpoint-webmention-io): cope with authors without a photo or a valid URL
The list rendered an empty avatar for an author with no photo, and
threw when an author URL didn’t parse even though a name was given.
Also time out the webmention.io request after 15 seconds.

Fixes #934
2026-09-05 20:47:34 +01:00
.github ci: test against monggodb v8 2026-08-23 14:21:05 +01:00
.husky chore: migrate to husky v9 2024-04-23 22:58:23 +01:00
docs docs: say how to quote PASSWORD_SECRET for Docker Compose and direnv 2026-09-05 19:56:17 +01:00
helpers test: use getMongodbClient utility method 2026-08-17 00:06:46 +01:00
packages fix(endpoint-webmention-io): cope with authors without a photo or a valid URL 2026-09-05 20:47:34 +01:00
types/express chore: add type checking in jsdoc 2023-05-26 23:28:39 +01:00
.commitlintrc.json style: use prettier 2022-02-10 23:21:57 +00:00
.editorconfig style: always remove final new line for locale files 2025-12-24 19:48:28 +00:00
.env.example chore: make the development environment work from a clean checkout 2026-08-25 10:14:17 +01:00
.gitignore chore: ignore .envrc 2024-06-08 17:11:49 +01:00
.lintstagedrc.json style: format json files with prettier 2023-07-09 00:27:37 +01:00
.nvmrc chore: pin undici to minimum node version 2026-07-04 10:58:51 +01:00
.prettierignore chore: make the development environment work from a clean checkout 2026-08-25 10:14:17 +01:00
.stylelintrc.json ci: ignore built _site folder when linting 2023-07-16 16:35:32 +01:00
CHANGELOG.md v1.0.0-beta.29 2026-08-16 23:22:42 +00:00
compose.yml chore: make the development environment work from a clean checkout 2026-08-25 10:14:17 +01:00
eslint.config.js feat(bitbucket): update authentication method, use fetch 2026-07-04 13:41:53 +01:00
indiekit.config.js style: unicorn/no-top-level-side-effects 2026-06-30 23:18:36 +01:00
jsconfig.json chore: update compiler target in jsconfig 2025-12-05 23:22:40 +00:00
lerna.json v1.0.0-beta.29 2026-08-16 23:22:42 +00:00
LICENSE feat: file cache service 2020-05-19 19:00:29 +01:00
localazy.json feat(endpoint-webmention-io): webmention.io endpoint 2024-12-25 22:42:05 +00:00
package-lock.json chore: update dependencies 2026-09-05 21:36:28 +02:00
package.json chore: update dependencies 2026-09-05 21:36:28 +02:00
README.md style: use [!WARNING] to match the callouts used elsewhere in the docs 2026-08-23 14:18:36 +01:00
SECURITY.md docs: add security policy 2026-08-16 17:09:31 +01:00

Indiekit

Indiekit logo.

Build status

Meet Indiekit, the little Node.js server with all the pieces needed to share your content with the open, independent web.

Indiekit’s application management interface.

Sponsors

Indiekit is supported by its community. Special thanks to:

Kevin YankAbhas Abhinav

Features

  • Publish content to your website using apps and services that support the Micropub API
  • Save files to a content store such as GitHub, an FTP server or S3 object storage
  • Integrate with static site generators like Eleventy, Hugo or Jekyll
  • Share content on social networks like Bluesky and Mastodon
  • Customise everything from the interface theme to the format of commit messages

Indiekit is extensible via its plug-in API and localized for use in a growing number of languages.

Requirements

  • Your own website, published using a static site generator
  • Node.js v24.17+

A MongoDB database is optional, but required for the following features to work:

  • Viewing, editing, deleting and restoring previously published posts
  • Syndicating posts
  • Viewing and deleting previously uploaded media files

Warning

Use a currently supported MongoDB release. Version 4.4.29 and earlier — which includes the mongo:4 Docker tag — are affected by CVE-2025-14847 (“MongoBleed”), an unauthenticated remote memory disclosure that can leak credentials and access tokens. It is fixed in 4.4.30, 5.0.32, 6.0.27, 7.0.28, 8.0.17 and 8.2.3.

MongoDB has been licensed under the SSPL since v4.0.4. If you would rather not run SSPL-licensed software, FerretDB is an Apache-2.0 licensed database that implements the MongoDB wire protocol (it has not been tested with Indiekit). Note that v4.0.3, the last openly licensed MongoDB release, predates the fix above and should not be used.

Get started

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

Documentation website

The documentation website is generated using VitePress. To view this site locally:

  1. Install this project’s dependencies: npm install
  2. Start the Vite server: npm run docs:dev
  3. View the documentation: http://127.0.0.1:5173

The browser will refresh to reflect any changes you make to the documentation.

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.

Releasing

Lerna is used to manage and publish packages from this monorepo via a trusted publishing workflow.

Contributing

Read about the different ways you can contribute to this project.

Credits

Developed by Paul Robert Lloyd.

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

Similar projects

Indiekit is inspired by similar projects made by members of the IndieWeb community: