This project is the website you are currently using.
It started as a straightforward portfolio and gradually became a small publishing system for professional work, independent projects, photography, and the other things I want to keep around. Rather than maintaining every page by hand, I built structured content models around the parts of the site that change and kept the more personal, editorial parts intentionally static.
The public application is built with React, TypeScript, and Vite. Supabase provides structured content, PostgreSQL persistence, authentication for the local administration interface, and Row Level Security for the public data boundary. Work, projects, photography, and other published records can be managed independently without exposing privileged administrative access through the deployed site.
Because much of that content originates in the database, the production build prerenders published routes into substantive HTML before deployment. The result is a hybrid architecture: database-managed content remains dynamic from an authoring perspective while search engines and visitors receive route-specific HTML, metadata, canonical URLs, structured data, and sitemap entries without depending entirely on a client-side fetch.
The site has also become an ongoing design exercise. Professional work, technical experiments, photography, and personal writing all need different amounts of structure, so the shared system establishes typography, navigation, accessibility, responsive behavior, theming, and deployment conventions without forcing every section into the same presentation.
And yes, this means this.projectName contains a project entry describing this.projectName.