What is self-hosted, what is stored, and where data goes.
The site now makes its privacy story explicit instead of assuming visitors will infer it from the infrastructure pitch.
Self-hosted by default
The portfolio, AI endpoints, and most supporting services are designed to run on infrastructure Nick owns. That is part of the point, not just a background implementation detail.
AI chat data
The chat UI stores recent conversation history in browser localStorage to make page-level conversations persistent for the visitor. Requests are proxied through tinyblue backend endpoints to the configured self-hosted model infrastructure.
Contact form data
The contact form sends inquiry details to a tinyblue backend endpoint, validates the request, and forwards it by email when possible. Submissions are rate-limited and include a honeypot field to cut down on spam.
Third-party minimization
The site removed its dependency on a third-party GitHub contribution API in a recent refresh. The public profile link remains, but tinyblue.dev no longer relies on another service for that visual proof section.
Analytics
No third-party analytics scripts run on this site. Apache access logs are retained on the operator's infrastructure for diagnostic purposes only and are not shared with vendors or ad networks.
Cookies and storage
The only browser storage in use is the tb_theme
localStorage key (to remember light/dark preference) and chat
history scoped to the chat widget. No tracking cookies.
Privacy reinforces trust, then points back into the product story.
Once the architecture and data handling are clear, the next move should be obvious.