Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c6f1638
docs: add CLAUDE.md for AI-assisted development
daveworth Jan 20, 2026
12e147d
docs: add migration plan for Jekyll to Astro conversion
daveworth Jan 20, 2026
5bbceef
build(volta): pin node and npm versions
daveworth Jan 20, 2026
80433cb
build(astro): initialize astro project with typescript strict
daveworth Jan 20, 2026
6427047
chore(git): update gitignore for astro
daveworth Jan 20, 2026
cc51a3a
build(tailwind): add tailwind integration
daveworth Jan 20, 2026
07ab486
build(tailwind): add typography plugin
daveworth Jan 20, 2026
f646794
style(tailwind): configure theme with site colors and fonts
daveworth Jan 20, 2026
fc726b8
feat(content): add posts collection schema
daveworth Jan 20, 2026
8533f46
feat(layout): add base layout with head and meta tags
daveworth Jan 20, 2026
b085b94
feat(components): add header sidebar component
daveworth Jan 20, 2026
9d4006c
feat(components): add footer component
daveworth Jan 20, 2026
321fc04
feat(components): add github profile link component
daveworth Jan 20, 2026
eeb0168
feat(components): add rss link component
daveworth Jan 20, 2026
99ba83f
feat(layout): add default two-column layout
daveworth Jan 20, 2026
fac15b0
feat(layout): add post layout
daveworth Jan 20, 2026
62e948f
feat(components): add back-to-home navigation
daveworth Jan 20, 2026
74fded1
docs: add post-migration changes tracking file
daveworth Jan 20, 2026
d204a18
docs: expand github issues removal with follow-up post idea
daveworth Jan 20, 2026
2288d00
feat(pages): add homepage with presentations list
daveworth Jan 20, 2026
fd9a109
feat(content): migrate coffee-setups post
daveworth Jan 20, 2026
0b450b2
feat(content): migrate github-issues post
daveworth Jan 20, 2026
bcc79e1
feat(content): migrate mdns-development post
daveworth Jan 20, 2026
cf24ab6
feat(content): migrate test-suites-upstart post
daveworth Jan 20, 2026
b3dc71f
feat(content): migrate empower-qa-team post
daveworth Jan 20, 2026
53a633c
feat(content): migrate math-books post
daveworth Jan 20, 2026
28bb63a
feat(pages): add dynamic post routing
daveworth Jan 20, 2026
f1a6760
feat(rss): add rss feed endpoint
daveworth Jan 20, 2026
6f932d4
chore(assets): move static assets to public directory
daveworth Jan 20, 2026
ad044ce
chore(assets): move CNAME to public directory
daveworth Jan 20, 2026
5c34254
style(responsive): add mobile-first layout styles
daveworth Jan 20, 2026
b4613ef
style(responsive): add tablet breakpoint styles
daveworth Jan 20, 2026
5a130c7
style(responsive): add desktop breakpoint styles
daveworth Jan 20, 2026
522a922
feat(dev): enable network access for local development
daveworth Jan 20, 2026
772220a
style(fonts): move Google Fonts import to HTML head
daveworth Jan 20, 2026
c0b518a
ci(github): add github actions deploy workflow
daveworth Jan 20, 2026
068155c
ci(github): temporarily deploy from feature branch for testing
daveworth Jan 20, 2026
9d6a757
docs: add master to main branch rename to post-migration tasks
daveworth Jan 20, 2026
ec8eca4
docs: add date formatting update to post-migration tasks
daveworth Jan 20, 2026
49f5b7d
chore(cleanup): remove jekyll layouts directory
daveworth Jan 20, 2026
a24089a
chore(cleanup): remove jekyll includes directory
daveworth Jan 20, 2026
7d2e7df
chore(cleanup): remove jekyll posts directory
daveworth Jan 20, 2026
a440b95
chore(cleanup): remove jekyll stylesheets directory
daveworth Jan 20, 2026
c855bda
chore(cleanup): remove jekyll javascripts directory
daveworth Jan 20, 2026
79d4f3a
chore(cleanup): remove jekyll config and gemfiles
daveworth Jan 20, 2026
965b65f
chore(cleanup): remove rakefile and lib directory
daveworth Jan 20, 2026
53cf396
chore(cleanup): remove jekyll index and feed files
daveworth Jan 20, 2026
d50be89
docs(readme): update with astro build instructions
daveworth Jan 20, 2026
8a927f7
docs: add homepage section formatting consistency to post-migration t…
daveworth Jan 20, 2026
e6e44b8
docs: move completed migration plan to docs directory
daveworth Jan 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Deploy to GitHub Pages

