Developer Documentation
Public and authenticated API endpoints for the portfolio. All public endpoints return JSON and require no authentication. The MCP endpoint lets AI agents manage content programmatically.
Lightweight health-check endpoint for Docker, Coolify, and uptime monitors. No DB query — if the process can answer, the Node runtime is up.
{ "status": "ok", "timestamp": "...", "version": "1.0.0", "uptime": 3600 }Public portfolio statistics — content counts (projects, posts, skills), engagement metrics (total views), infrastructure status, and featured projects. Perfect for dashboards, badges, and AI agent context.
{ "brand": {...}, "content": {...}, "engagement": {...}, "infrastructure": {...} }List all published case study projects with tech stack, timeline, engagement value, and live URLs.
List all published blog posts with category, tags, reading time, and view counts.
List all published service offerings with deliverables, pricing, and timelines.
List all published FAQ entries grouped by category.
List all tech skills grouped by category with proficiency levels.
Live server infrastructure metrics — server name, region, status, latency, uptime, active connections.
This documentation as a JSON catalog (machine-readable format for AI agents and integrations).
RSS 2.0 feed for blog posts. Standard XML format for traditional feed readers. Includes title, link, description, pubDate, and category tags for each published post.
JSON Feed 1.1 for blog posts. Modern alternative to RSS. Includes title, url, summary, date_published, tags, and reading time for each published post.
Submit a contact/qualification form. Validates name, email, bottleneck, project type, timeline, and budget. Stores as ContactSubmission.
Subscribe to the newsletter. Validates email, deduplicates, sets active=true.
MCP (Model Context Protocol) Streamable HTTP endpoint. 39 tools for managing portfolio content — create projects, publish blog posts, update site config, and more. Rate limited: 120 req/min per token. Audit logged.
Webmention endpoint (W3C spec). Receive notifications when another site links to this one. Accepts form-encoded or JSON with source and target URLs. Verifies the link synchronously. Rate limited: 10 req/min.
Pingback endpoint (XML-RPC fallback to Webmention). Accepts XML-RPC, JSON, or form-encoded with source and target URLs. Stores pingback for processing. Rate limited: 10 req/min.
Public list of approved webmentions and pingbacks for a target URL. Query param: target (URL). Only returns approved mentions. Used by blog post pages to display incoming mentions.
/api/admin/* Admin session (NextAuth)Admin CRUD APIs for all content types. Requires authenticated admin session. Not publicly accessible.
The portfolio exposes a Model Context Protocol server at /api/mcp that lets AI agents (Claude Desktop, Cursor, custom scripts) manage content programmatically — create projects, publish blog posts, update site config, and more.
/api/stats$ curl https://sharif.dev/api/stats/api/mcp$ curl -X POST https://sharif.dev/api/mcp \ -H "Authorization: Bearer snmcp_YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Use the Try button on any GET endpoint above to fetch a live response directly in your browser.
All endpoints return JSON. Public endpoints are cached where appropriate. Rate-limited endpoints return 429 with a Retry-After header.
Back to portfolio