Skip to content

Commit 947d597

Browse files
rockoderclaude
andcommitted
feat: migrate portfolio site from Jekyll to Astro
- Astro 5.x with Tailwind CSS v4 and TypeScript - Dark-mode-first design with emerald accents - Content collections for blog posts (43) and notes (79) - Homepage with excerpts and tag cloud sidebar - Blog archive with clickable tag filters and search - Individual post pages with TOC and tag cloud sidebar - Command palette (Cmd+K) using cmdk library - Static pages: About, Contact, Reading List, Writing, Videos - Notes masonry grid for tweet archive - Case studies collection (seeded with 2 examples) - SEO: sitemap, robots.txt, RSS feed, Open Graph - URL redirects for legacy Jekyll URLs - GitHub Actions deployment workflow Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f2d20f4 commit 947d597

File tree

269 files changed

+13208
-3
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

269 files changed

+13208
-3
lines changed

.github/workflows/deploy.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Astro deployment workflow for GitHub Pages
2+
name: Deploy Astro site to Pages
3+
4+
on:
5+
# Runs on pushes targeting the default branch
6+
push:
7+
branches: ["master"]
8+
9+
# Allows you to run this workflow manually from the Actions tab
10+
workflow_dispatch:
11+
12+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13+
permissions:
14+
contents: read
15+
pages: write
16+
id-token: write
17+
18+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20+
concurrency:
21+
group: "pages"
22+
cancel-in-progress: false
23+
24+
env:
25+
BUILD_PATH: "."
26+
27+
jobs:
28+
build:
29+
name: Build
30+
runs-on: ubuntu-latest
31+
steps:
32+
- name: Checkout
33+
uses: actions/checkout@v4
34+
35+
- name: Setup Node
36+
uses: actions/setup-node@v4
37+
with:
38+
node-version: "20"
39+
cache: npm
40+
cache-dependency-path: ${{ env.BUILD_PATH }}/package-lock.json
41+
42+
- name: Setup Pages
43+
id: pages
44+
uses: actions/configure-pages@v5
45+
46+
- name: Install dependencies
47+
run: npm ci
48+
working-directory: ${{ env.BUILD_PATH }}
49+
50+
- name: Build with Astro
51+
run: |
52+
npm run build
53+
working-directory: ${{ env.BUILD_PATH }}
54+
55+
- name: Upload artifact
56+
uses: actions/upload-pages-artifact@v3
57+
with:
58+
path: ${{ env.BUILD_PATH }}/dist
59+
60+
deploy:
61+
environment:
62+
name: github-pages
63+
url: ${{ steps.deployment.outputs.page_url }}
64+
needs: build
65+
runs-on: ubuntu-latest
66+
name: Deploy
67+
steps:
68+
- name: Deploy to GitHub Pages
69+
id: deployment
70+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,34 @@
1-
_site
2-
.sass-cache
1+
# Dependencies
2+
node_modules/
3+
4+
# Build output
5+
dist/
6+
.astro/
7+
8+
# Jekyll (legacy)
9+
_site/
10+
.sass-cache/
11+
.jekyll-cache/
312
.jekyll-metadata
413

14+
# Environment variables
15+
.env
16+
.env.*
17+
!.env.example
18+
519
# IDE
20+
.vscode/
621
.idea/
22+
*.swp
23+
*.swo
724

8-
# macOS
25+
# OS files
926
.DS_Store
27+
Thumbs.db
28+
29+
# Python virtual environment
30+
.venv/
31+
32+
# Logs
33+
*.log
34+
npm-debug.log*

astro.config.mjs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// @ts-check
2+
import { defineConfig } from 'astro/config';
3+
import tailwindcss from '@tailwindcss/vite';
4+
import react from '@astrojs/react';
5+
import sitemap from '@astrojs/sitemap';
6+
7+
// Legacy URL redirects (generated by migration script)
8+
import { legacyRedirects } from './src/data/redirects.ts';
9+
10+
// https://astro.build/config
11+
export default defineConfig({
12+
site: 'https://www.rockoder.com',
13+
output: 'static',
14+
integrations: [
15+
react(),
16+
sitemap(),
17+
],
18+
vite: {
19+
plugins: [tailwindcss()],
20+
},
21+
markdown: {
22+
shikiConfig: {
23+
theme: 'github-dark',
24+
wrap: true,
25+
},
26+
},
27+
redirects: {
28+
...legacyRedirects,
29+
},
30+
});

0 commit comments

Comments
 (0)