Skip to content

Commit c73397a

Browse files
francisfuzzclaude
andcommitted
Convert from Next.js to Jekyll with Docker support
- Replace Next.js/Nextra setup with Jekyll static site generator - Add github-pages gem for GitHub Pages compatibility - Convert MDX files (index, resume) to Markdown - Migrate blog posts to Jekyll _posts/ directory with proper naming - Create Jekyll layouts (default, post) and configuration - Add Dockerfile for local development using Ruby 3.1 - Update README with Docker and GitHub Pages deployment instructions - Remove Node.js dependencies and configuration files The site can now be run locally via Docker or deployed directly to GitHub Pages without build issues. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent da2928e commit c73397a

28 files changed

Lines changed: 251 additions & 7117 deletions

.dockerignore

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Git
2+
.git
3+
.gitignore
4+
5+
# Jekyll
6+
_site
7+
.sass-cache
8+
.jekyll-cache
9+
.jekyll-metadata
10+
11+
# Ruby
12+
vendor/bundle
13+
.bundle
14+
15+
# macOS
16+
.DS_Store
17+
18+
# Editor
19+
*.swp
20+
*.swo
21+
*~

.github/workflows/nextjs.yml

Lines changed: 0 additions & 93 deletions
This file was deleted.

.gitignore

Lines changed: 16 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,18 @@
1-
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2-
3-
# dependencies
4-
/node_modules
5-
/.pnp
6-
.pnp.js
7-
8-
# testing
9-
/coverage
10-
11-
# next.js
12-
/.next/
13-
/out/
14-
15-
# production
16-
/build
17-
18-
# misc
1+
# Jekyll
2+
_site/
3+
.sass-cache/
4+
.jekyll-cache/
5+
.jekyll-metadata
6+
7+
# Ruby
8+
*.gem
9+
.bundle
10+
vendor/
11+
12+
# macOS
1913
.DS_Store
20-
*.pem
21-
22-
# debug
23-
npm-debug.log*
24-
yarn-debug.log*
25-
yarn-error.log*
26-
27-
# local env files
28-
.env*.local
29-
30-
# vercel
31-
.vercel
3214

33-
# typescript
34-
*.tsbuildinfo
35-
next-env.d.ts
15+
# Backup files
16+
*~
17+
*.swp
18+
*.swo

Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
FROM ruby:3.1
2+
3+
# Install dependencies
4+
RUN apt-get update && apt-get install -y \
5+
build-essential \
6+
git \
7+
&& rm -rf /var/lib/apt/lists/*
8+
9+
# Set working directory
10+
WORKDIR /usr/src/app
11+
12+
# Copy Gemfile
13+
COPY Gemfile* ./
14+
15+
# Install gems
16+
RUN bundle install
17+
18+
# Copy the rest of the site
19+
COPY . .
20+
21+
# Expose port 4000
22+
EXPOSE 4000
23+
24+
# Run Jekyll
25+
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0", "--livereload"]

Gemfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
source "https://rubygems.org"
2+
3+
gem "github-pages", group: :jekyll_plugins
4+
gem "webrick", "~> 1.8"

README.md

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,66 @@
11
# francisfuzz.com
22

3-
`francisfuzz.com` is Francis' personal portfolio, built with **Next.js** and a library called [Nextra](https://nextra.vercel.app/).
3+
`francisfuzz.com` is Francis' personal portfolio, built with **Jekyll** and hosted on **GitHub Pages**.
44

5-
## Instructions for local development
5+
## Deployment
6+
7+
This site is configured to automatically deploy to GitHub Pages when you push to the `main` branch. GitHub Pages handles the Jekyll build process automatically.
8+
9+
### Setting up GitHub Pages
10+
11+
1. Go to your repository settings
12+
2. Navigate to Pages (under "Code and automation")
13+
3. Under "Build and deployment":
14+
- Source: Deploy from a branch
15+
- Branch: `main` / `/ (root)`
16+
4. Click Save
17+
18+
GitHub will automatically build and deploy your site whenever you push changes.
19+
20+
## Local Development
21+
22+
### Using Docker (Recommended)
23+
24+
The easiest way to run this site locally is using Docker:
25+
26+
```shell
27+
# Build the Docker image:
28+
docker build -t francisfuzz-site .
29+
30+
# Run the container:
31+
docker run -d --rm --name francisfuzz-site -p 4000:4000 -p 35729:35729 francisfuzz-site
32+
33+
# View logs:
34+
docker logs -f francisfuzz-site
35+
36+
# Stop the container:
37+
docker stop francisfuzz-site
38+
```
39+
40+
Then open your browser to http://localhost:4000
41+
42+
### Traditional local setup
43+
44+
If you prefer to run Jekyll natively:
645

746
```shell
847
# Clone this repository:
948
git clone https://github.com/francisfuzz/dotcom.git
1049

11-
# Change directory into this repository and install the dependencies using `npm`:
50+
# Change directory into this repository:
1251
cd dotcom
13-
npm install
1452

15-
# Run the server and open a new browser tab on where it's served up: `http://localhost:3000`
16-
npm run dev
53+
# Install Ruby dependencies:
54+
bundle install
55+
56+
# Run the Jekyll server:
57+
bundle exec jekyll serve
58+
59+
# Open your browser to http://localhost:4000
1760
```
1861

62+
**Note:** There may be compilation issues with the `eventmachine` gem on certain macOS versions. If you encounter errors, use the Docker approach above.
63+
1964
## License
2065

2166
* Content: [Creative Commons, BY](http://creativecommons.org/licenses/by/3.0/)

_config.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
title: francisfuzz.com
2+
description: Francis' personal portfolio
3+
author: Francis Batac
4+
email:
5+
url: "https://francisfuzz.com"
6+
baseurl: ""
7+
8+
# Build settings
9+
markdown: kramdown
10+
permalink: /posts/:year/:month/:day/:title/
11+
12+
# Disable live reload to avoid eventmachine dependency issue
13+
livereload: false
14+
15+
# Exclude from processing
16+
exclude:
17+
- Gemfile
18+
- Gemfile.lock
19+
- node_modules
20+
- vendor/bundle/
21+
- vendor/cache/
22+
- vendor/gems/
23+
- vendor/ruby/
24+
- package.json
25+
- package-lock.json
26+
- next.config.js
27+
- theme.config.js
28+
- tsconfig.json
29+
30+
# Plugins
31+
plugins:
32+
- jekyll-feed
33+
- jekyll-seo-tag

_layouts/default.html

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>{% if page.title %}{{ page.title }} - {% endif %}{{ site.title }}</title>
7+
<link rel="icon" type="image/x-icon" href="/public/favicon.ico">
8+
{% seo %}
9+
{% feed_meta %}
10+
<style>
11+
body {
12+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
13+
line-height: 1.6;
14+
max-width: 800px;
15+
margin: 0 auto;
16+
padding: 20px;
17+
color: #333;
18+
}
19+
a {
20+
color: #0366d6;
21+
text-decoration: none;
22+
}
23+
a:hover {
24+
text-decoration: underline;
25+
}
26+
nav {
27+
margin-bottom: 2em;
28+
padding-bottom: 1em;
29+
border-bottom: 1px solid #e1e4e8;
30+
}
31+
nav a {
32+
margin-right: 1em;
33+
}
34+
.post-meta {
35+
color: #666;
36+
font-size: 0.9em;
37+
}
38+
.post-list {
39+
list-style: none;
40+
padding: 0;
41+
}
42+
.post-list li {
43+
margin-bottom: 1.5em;
44+
}
45+
</style>
46+
</head>
47+
<body>
48+
<nav>
49+
<a href="/">Home</a>
50+
<a href="/resume/">Resume</a>
51+
<a href="/posts/">Posts</a>
52+
</nav>
53+
54+
<main>
55+
{{ content }}
56+
</main>
57+
58+
<footer style="margin-top: 3em; padding-top: 1em; border-top: 1px solid #e1e4e8; color: #666; font-size: 0.9em;">
59+
<p>&copy; {{ 'now' | date: "%Y" }} {{ site.author }}</p>
60+
</footer>
61+
</body>
62+
</html>

_layouts/post.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
layout: default
3+
---
4+
5+
<article>
6+
<header>
7+
<h1>{{ page.title }}</h1>
8+
<p class="post-meta">
9+
<time datetime="{{ page.date | date_to_xmlschema }}">
10+
{{ page.date | date: "%B %d, %Y" }}
11+
</time>
12+
</p>
13+
</header>
14+
15+
{{ content }}
16+
</article>

pages/posts/2021-12-15-seeking-clarity-without-being-a-jerk.md renamed to _posts/2021-12-15-seeking-clarity-without-being-a-jerk.md

File renamed without changes.

0 commit comments

Comments
 (0)