Skip to content

Commit ff92781

Browse files
authored
Merge pull request #2 from TOM-BOHN/sandbox
Release: merge sandbox into main
2 parents 24c8737 + 62db8a3 commit ff92781

41 files changed

Lines changed: 9245 additions & 25 deletions

Some content is hidden

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

.github/workflows/deploy.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
workflow_dispatch:
8+
9+
permissions:
10+
contents: read
11+
pages: write
12+
id-token: write
13+
14+
concurrency:
15+
group: "pages"
16+
cancel-in-progress: false
17+
18+
jobs:
19+
build:
20+
runs-on: ubuntu-latest
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v4
24+
25+
- name: Setup Node.js
26+
uses: actions/setup-node@v4
27+
with:
28+
node-version: '20'
29+
cache: 'npm'
30+
31+
- name: Install dependencies
32+
run: npm ci
33+
34+
- name: Build
35+
run: npm run build
36+
37+
- name: Setup Pages
38+
uses: actions/configure-pages@v4
39+
40+
- name: Upload artifact
41+
uses: actions/upload-pages-artifact@v3
42+
with:
43+
path: ./out
44+
45+
deploy:
46+
environment:
47+
name: github-pages
48+
url: ${{ steps.deployment.outputs.page_url }}
49+
runs-on: ubuntu-latest
50+
needs: build
51+
steps:
52+
- name: Deploy to GitHub Pages
53+
id: deployment
54+
uses: actions/deploy-pages@v4

.gitignore

Lines changed: 34 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
1-
# Compiled class file
2-
*.class
3-
4-
# Log file
5-
*.log
6-
7-
# BlueJ files
8-
*.ctxt
9-
10-
# Mobile Tools for Java (J2ME)
11-
.mtj.tmp/
12-
13-
# Package Files #
14-
*.jar
15-
*.war
16-
*.nar
17-
*.ear
18-
*.zip
19-
*.tar.gz
20-
*.rar
21-
22-
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
23-
hs_err_pid*
24-
replay_pid*
1+
# dependencies
2+
/node_modules
3+
/.pnp
4+
.pnp.js
5+
6+
# testing
7+
/coverage
8+
9+
# next.js
10+
/.next/
11+
/out/
12+
13+
# production
14+
/build
15+
16+
# misc
17+
.DS_Store
18+
*.pem
19+
20+
# debug
21+
npm-debug.log*
22+
yarn-debug.log*
23+
yarn-error.log*
24+
25+
# local env files
26+
.env*.local
27+
.env
28+
29+
# vercel
30+
.vercel
31+
32+
# typescript
33+
*.tsbuildinfo
34+
next-env.d.ts

