curiouslychase.com
Essays and updates on product, engineering, and AI by Chase Adams.
2 minute read
Site Architecture
My site is built with NextJS (with strict TypeScript enabled). It's deployed and served with Vercel.
Libraries
I use a variety of JavaScript libraries and frameworks:
- NextJS - full stack web application framework for React and JavaScript
- Tailwinds CSS - styling and design system
- MDX, Remark and Rehype for my Markdown rendered content
- date-fns for formatting dates
- ts-node for running scripts
You can see a list of the dependencies I use in my package.json
github.com
Fonts
- Sans Serif (Title): Tillsdale (Link to BN Tillsdalebnicks.com)
- Sans Serif (Body): Public Sans (using
@fontsource
) - Mono: Jet Brains Mono (using
@fontsource
) - Hand Writing: Palmer Lake
Content
All of the content files are notes written in Obsidian flavored Markdown.
Notes are copied from the Obsidian vault directory on my local machine into a private git
repo that I use as a git submodule.
The script is in my GitHub repository for curiouslychase.comgithub.com and it is run using a script directive from my package.json
github.com:
{
"cp-notes-and-images": "rm -rf src/content/* && ts-node --esm scripts/get-notes/run.ts"
}
The content is stored in version control simply to reduce storing and fetching it from somewhere else.
- All posts are copied into
src/content/posts/<FILENAME>
and served as/posts/<SLUGIFIED FILENAME>/
When the site builds, the Obsidian paths are flattened out.
As an example, the file for the content you're currently reading lives in the vault path 40 - Projects/curiouslychase.com
. When the content is served, it will be served at posts/curiouslychase.com
.
Serving content at the posts
root (instead of the full path from Obsidian) makes the URL path durable. I can move it into a different directory and the URL path will persist at the same location it did before.
- You can read How I Schedule Blog Posts with GitHub Actions and Netlify if you're interested in how I stay ahead of writing.
Scripts
I use a few scripts to stitch everything together:
notes.curiouslychase.com
I was originally using Obsidian Publish and serving the site Using Fly.io and NGINX for Proxying Obsidian Publish but found the solution wasn't meeting my needs.
For durability purposes, I created a Vercel site that uses a redirects
functiongithub.com to redirect my paths from notes.curiouslychase.com to curiouslychase.com/postscuriouslychase.com.
Overview
This is an Obsidian Dataview section that allows me to keep tabs on what's published and if it's missing metadata.
dv.table(["Note", "Description"], dv.pages().filter((p) => {
return p.status === "published" && !p.fileClass
}).map(p => [p.file.link]))
changelog
- 2023-06-14 updated note to match new build and deploy (Astro (JavaScript) and Netlify)
- 2022-10-05 - added "notes" to the homepage
Build Your Website with AI—No Code Required
Learn to create and deploy professional websites using ChatGPT and Claude. Go from complete beginner to confident website builder.