stack
node.js + expressserver, auth, api proxy
vanilla jsno framework, no build step
claude apisonnet model, server-side only
digitaloceanapp platform, push-to-deploy
githubprivate repo, main = production
how the ai works
- You entered a password. The server checked it and issued a session token.
- When you send a message, it goes to the server — not directly to Anthropic.
- The server validates your token, reads a markdown file containing Andrew's briefing, then calls Claude with your message and the full briefing.
- The response comes back through the server. The API key never touches your browser.
the system prompt
Lives in a markdown file in the repo. Editing it and pushing to GitHub updates the AI's behaviour within ~2 minutes. No code changes needed. The AI reads it fresh on every message.
why these choices
vanilla jsa portfolio shouldn't need a framework to justify its existence
monospaceone font. fewer decisions. more signal.
server proxyyour api key shouldn't be in someone's browser console
shared pwit's a portfolio, not a bank. if it leaks, change it.
markdown prompteditable without touching code. separation of content from logic.