Homepage builder endpoint for Indiekit. Configure layout, sections, and sidebar widgets from the admin UI.
  • Nunjucks 69.6%
  • JavaScript 30.4%
Find a file
Ricardo 30131b68e4 feat: add excludeTypes config UI for recent-posts sections
The recent-posts section now has an Edit panel in the homepage builder
with checkboxes to exclude post types (reply, like, bookmark, repost,
photo, article, note) and a max items input. Config preview shows
current settings in the section list.

Bump version to 1.0.24.
2026-03-26 16:25:19 +01:00
lib feat: add identity editor with 3-tab admin interface 2026-02-25 08:55:08 +01:00
locales i18n: add 40 missing identity/tabs keys across all locales 2026-03-21 12:46:35 +01:00
views feat: add excludeTypes config UI for recent-posts sections 2026-03-26 16:25:19 +01:00
CLAUDE.md docs: add CLAUDE.md and README.md 2026-02-13 18:22:22 +01:00
index.js feat: add ai-usage as built-in homepage section 2026-03-06 12:35:50 +01:00
package.json feat: add excludeTypes config UI for recent-posts sections 2026-03-26 16:25:19 +01:00
README.md docs: add CLAUDE.md and README.md 2026-02-13 18:22:22 +01:00

@rmdes/indiekit-endpoint-homepage

Homepage builder endpoint for Indiekit. Provides a visual admin UI for configuring your site's homepage layout, content sections, sidebar widgets, and footer columns.

Features

  • Layout options — Single-column, two-column, or full-width hero layouts
  • Drag-and-drop sections — Arrange content sections from any registered plugin
  • Sidebar widgets — Author card, search, categories, blogroll, social activity, and more
  • Footer columns — Up to 3 configurable footer columns
  • Layout presets — Quick-start presets for Blog, CV/Portfolio, or Hybrid layouts
  • Plugin discovery — Automatically discovers sections/widgets from other Indiekit plugins

Installation

npm install @rmdes/indiekit-endpoint-homepage

Configuration

Add to your indiekit.config.js:

import HomepageEndpoint from "@rmdes/indiekit-endpoint-homepage";

const homepage = new HomepageEndpoint({
  mountPath: "/homepage",
  contentDir: "/app/data/content"
});

export default {
  plugins: [homepage],
  // ... other config
};

Usage

Once installed, navigate to /homepage in your Indiekit admin panel. The homepage builder lets you:

  1. Choose a layout — Select single-column, two-column, or full-width hero
  2. Apply a preset — Quick-start with Blog, CV/Portfolio, or Hybrid
  3. Add sections — Drag content sections into the main area
  4. Configure sidebar — Add widgets to the sidebar (two-column layout)
  5. Set up footer — Add up to 3 footer columns

Changes are saved to MongoDB and written as a JSON file that triggers an Eleventy rebuild.

Plugin Discovery

The homepage builder automatically discovers content sections and sidebar widgets from other installed Indiekit plugins. Any plugin that exports homepageSections or homepageWidgets will have its sections available in the builder.

Registering Sections from Your Plugin

class MyEndpoint {
  get homepageSections() {
    return [
      {
        id: "my-section",
        label: "My Section",
        description: "Displays my content",
        dataEndpoint: "/my-plugin/api/data.json"
      }
    ];
  }
}

Built-in Content

Sections

  • Hero — Author intro with avatar, name, and bio
  • Recent Posts — Latest posts from your site
  • Custom HTML — Freeform content block

Widgets

  • Author Card — h-card with author info
  • Recent Posts — Latest posts sidebar
  • Categories — Tag cloud
  • Search — Site search box
  • Social Activity — Bluesky/Mastodon feeds
  • GitHub Repos — Featured repositories
  • Funkwhale — Listening activity
  • Blogroll — Blog recommendations

Integration

With indiekit-eleventy-theme

The theme reads homepage.json (generated by this plugin) to render the configured homepage layout. No additional theme configuration is needed.

With indiekit-endpoint-cv

The CV plugin registers 5 homepage sections: experience, skills, education, projects, and interests. Install both plugins to build a CV-style homepage.

With other plugins

Any plugin that exports homepageSections or homepageWidgets is automatically discovered:

  • @rmdes/indiekit-endpoint-github — GitHub activity
  • @rmdes/indiekit-endpoint-funkwhale — Funkwhale listening
  • @rmdes/indiekit-endpoint-lastfm — Last.fm scrobbles
  • @rmdes/indiekit-endpoint-blogroll — Blogroll
  • @rmdes/indiekit-endpoint-podroll — Podcast roll
  • @rmdes/indiekit-endpoint-youtube — YouTube videos

API Endpoints

Endpoint Auth Description
GET /homepage/api/config.json Public Current homepage configuration
GET /homepage/api/sections Protected List all available sections
GET /homepage/api/widgets Protected List all available widgets

License

MIT