This file quickly explains the architecture of my website (calebden.io): the technologies behind it, and the reason I chose them!
- cjdenio/site-frontend - The site's frontend, built with Nuxt.js and hosted on Vercel.
- cjdenio/site-backend - The site's backend, based on Strapi with some heavy customization.
My website's frontend was built on Nuxt.js, a framework based Vue.js that offers intuitive routing, state management, and plugin support.
The UI components themselves were all built by hand, though I rely on a few libraries to provide core functionality:
- Font Awesome
- Apollo
The site's backend was based on Strapi, a headless CMS built to be extendable and powerful. It serves a GraphQL endpoint (check it out here!), consumed by the frontend.
Strapi supports a number of database providers, but I chose to use Postgres.
The little Spotify widget you see at the bottom is powered by a custom Strapi extension, which fetches the currently playing song on a cron job and caches it in a Redis datastore.
Finally, for media storage, I run a self-hosted MinIO instance, alongside a provider that integrates it with Strapi.
The frontend runs on Vercel, mostly because it's free (and I like free 😜) As for the backend, it's powered by a $10/mo. DigitalOcean droplet running Docker and CapRover! At the moment I'm running 4 seperate services relating to the site's backend: Strapi, Postgres, Redis, and MinIO.
Finally, I run a small link shortener at clb.li. It was written in Go (source over here), and uses a persistent Redis instance for storage.
Some links you can visit: