Summary
The web product has a configurable dashboard and front wall, plus a set of sidebar widgets. The app has none, and CLAUDE.md records the layout endpoints as cookie-session-only.
Status correction — both layout endpoints now answer the bearer token
CLAUDE.md states: "GET /api/user/engagement and GET/PUT /api/user/dashboard-layout return 401 with a valid bearer token". Re-probed live 2026-09-15:
GET /api/user/dashboard-layout -> 200 {"layout":null}
GET /api/user/front-wall-layout -> 200 {"layout":null}
GET /api/user/engagement -> 200 {"totalDigs":24,"totalPushes":6,"recent":[...]}
GET /api/user also returns dashboardLayout and frontWallLayout inline. This constraint in CLAUDE.md is stale and must be corrected.
Endpoints
| Method |
Path |
Live result |
GET/PUT |
/api/user/dashboard-layout |
200 {"layout":null} |
GET/PUT |
/api/user/front-wall-layout |
200 {"layout":null} |
GET |
/api/widgets/news |
200 (Hacker News headlines) |
GET |
/api/widgets/markets |
crypto watchlist quotes |
GET |
/api/widgets/transit · /transit/stops |
transit + nearby stops |
GET |
/api/widgets/bike-share |
bike-share availability |
GET |
/api/weather · /api/location |
400 until lat/long supplied |
Priority note
This is genuinely lower value for a desktop client than the social and data pillars — it is filed for completeness and because the blocking claim turned out to be wrong.
Repo conventions to follow
- Service: one
partial class InterlinedApiClient file per domain in InterlinedList/Services/.
- Wire types in
InterlinedList/Models/ matching real API JSON.
- ViewModel per view in
InterlinedList/ViewModels/ (CommunityToolkit.Mvvm ObservableObject + [RelayCommand]).
- View is a self-contained
UserControl in InterlinedList/Views/ that news up its own VM from AppServices.Session.
- Strata tokens only — no colors/fonts/radii outside
Resources/Palette.xaml + Theme.*.xaml.
- Read-after-write for any mutating endpoint whose response envelope has not been live-verified.
Summary
The web product has a configurable dashboard and front wall, plus a set of sidebar widgets. The app has none, and
CLAUDE.mdrecords the layout endpoints as cookie-session-only.Status correction — both layout endpoints now answer the bearer token
CLAUDE.mdstates: "GET /api/user/engagementandGET/PUT /api/user/dashboard-layoutreturn 401 with a valid bearer token". Re-probed live 2026-09-15:GET /api/useralso returnsdashboardLayoutandfrontWallLayoutinline. This constraint inCLAUDE.mdis stale and must be corrected.Endpoints
GET/PUT/api/user/dashboard-layout200 {"layout":null}GET/PUT/api/user/front-wall-layout200 {"layout":null}GET/api/widgets/news200(Hacker News headlines)GET/api/widgets/marketsGET/api/widgets/transit·/transit/stopsGET/api/widgets/bike-shareGET/api/weather·/api/location400until lat/long suppliedPriority note
This is genuinely lower value for a desktop client than the social and data pillars — it is filed for completeness and because the blocking claim turned out to be wrong.
Repo conventions to follow
partial class InterlinedApiClientfile per domain inInterlinedList/Services/.InterlinedList/Models/matching real API JSON.InterlinedList/ViewModels/(CommunityToolkit.MvvmObservableObject+[RelayCommand]).UserControlinInterlinedList/Views/that news up its own VM fromAppServices.Session.Resources/Palette.xaml+Theme.*.xaml.