on:
push:
# TODO: remove feat/astro-migration after migration complete
branches: [master, feat/astro-migration]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: volta-cli/action@v4
- run: npm ci
- run: npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: ./dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/deploy-pages@v4
id: deployment
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,21 @@
# Jekyll (legacy)
_site/

# Astro
dist/
.astro/

# Dependencies
node_modules/

# Environment
.env
.env.*
!.env.example

# IDE
.vscode/
.idea/

# OS
.DS_Store
101 changes: 101 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# CLAUDE.md - dave.coffee

Personal website for Dave Worth, hosted at https://dave.coffee

## Project Status

**Migration in progress**: Jekyll → Astro + Tailwind CSS
See `MIGRATION_PLAN.md` for detailed implementation plan and commit strategy.

## Tech Stack

### Current (Jekyll - being replaced)
- Jekyll 3.6.3 with Kramdown markdown
- Static CSS with Pygments syntax highlighting
- GitHub Pages deployment

### Target (Astro)
- Astro 5.x with TypeScript strict mode
- Tailwind CSS 4.x with Typography plugin
- Volta for Node.js/npm version management
- GitHub Actions for deployment

## Commands

```bash
# Development (after migration)
npm run dev # Start dev server
npm run build # Build for production
npm run preview # Preview production build
npm run lint # TypeScript checking
npm run new-post # Create new blog post

# Current Jekyll (until migration complete)
bundle exec jekyll serve
```

## Project Structure

### Target Astro Structure
```
src/
├── components/ # Astro components (Header, Footer, etc.)
├── layouts/ # Page layouts (Base, Default, Post)
├── pages/ # Routes (index.astro, rss.xml.ts)
├── content/posts/ # Blog posts (Markdown with frontmatter)
└── styles/ # Global CSS with Tailwind
public/
├── assets/ # Static files (PDFs, images)
└── CNAME # Custom domain
```

### Current Jekyll Structure (to be removed)
```
_layouts/ # Jekyll templates
_includes/ # Reusable partials
_posts/ # Blog posts (6 total)
stylesheets/ # CSS files
assets/ # Static files
```

## Code Style

- **TypeScript**: Strict mode, prefer explicit types
- **Astro**: Use `.astro` components, avoid client-side JS unless necessary
- **Tailwind**: Mobile-first responsive design, use design tokens from config
- **Commits**: Conventional commits format (`type(scope): description`)

## Content

- 6 blog posts (2012-2015)
- Homepage with presentations, talks, papers list
- RSS feed at `/rss.xml`
- Static assets: resume, thesis, conference PDFs

## Design System

Colors (from current site):
- Text primary: `#777`
- Headings: `#222`
- Links: `#39c`

Typography:
- Font: Lato (300, 700 weights)
- Fallbacks: Helvetica Neue, Helvetica, Arial

Layout:
- Two-column: 270px sidebar + 500px content
- Responsive breakpoints: 480px, 720px, 960px

## Git Workflow

- Feature branch: `feat/astro-migration`
- Atomic commits with conventional commit messages
- Test before merging to `master`

## Important Notes

- Preserve URL structure for existing blog posts
- RSS feed must remain compatible
- Custom domain: dave.coffee (CNAME in public/)
- All new code must be TypeScript
7 changes: 0 additions & 7 deletions Gemfile

This file was deleted.

55 changes: 0 additions & 55 deletions Gemfile.lock

This file was deleted.

64 changes: 64 additions & 0 deletions POST_MIGRATION_CHANGES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Post-Migration Changes

Changes to make after the Astro migration is complete. These are intentional deviations from the original Jekyll site.

---

## Content Changes

### Remove GitHub Issues Discussion CTA

**Location:** `src/layouts/PostLayout.astro`

**Current text:**
> Have something to contribute? Open an Issue on Github and let's have a chat!

**Action:**
1. Remove this entire section from `PostLayout.astro`
2. Write a new blog post reflecting on why using GitHub Issues as a discussion forum didn't work for me personally, even though some folks in the community liked the idea. Topics to cover:
- The original intent and optimism (reference the 2013-01-01 post)
- What didn't work in practice
- Lessons learned

### Update date formatting and styling

**Locations:**
- `src/pages/index.astro` (post listing and "Other Blog Posts and Lists" section)
- `src/layouts/PostLayout.astro` (individual post pages)

**Changes:**
1. Format all dates as `yyyy-mm-dd` (ISO 8601 format)
2. Style dates to be visually distinct from surrounding content - consider:
- Monospace font
- Different color or background

### Unify formatting between homepage sections

**Location:** `src/pages/index.astro`

**Issue:** The "Other Blog Posts and Lists" section has different formatting than the main "Blog Posts, Presentations, Slide Decks, Papers, and even videos!" section.

**Changes:**
1. Apply consistent styling to both sections
2. Use the same date format (`yyyy-mm-dd`) in both sections
3. Match link styles, spacing, and typography between sections

---

## Repository Changes

### Rename default branch from `master` to `main`

**Steps:**
1. Rename branch locally: `git branch -m master main`
2. Push and set upstream: `git push -u origin main`
3. Update default branch in GitHub repository settings
4. Delete old remote branch: `git push origin --delete master`
5. Update `.github/workflows/deploy.yml` to use `main` instead of `master`

---

## Future Improvements

(Add items here as they come up during migration or testing)

75 changes: 75 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# dave.coffee

Personal website for Dave Worth, hosted at https://dave.coffee

## Tech Stack

- [Astro](https://astro.build/) with TypeScript
- [Tailwind CSS](https://tailwindcss.com/) with Typography plugin
- [Volta](https://volta.sh/) for Node.js version management
- GitHub Actions for deployment to GitHub Pages

## Prerequisites

Install [Volta](https://volta.sh/) for automatic Node.js version management:

```bash
curl https://get.volta.sh | bash
```

## Development

```bash
# Install dependencies
npm install

# Start development server
npm run dev

# Build for production
npm run build

# Preview production build
npm run preview

# TypeScript checking
npm run lint
```

## Creating New Posts

Create a new markdown file in `src/content/posts/` with the naming convention:

```
YYYY-MM-DD-post-slug.md
```

Front matter template:

```yaml
---
title: 'Your Post Title'
author: Dave
published: true
pubDate: YYYY-MM-DD
description: 'Brief description for RSS and social sharing'
---
```

## Project Structure

```
src/
├── components/ # Astro components
├── content/posts/ # Blog posts (Markdown)
├── layouts/ # Page layouts
├── pages/ # Routes
└── styles/ # Global CSS
public/
├── assets/ # Static files (PDFs, images)
└── CNAME # Custom domain
```

## Deployment

The site automatically deploys to GitHub Pages via GitHub Actions when changes are pushed to `master`.
8 changes: 0 additions & 8 deletions Rakefile

This file was deleted.

6 changes: 0 additions & 6 deletions _config.yml

This file was deleted.

6 changes: 0 additions & 6 deletions _includes/github_profile_link.html

This file was deleted.

6 changes: 0 additions & 6 deletions _includes/rss_link.html

This file was deleted.

3 changes: 0 additions & 3 deletions _includes/theme_info.html

This file was deleted.

Loading