Skip to content

cdtinney/tinney.dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

358 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinney.dev

A personal website.

Build and Deploy

Introduction

This website is built with:

Content

Blog

Blog posts are Astro content collections in src/content/blog/. Each post is a directory containing index.md and any co-located images.

Frontmatter:

---
title: "Post Title"
date: "YYYY-MM-DD"
path: "/blog/slug"
excerpt: "Short description for the listing page."
draft: true    # optional, excluded from production
archived: true # optional, excluded from listing
---

Projects

Projects are defined in src/data/projects.json. Sorted by lastCommitDate (newest first).

Microsites

This repo also hosts standalone microsites, each with its own domain, layout, and styles:

Microsites live under src/microsites/<name>/ (layouts, components, styles) and src/pages/<name>/ (routes). Domain routing is handled by Cloudflare Pages Functions middleware (functions/_middleware.ts).

Themes

The site supports multiple visual themes, toggled via a dropdown in the bottom-left corner:

  • Default - Clean blue/coral palette
  • Sharks - San Jose Sharks teal/orange palette with hockey easter eggs
  • Canada - Canadian flag red/white palette with falling snow and maple leaves
  • Underwater - Deep ocean gradient with animated waves, manta rays, and coral

Themes are defined in src/themes/ as TypeScript files satisfying the Theme interface. See CONTRIBUTING.md for the full theme API and conventions.

Developing

Requirements

  • Node.js 22+
  • pnpm — install via corepack enable pnpm

Quick Start

$ pnpm install
$ pnpm dev

Commands

Command Description
pnpm dev Start dev server
pnpm build Production build
pnpm lint ESLint check
pnpm lint:fix ESLint auto-fix
pnpm format Prettier format all files
pnpm format:check Prettier check
pnpm typecheck TypeScript type check
pnpm test Run unit tests (Vitest)
pnpm test:e2e Run e2e tests (Playwright)

Linting & Formatting

ESLint and Prettier run automatically:

  • On save — VS Code formats via Prettier
  • On commit — Husky pre-commit hook runs lint-staged
  • In CI — GitHub Actions checks lint and formatting before build

Deploying

Deployed to Cloudflare Pages via GitHub Actions (.github/workflows/main.yml).

Production — on push to main:

  1. CI runs lint, format check, typecheck, tests, build, and Lighthouse
  2. Build output is deployed via wrangler pages deploy --branch=main

Preview — on pull requests:

  1. CI runs the same checks, then deploys with --branch=${{ github.head_ref }}
  2. A preview URL (e.g. feat-my-thing.tinney-dev.pages.dev) is posted as a PR comment
  3. The comment is updated on subsequent pushes to the same PR

Custom domains (tinney.dev, useyourdamnhands.com, whatarewedoinghere.org) are configured in the Cloudflare Pages dashboard. Domain-based routing is handled by the middleware in functions/_middleware.ts.

Contributing

See CONTRIBUTING.md for workflow, commit conventions, architecture, and code style guidelines.

License

MIT

About

Personal website, built with Astro.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors