https://github.com/kiarashplusplus/adl-resume
Portfolio website
https://github.com/kiarashplusplus/adl-resume
Last synced: 11 days ago
JSON representation
Portfolio website
- Host: GitHub
- URL: https://github.com/kiarashplusplus/adl-resume
- Owner: kiarashplusplus
- License: mit
- Created: 2025-11-29T14:58:21.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2026-05-12T05:55:47.000Z (about 1 month ago)
- Last Synced: 2026-05-12T06:35:31.235Z (about 1 month ago)
- Language: TypeScript
- Homepage: https://25x.codes/
- Size: 2.13 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Kiarash Adl Portfolio
AI-enabled portfolio with MCP (Model Context Protocol) integration, allowing AI agents to query projects, skills, and experience programmatically.
## 🚀 Tech Stack
- **Frontend:** React, TypeScript, Vite, Tailwind CSS, Framer Motion
- **Backend:** Cloudflare Pages Functions
- **MCP:** JSON-RPC protocol with Ed25519 signed manifests
## 🛠️ Development
```bash
npm install
npm run dev
```
## 📄 Updating the Resume PDF
The resume is served from a **permanent, un-hashed URL** so external links never break:
- Local file: `public/Kiarash-Adl-Resume.pdf`
- Public URL: `https://25x.codes/Kiarash-Adl-Resume.pdf`
To update the resume, simply replace that single file and redeploy. No code changes are needed.
```bash
cp /path/to/new-resume.pdf public/Kiarash-Adl-Resume.pdf
npm run build # optional, just to sanity-check
git commit -am "Update resume PDF"
git push # Cloudflare Pages auto-deploys
```
> Do **not** import the PDF from `src/` — that path goes through Vite's asset pipeline and gets a content hash like `Kiarash-Adl-Resume-20251129-DFXsl4HJ.pdf`, which changes on every content update and breaks any link that points at it.
## 🤖 MCP Integration
This portfolio implements the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/), enabling AI agents to interact with the portfolio programmatically.
### Endpoints
- **Discovery:** `/.well-known/mcp.llmfeed.json`
- **Invoke:** `/mcp/invoke`
### Available Tools
| Tool | Description |
|------|-------------|
| `submit_contact` | Send a message directly to Kiarash's inbox |
| `run_terminal_command` | Execute terminal commands (about, skills, projects, contact, experience, resume, help) |
| `get_project_details` | Get details about specific projects (bayan, fiml, aligna, aivision) |
### Usage Example
AI agents can discover capabilities and invoke tools using JSON-RPC 2.0:
```bash
# Discover MCP capabilities
curl -s "https://25x.codes/.well-known/mcp.llmfeed.json"
# Send a message to Kiarash
curl -s -X POST "https://25x.codes/mcp/invoke" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "submit_contact",
"arguments": {
"name": "Your Name",
"email": "your@email.com",
"message": "Hello, fellow code explorer!"
}
},
"id": 1
}'
# Run a terminal command
curl -s -X POST "https://25x.codes/mcp/invoke" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "run_terminal_command",
"arguments": {
"command": "about"
}
},
"id": 1
}'
```
### For AI Agents
Point your AI agent to the MCP manifest at:
```
https://25x.codes/.well-known/mcp.llmfeed.json
```
The manifest includes:
- Tool schemas with input/output definitions
- Agent guidance for interaction patterns
- Ed25519 signed blocks for verification
## 📄 License
MIT