This website is 100% hand-crafted, natural, and organic. Let's take a look at what tech I'm using here, and how all of this stuff works together. Some of the items mentioned below are also outlined in my
For those impatient, here's the
I'll talk about the MetaCard above in more detail a bit later.
Let's start with the most basic thing. I'm using TypeScript and React for pretty much everything you see here. Even though I don’t use many of its more advanced features, sometimes it’s really handy to be able to type things, even for such a small project as this.
export interface BlogPost extends SanityDocument { slug: { current: string }; title: string; summary: Block[]; publishedAt: string; coverImage: SanityImageAssetDocument; body: Block[]; summaryRaw: string; bodyRaw: string; estimatedReadingTime: number; location?: { lat: number; lng: number; }; categories: { title: string; description: Block[] | string; slug: { current: string }; }[]; references?: Omit<BlogPost, 'references'>[]; comments: BlogComments[]; }
I really, really enjoy TypeScript. When I first encountered a strictly-typed language during my short stint at Microsoft, I had to adapt very quicklyScript. When I first encountered strictly-typed language during my short stint at Microsoft, I had adapt to really quickly . C# was a revelation, and I’ve been a fan of TypeScript ever since.
As for React, it’s comfort and familiarity, I guess. Oh, and it’s the default for my first list item here:
This entire site is powered by Next.js. As of the time of this writing, I’m running the latest version of Next.js 12.
There are few things worth mentioning.
While Next.js is at the heart of this site, it’s brain is Sanity.io CMS.
In the past, I used Cloudinary to store generated OpenGraph images. As of right now, I’m not using it anymore: images are generated right within Sanity.
In the past, I used Supabase to store comments. As of right now, it’s no longer the case: comments are stored and managed right in Sanity.