Endpoint Architecture
Every RepoSell-enabled repository exposes its protocol under one reserved namespace:
/reposell/
Generated structure
/reposell/
│
├── index.json # Protocol discovery (start here)
├── manifest.json # Canonical repository manifest
├── health.json # Current health state
│
├── sell/
│ └── index.html # Direct seller interface
│
├── listing/
│ └── index.html # Optional listing UI
│
└── releases/
├── index.json # Release catalog
│
├── v1.0.0/
│ ├── manifest.json # Immutable per-release config
│ └── health.json # Per-release health
│
└── v1.1.0/
├── manifest.json
└── health.json
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Each release carries its own immutable commercial configuration — see Release model.
/reposell/index.json
The simplest possible machine discovery document:
{
"protocol": "reposell",
"version": "1",
"manifest": "/reposell/manifest.json",
"health": "/reposell/health.json",
"sell": "/reposell/sell/",
"listing": "/reposell/listing/",
"releases": "/reposell/releases/index.json"
}
2
3
4
5
6
7
8
9
A listing does not need to know the repository's internal architecture. It only needs:
GitHub Repository
↓
GitHub Pages
↓
/reposell/index.json
↓
/reposell/manifest.json
2
3
4
5
6
7
This also allows the repository owner to change their application without breaking RepoSell.
Namespace isolation
CI owns exactly one path — /reposell/** — and must never overwrite arbitrary repository files:
Developer files RepoSell generated files
│ │
├── src/ └── reposell/
├── docs/
├── README.md
└── package.json
2
3
4
5
6
This separation is what makes the integration safe to adopt in any project: RepoSell can regenerate everything under its namespace on every deploy without touching yours.
Private repositories
The public protocol never depends on reading a private repository directly. The discovery surface is GitHub Pages. A repository can remain private while its generated /reposell/* pages are public, subject to hosting configuration. Private source code is never exposed by the RepoSell manifest.