CONTRIBUTING.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# Contributing
2+
3+
This is a personal website, but if you have suggestions or find issues, feel free to open an issue or submit a pull request.
4+
5+
## Development Setup
6+
7+
1. Clone the repository
8+
2. Install dependencies: `npm install`
9+
3. Run the development server: `npm run dev`
10+
4. Open [http://localhost:3000](http://localhost:3000) in your browser
11+
12+
## Project Structure
13+
14+
```
15+
tom-bohn.github.io/
16+
├── app/ # Next.js app directory (pages)
17+
├── components/ # React components
18+
├── lib/ # Utility functions and data fetching
19+
├── data/ # JSON data files (projects, links, etc.)
20+
├── content/ # Markdown content (blog posts)
21+
├── public/ # Static assets
22+
└── .github/ # GitHub Actions workflows
23+
```
24+
25+
## Adding Content
26+
27+
### Blog Posts
28+
- Create markdown files in `content/blog/`
29+
- Format: `YYYY-MM-DD-title.md`
30+
- Include frontmatter with `title`, `date`, and `excerpt`
31+
32+
### Projects
33+
- Edit `data/projects.json`
34+
- Add project objects with: `id`, `title`, `description`, `url`, `tags`
35+
36+
### Links
37+
- Edit `data/links.json`
38+
- Organize by category with arrays of link objects
39+
40+
### Certifications
41+
- Edit `data/certifications.json`
42+
- Add certification objects with relevant fields
43+
44+
### Hub Links
45+
- Edit `data/hub.json`
46+
- Add link objects for your online presence
47+
48+
## Building for Production
49+
50+
```bash
51+
npm run build
52+
```
53+
54+
This creates a static export in the `out/` directory ready for GitHub Pages.

DEPLOYMENT.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Deployment Guide
2+
3+
This site is configured to deploy automatically to GitHub Pages using GitHub Actions.
4+
5+
## Automatic Deployment
6+
7+
1. Push changes to the `main` branch
8+
2. GitHub Actions will automatically build and deploy the site
9+
3. The site will be available at `https://[your-username].github.io`
10+
11+
## Manual Deployment
12+
13+
If you need to deploy manually:
14+
15+
```bash
16+
# Build the site
17+
npm run build
18+
19+
# The static files will be in the out/ directory
20+
# You can commit and push these files to the gh-pages branch
21+
```
22+
23+
## Custom Domain Setup
24+
25+
### For Cloudflare Users (thomaslbohn.com)
26+
27+
1. Create a `CNAME` file in the `public/` directory with your domain:
28+
```
29+
thomaslbohn.com
30+
```
31+
Or if you want to use www:
32+
```
33+
www.thomaslbohn.com
34+
```
35+
36+
2. Configure DNS records in Cloudflare:
37+
38+
**For Apex Domain (thomaslbohn.com):**
39+
- Go to Cloudflare Dashboard > DNS > Records
40+
- Add a **CNAME** record (Cloudflare supports CNAME flattening for apex domains):
41+
- **Name**: `@` or `thomaslbohn.com`
42+
- **Target**: `tom-bohn.github.io`
43+
- **Proxy status**: DNS only (gray cloud) - **Important**: Disable proxy for GitHub Pages
44+
- **TTL**: Auto
45+
46+
**For www Subdomain (www.thomaslbohn.com):**
47+
- Add a **CNAME** record:
48+
- **Name**: `www`
49+
- **Target**: `tom-bohn.github.io`
50+
- **Proxy status**: DNS only (gray cloud)
51+
- **TTL**: Auto
52+
53+
**Alternative for Apex Domain (if CNAME doesn't work):**
54+
- Add **A** records pointing to GitHub's IPs:
55+
- `185.199.108.153`
56+
- `185.199.109.153`
57+
- `185.199.110.153`
58+
- `185.199.111.153`
59+
- **Proxy status**: DNS only (gray cloud)
60+
61+
3. Enable custom domain in GitHub repository settings:
62+
- Go to Settings > Pages
63+
- Under "Custom domain", enter `thomaslbohn.com` (or `www.thomaslbohn.com`)
64+
- Click "Save"
65+
- GitHub will automatically create/update the CNAME file
66+
- Enable "Enforce HTTPS" (may take a few minutes after DNS propagates)
67+
68+
4. Wait for DNS propagation:
69+
- Cloudflare typically propagates quickly (5-15 minutes)
70+
- GitHub's SSL certificate may take up to 24 hours to provision
71+
- Check status in GitHub Settings > Pages
72+
73+
### Important Cloudflare Notes:
74+
- **Always use "DNS only" (gray cloud)** for GitHub Pages - proxying through Cloudflare can cause issues
75+
- Cloudflare's CNAME flattening allows apex domains to use CNAME records
76+
- If you want to use Cloudflare's CDN/proxy features, consider using a subdomain instead
77+
78+
## GitHub Pages Settings
79+
80+
1. Go to your repository Settings
81+
2. Navigate to Pages
82+
3. Source should be set to "GitHub Actions" (automatic deployment)
83+
4. Custom domain can be configured here as well

QUICKSTART.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# Quick Start Guide
2+
3+
## Getting Started
4+
5+
1. **Install Dependencies**
6+
```bash
7+
npm install
8+
```
9+
10+
2. **Run Development Server**
11+
```bash
12+
npm run dev
13+
```
14+
Open [http://localhost:3000](http://localhost:3000) to see your site.
15+
16+
3. **Build for Production**
17+
```bash
18+
npm run build
19+
```
20+
This creates static files in the `out/` directory.
21+
22+
## Adding Your Content
23+
24+
### 1. Update About Page
25+
Edit `app/about/page.tsx` and replace the placeholder text with your information.
26+
27+
### 2. Add Blog Posts
28+
Create markdown files in `content/blog/`:
29+
- Format: `YYYY-MM-DD-title.md`
30+
- Include frontmatter:
31+
```markdown
32+
---
33+
title: "Your Post Title"
34+
date: "2024-01-15"
35+
excerpt: "A brief description"
36+
---
37+
38+
Your content here...
39+
```
40+
41+
### 3. Add Projects
42+
Edit `data/projects.json`:
43+
```json
44+
[
45+
{
46+
"id": "project-1",
47+
"title": "My Project",
48+
"description": "Project description",
49+
"url": "https://example.com",
50+
"tags": ["React", "Next.js"]
51+
}
52+
]
53+
```
54+
55+
### 4. Add Links
56+
Edit `data/links.json`:
57+
```json
58+
{
59+
"Development Tools": [
60+
{
61+
"id": "link-1",
62+
"title": "Tool Name",
63+
"url": "https://example.com",
64+
"description": "What it's for"
65+
}
66+
]
67+
}
68+
```
69+
70+
### 5. Add Certifications
71+
Edit `data/certifications.json`:
72+
```json
73+
[
74+
{
75+
"id": "cert-1",
76+
"title": "Certification Name",
77+
"issuer": "Issuing Organization",
78+
"date": "2024-01-15",
79+
"description": "Description",
80+
"url": "https://credential-url.com",
81+
"status": "completed"
82+
}
83+
]
84+
```
85+
86+
### 6. Add Hub Links
87+
Edit `data/hub.json`:
88+
```json
89+
[
90+
{
91+
"id": "hub-1",
92+
"title": "LinkedIn",
93+
"url": "https://linkedin.com/in/yourprofile",
94+
"description": "Professional network"
95+
}
96+
]
97+
```
98+
99+
### 7. Update Contact Page
100+
Edit `app/contact/page.tsx` and add your contact information.
101+
102+
## Theme Toggle
103+
104+
The site includes a theme toggle button in the header:
105+
- **Modern Mode**: Clean, professional design
106+
- **Xanga Mode**: Nostalgic 2000s web design with Comic Sans, bright colors, and retro styling
107+
108+
Users can toggle between themes, and their preference is saved in localStorage.
109+
110+
## Customization
111+
112+
### Colors
113+
Edit CSS variables in `app/globals.css`:
114+
- Modern theme: `:root` selector
115+
- Xanga theme: `[data-theme="xanga"]` selector
116+
117+
### Styling
118+
The site uses Tailwind CSS. You can customize the theme in `tailwind.config.ts`.
119+
120+
## Deployment
121+
122+
The site is configured for automatic deployment to GitHub Pages via GitHub Actions. Just push to the `main` branch!
123+
124+
For custom domain setup, see `DEPLOYMENT.md`.

0 commit comments

Comments
 (0)