Shoe Maker's Shoes
My portfolio website itself is a "work" on it's own accord, I'm proud to claim. While there's always room for improvement, I feel I've satisfied the main goal of a crisp-and-clean portfolio.
Simple on first glance, a lot of attention was paid towards nuance & detail and I hope this is apparent to viewers, like you!
Technical features
- Nuxt framework
- Nuxt UI & Tailwind 4
- Content is git-based; no external database needed
- Image cache layer via imgix, with AWS S3 origin
- Search engine leverages SQLite and fuse.js
- Hosted on nuxthub/cloudflare
- Monthly operational cost: $0.00, roughly
Framing
As a front-end framework, Nuxt was an easy choice as I'm very intimate with it and can be used to build anything. In addition, Nuxt UI has had a new major release, leveraging Tailwind 4. Lots of new shiny things to play with!
DB vs "DB"
For my portfolio, I need the benefits of a database (structure, search, etc), but don't want the overhead (cost, time, etc). Moreover, my data is super light (~30 pages, and possibly 10-100 blog posts over time) and most importantly... it's not dynamic. My portfolio data, once set, will rarely change.
Enter: git-based content.
Leveraging the Nuxt Content module, which introduces a git-based content system for Nuxt apps, I'm able to store-and-manage large amounts of data in the very same repo as the website code; no classic external database needed.
In addition, the module leverages SQLite which is instanced locally in a client browser on initial app load. On page load, a single data dump file (e.g. 300kb) is dynamically downloaded for each and any relevant content types on that page; a negligible download by modern web standards. The killer advantage here is that essentially, once in my portfolio, as the user browses pages, the pages more-or-less appear instantly.
Previous Version (2020)
My old portfolio was built using WordPress, and although a powerful and capable platform, I've had enough of associated nightmares. More modern technologies are much more appealing. Finally, my website truly does not need a classic database, so there's not much need for a full-blown CMS like WordPress.
Old portfolio tech features
- Custom WP theme
- MVC structure, using WP Timber
- Custom content types and ACF integration