# chaseadams.io

> How my personal website is architected and built.

Source: https://curiouslychase.com/posts/chaseadamsio/

- [GitHub Repository]: [https://github.com/chaseadamsio/chaseadamsio.com/](https://github.com/chaseadamsio/chaseadamsio.com/)
# Site Architecture

My site is built with [NextJS](https://curiouslychase.com/tools/nextjs/) (with strict [TypeScript](https://curiouslychase.com/engineering/typescript/) enabled). It's deployed and served with [Vercel](https://curiouslychase.com/tools/vercel/).

## Libraries

I use a variety of JavaScript libraries and frameworks:
- [NextJS](https://curiouslychase.com/tools/nextjs/) - full stack web application framework for [React](https://curiouslychase.com/engineering/react-javascript/) and [JavaScript](https://curiouslychase.com/posts/javascript/)
- Tailwinds CSS - styling and design system
- [MDX](https://curiouslychase.com/posts/mdx/), Remark and Rehype for my [Markdown](https://curiouslychase.com/posts/markdown/) rendered content
- [date-fns](https://curiouslychase.com/posts/date-fns/) for formatting dates
- ts-node for running scripts

## Fonts
- Sans Serif (Title): Tillsdale ([Link to BN Tillsdale](https://www.bnicks.com/shop/p/bn-tillsdale))
- 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](https://curiouslychase.com/tools/obsidian/) flavored Markdown. 

Notes are copied from the [Obsidian](https://curiouslychase.com/tools/obsidian/) vault directory on my local machine into a private `git` repo that I use as a [git submodule](https://curiouslychase.com/engineering/git-submodules/).  

```json
{
    "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/` and served as `/posts//`

When the site builds, the [Obsidian](https://curiouslychase.com/tools/obsidian/) paths are flattened out. 

As an example, the file for the content you're currently reading lives in the vault path `40 - Projects/chaseadamsio.com`. When the content is served, it will be served at `posts/chaseadamsio.com`.

Serving content at the `posts` root (instead of the full path from [Obsidian](https://curiouslychase.com/tools/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](https://curiouslychase.com/engineering/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:

- A script to copy my [Obsidian](https://curiouslychase.com/tools/obsidian/) files with `status: published` into my [git](https://curiouslychase.com/engineering/git/) repo's `content` directory

# notes.curiouslychase.com

I was originally using [Obsidian Publish](https://curiouslychase.com/posts/obsidian-publish/) and serving the site [Using Fly.io and NGINX for Proxying Obsidian Publish](https://curiouslychase.com/engineering/using-flyio-and-nginx-for-proxying-obsidian-publish/) but found the solution wasn't meeting my needs. 

For durability purposes, I created a [Vercel](https://curiouslychase.com/tools/vercel/) site that uses [a `redirects` function](https://github.com/chaseadamsio/chaseadamsio.com/blob/main/next.config.mjs#L8) to redirect my paths from notes.curiouslychase.com to [curiouslychase.com/posts](https://chaseadamsio.com/posts). 

# Overview
This is an [Obsidian](https://curiouslychase.com/tools/obsidian/) [Dataview](https://curiouslychase.com/posts/dataview-obsidian/) section that allows me to keep tabs on what's published and if it's missing metadata.

```dataviewjs
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)](https://curiouslychase.com/posts/astro-javascript/) and [Netlify](https://curiouslychase.com/tools/netlify/))
- 2022-10-05 - added "notes" to the homepage
