A module marketplace listing where the free or paid tag is derived, not claimed
- Dominant language
- C#
- Stars
- 6
- Forks
- 7
- Avg merge
- 4h 21m
- Merged PRs (30d)
- 307
Description
One list of modules, each tagged free or paid, ours alongside everybody else's. The Umbraco marketplace shape.
## What already exists
- `barakocms-module` on nuget.org is the discovery mechanism, and one search returns every module (`Directory.Build.props:27-30`).
- `ModuleCatalogue` and `GET /api/modules` report what an instance has installed and which of those are running.
- barakoBrew#16 proposes a Modules screen that reads that endpoint and shows a NuGet strip below it.
So discovery works and the instance-side view is designed. The gap is the public listing.
## What to build
A page listing every module, with:
- **A free or paid tag**, from a declared source rather than a guess.
- Who publishes it, which contract version it targets, and which barakoCMS versions it supports.
- For a paid module, where to buy it. The listing does not take payment.
## The question that decides the design
**Where does the paid or free tag come from?**
1. **A NuGet tag**, such as `barakocms-module-paid`. Zero infrastructure, and anybody can claim any tag, including claiming free while requiring a licence.
2. **The licence declaration in the package**, read from the module's own metadata. Truthful by construction, since it is the same declaration core enforces at startup. Depends on the licensing primitive existing.
3. **A curated submission**, which is what Umbraco does. Most control, most ongoing work, and it is a job somebody has to keep doing.
Option 2 is the one consistent with how this project works: the tag is not a claim, it is derived from the thing that is actually enforced. It also means a vendor cannot list as free and then demand a key.
## Two things worth deciding out loud
**Ours are listed the same way as everybody else's.** Same page, same fields, no preferential placement. If a community Xero connector appears next to ours, that is the marketplace working. We win on maintenance and support or we do not deserve to win.
**Publish which commercial modules we intend to build.** Somebody will otherwise spend two months on a connector we ship the week after. Saying the list out loud costs nothing and is the difference between a contributor and an ex-contributor.
## Done when
- A public page lists modules from nuget.org with the free or paid tag derived from the package.
- Ours have no special treatment in the listing.
- The intended commercial list is published somewhere a contributor will see it before starting.
Contributor guide
Research direction
Start with Directory.Build.props:27-30, then read ModuleCatalogue and GET /api/modules to understand the existing module data and discovery flow. Resolve where the enforced licence declaration is exposed before designing the public listing; done means a public NuGet-backed page shows free or paid status, publisher, contract and supported versions, purchase links, and the intended commercial list without preferential treatment.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- web-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100