Developers
bshp.io is a personal portfolio. These surfaces exist so agents and tooling can read projects, articles, and stack data without scraping HTML. This is not a multi-tenant product: no API keys, no sandbox, no MCP server, no webhooks.
What you can do
Fetch public JSON under /api/v1/, read
/llms.txt
for a site map, or load
/openapi.json
for the schema. All of that is built at deploy time from the same
content collections as the HTML pages.
Machine surfaces
-
Plain-text map of the site for agents: summary, human pages, and machine URLs. Lists stay current with content collections at build time.
-
OpenAPI 3.1 document for the public GET endpoints under /api/v1/. Contact is described only as out of scope for integrations.
-
Static JSON: projects, published articles, and stack. No auth. Detail routes include markdown bodies; list routes are metadata only. Built as *.json files; extensionless paths rewrite on Cloudflare Pages.
-
Projects and published articles as an Atom/RSS feed.
-
Crawl map generated by @astrojs/sitemap at build time.
JSON endpoints
-
GET/api/v1Endpoint index. Static file: /api/v1.json Extensionless path rewrites on Cloudflare Pages only.
-
GET/api/v1/projectsProject list. Static file: /api/v1/projects.json Extensionless path rewrites on Cloudflare Pages only.
-
GET/api/v1/projects/{slug}Project detail + body. Static file:
/api/v1/projects/{slug}.jsonExtensionless path rewrites on Cloudflare Pages only. -
GET/api/v1/articlesPublished articles only. Static file: /api/v1/articles.json Extensionless path rewrites on Cloudflare Pages only.
-
GET/api/v1/articles/{slug}Article detail + body. Static file:
/api/v1/articles/{slug}.jsonExtensionless path rewrites on Cloudflare Pages only. -
GET/api/v1/stackModels and tools. Static file: /api/v1/stack.json Extensionless path rewrites on Cloudflare Pages only.
Absolute base: https://bshp.io/api/v1
(or /api/v1.json
)