Skip to content

Instantly share code, notes, and snippets.

@cjdenio
Last active March 13, 2021 00:10
Show Gist options
  • Save cjdenio/b99bf8ca7937ab1a402d366aab3ae725 to your computer and use it in GitHub Desktop.
Save cjdenio/b99bf8ca7937ab1a402d366aab3ae725 to your computer and use it in GitHub Desktop.

Caleb Denio's Website

This file quickly explains the architecture of my website (calebden.io): the technologies behind it, and the reason I chose them!

Repositories

Frontend

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:

Backend

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.

Hosting

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.

Link Shortener

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:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment