source-cooperative / source-cooperative/source.coop

[Proposed Feature] Add published_at field and publish action to RSS feed

Open
#285 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
26
Forks
9
Avg merge
1d 7h
Merged PRs (30d)
42

Description

Background

An RSS feed exists at /feed.xml but currently includes all public products sorted by created_at. Since products are set to visibility: "public" at creation time, the feed surfaces empty products immediately — before any data has been uploaded or the owner considers them ready.

Proposed solution

Add a published_at timestamp to the product schema. Owners explicitly publish a product via a button in the product edit UI, which sets published_at once and never overwrites it. The feed is updated to:

  • Only include products where published_at is set
  • Sort by published_at
  • Use dynamic base URL (fixing the existing hardcoded https://source.coop)

Open question

This would require us to change our product creation flow to some extent. Publishers would create a product, describe it, upload content to it, and then decide to publish it. We currently allow this passively through the "unlisted" option, but it's not quite the same. I think one way to think about this is that it's similar to the process of publishing a video on YouTube in which one uploads the content, creates a title and description for it, and then decides when to "publish."

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the /feed.xml entry point, the product schema, and the product edit UI. Trace the current creation and visibility flow, then define the publish action and its interaction with product data. Done means products publish explicitly, the feed filters and sorts by published_at, and its base URL is dynamic.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.