Skip to content

feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline#829

Open
rmdes wants to merge 3 commits into
getindiekit:feat/microsubfrom
rmdes:microsub/pr1-core-channels-timeline
Open

feat(endpoint-microsub): PR 1 - Core Microsub server with channels and timeline#829
rmdes wants to merge 3 commits into
getindiekit:feat/microsubfrom
rmdes:microsub/pr1-core-channels-timeline

Conversation

@rmdes

@rmdes rmdes commented Feb 1, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds the foundational Microsub endpoint with channel and timeline management.

What's included

Microsub API:

  • GET/POST ?action=channels - list, create, update, delete, reorder channels
  • GET/POST ?action=timeline - list items, mark read/unread, remove

Storage:

  • MongoDB collections for channels and items
  • Cursor-based pagination for timeline
  • Per-user channel ordering and read state tracking

Features:

  • Follows Microsub spec for channel and timeline actions
  • Testable with existing Microsub clients (Monocle, Indigenous, etc.)
  • Multi-user support via userId from session/token

How to test

  1. Enable the plugin in your Indiekit config
  2. Use a Microsub client like Monocle pointed at your /microsub endpoint
  3. Or test via curl:
# List channels
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://your-site.com/microsub?action=channels"

# Create a channel
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  -d "action=channels&name=Tech News" \
  "https://your-site.com/microsub"

# Get timeline (will be empty until feed fetching is added in PR 3)
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://your-site.com/microsub?action=timeline&channel=CHANNEL_UID"

PR breakdown

This is PR 1 of 6 for the Microsub implementation:

  • PR 1 (this): Core + Channels + Timeline API ← functional Microsub server
  • PR 2: Feed discovery and subscription
  • PR 3: Feed fetching and parsing
  • PR 4: Reader UI
  • PR 5: Compose and Micropub integration
  • PR 6: Settings and filtering

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com

@paulrobertlloyd paulrobertlloyd force-pushed the microsub/pr1-core-channels-timeline branch from c50cd1e to ee6ae94 Compare July 4, 2026 14:28
@paulrobertlloyd paulrobertlloyd force-pushed the microsub/pr1-core-channels-timeline branch from ee6ae94 to ae01604 Compare July 4, 2026 14:39
@paulrobertlloyd

paulrobertlloyd commented Jul 4, 2026

Copy link
Copy Markdown
Collaborator

Hi @rmdes. Firstly, sorry it’s taken me so long to get back to you on this; life got in the way. I should hopefully now have some time to review/collaborate on this feature.

I’ve pushed two extra commits:

  1. Added the plug-in to the development config so that when running the application locally the plugin is available; once the plugin is completed, we can possibly make it a plugin that ships by default with Indiekit, and then not need to add it here.
  2. Added an icon for the plug-in, using the icon for Microsub.

Before merging this into main, might we be able to do the following:

  1. Add unit and integration tests (see other endpoints for examples)
  2. Run and fix issues reported by npm run lint (I recently updated eslint’s rules so there are a few new errors)

Thanks again for your patience, looking forward to getting this contribution into Indiekit!

@paulrobertlloyd paulrobertlloyd force-pushed the microsub/pr1-core-channels-timeline branch 2 times, most recently from d04ba60 to 8dfa381 Compare July 4, 2026 15:35
rmdes and others added 3 commits July 4, 2026 16:40
…imeline

This PR adds the foundational Microsub endpoint with:

**Microsub API:**
- GET/POST ?action=channels - list, create, update, delete, reorder channels
- GET/POST ?action=timeline - list items, mark read/unread, remove

**Storage:**
- MongoDB collections for channels and items
- Cursor-based pagination for timeline
- Per-user channel ordering and read state tracking

**Features:**
- Follows Microsub spec for channel and timeline actions
- Testable with existing Microsub clients (Monocle, Indigenous, etc.)
- Multi-user support via userId from session/token

This is PR 1 of 6 for the Microsub implementation. Future PRs will add:
- PR 2: Feed discovery and subscription
- PR 3: Feed fetching and parsing
- PR 4: Reader UI
- PR 5: Compose and Micropub integration
- PR 6: Settings and filtering

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@paulrobertlloyd paulrobertlloyd force-pushed the microsub/pr1-core-channels-timeline branch from 8dfa381 to 5e0b783 Compare July 4, 2026 15:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants