In 48 hours I went from zero to a fully deployed, professional blog at datainsidedata.com.

This wasn’t just a “hello world” experiment. I wanted a lean, pro-grade stack for my LLC using:

✔ Jekyll (static site generator)
✔ GitHub Pages (free hosting)
✔ AWS Route 53 (custom domain + DNS)

This post + video will show you exactly how I did it, what I learned, and how you can replicate (or improve) the setup for your business, nonprofit, or personal brand.

🎥 Watch it here: [Embed your video link]

🛠️ My Stack

Tool Purpose
Jekyll Static site generator
GitHub Pages Free hosting for site
AWS Route 53 DNS + custom domain
VS Code Local development
datainsidedata.com My custom domain

💡 Why Jekyll Instead of Just HTML/CSS/JS?

When I started this, I asked myself: “Why not just code a static site by hand?”

Here’s why I chose Jekyll:

🚀 1. Built for Blogs

Jekyll was literally designed for blogs. It supports:

  • Markdown posts
  • Categories & tags out of the box
  • Auto-generated archive & pagination
  • Clean permalinks like /2025/07/12/why-jekyll.html

With pure HTML/CSS/JS, I’d have to hand-code all of that.

💎 2. Minimalist and Professional

Jekyll doesn’t need a heavy backend (no PHP, no databases).
It’s just static files—fast, secure, and deploys beautifully on GitHub Pages.

🧰 3. Gems and Themes = Less Reinventing the Wheel

  • The Minimal Mistakes theme gave me a professional design instantly.
  • Gems like jekyll-feed and jekyll-seo-tag handle RSS feeds & SEO for me.

Pure HTML/CSS/JS? I’d be reinventing:
✔ Sitemap.xml
✔ RSS feed
✔ SEO metadata
✔ Responsive layouts

💨 4. One Command → Whole Site Built

Jekyll lets me run:

bundle exec jekyll build

…and it renders all posts, layouts, and assets into the _site folder, ready for deployment.

In a pure static setup, I’d manually copy/paste and keep track of every link. 😬

📦 Initial Setup: Jekyll + Minimal Mistakes Theme

1️⃣ Install Ruby, Bundler, and Jekyll

gem install bundler jekyll

2️⃣ Create a new Jekyll site

jekyll new datainsidedata-website
cd datainsidedata-website
bundle install

3️⃣ Add the Minimal Mistakes theme for a clean, professional look

4️⃣ Configure _config.yml

  • Set site title, description, author info
  • Enable pagination & pretty permalinks
  • Set up categories & tags

📂 Project Structure (before build):

_data/
_includes/
_layouts/
_pages/
_posts/
_site/  (auto-generated by Jekyll build)

🌐 Custom Domain with GitHub Pages + AWS Route 53

🗂 Private + Public Repo Workflow

Since GitHub Pages doesn’t serve from private repos unless you pay for Pro:

  1. Private repo: did-site-private (holds full Jekyll source)
  2. Public repo: did-site-public (hosts built site for Pages)

👨🏾‍💻 Local workflow:

# Build site
bundle exec jekyll build

# Push to public repo
cd _site
git init
git remote add origin https://github.com/dataeden/did-site-public.git
git add .
git commit -m "Deploy"
git push -u origin main

🏷️ AWS Route 53 DNS Setup

✅ Add A records:

185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153

✅ Add a CNAME file in the public repo:

datainsidedata.com

✅ Verify domain with GitHub:
Add a TXT record in Route 53 like:

_github-pages-challenge.datainsidedata.com  TXT  "abc123xyz456"

✅ Enable HTTPS in GitHub Pages after TLS cert provision.

⚡ Sneak Peek: Automating with GitHub Actions (No More _site Pushes!)

Here’s the workflow I’m planning:

📂 .github/workflows/deploy.yml

name: Build and Deploy Jekyll Site

on:
  push:
    branches:
      - main  # Watch for changes in private repo

jobs:
  build-deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout private repo
      uses: actions/checkout@v3

    - name: Setup Ruby + Jekyll
      uses: ruby/setup-ruby@v1
      with:
        ruby-version: '3.1'

    - name: Install dependencies
      run: bundle install

    - name: Build site
      run: bundle exec jekyll build

    - name: Deploy to public repo
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: $
        publish_dir: ./_site
        publish_branch: main
        destination_repo: dataeden/did-site-public

🎯 With this in place:

  • Push to did-site-private
  • GitHub Actions auto-builds & deploys to did-site-public
  • No more manual _site pushes 🚀

🚨 Lessons Learned

💥 _pages folder pain: Jekyll didn’t respect links until I restructured pages.
🔥 Custom nav bar: Built my own in bash _includes/header.html + _includes/nav.html.
🕒 DNS propagation: Patience and coffee are dev tools too.

🎯 The Result

✅ Live at datainsidedata.com
✅ Clean navigation, custom logo, HTTPS-secured
✅ Learned Jekyll + DNS at a pro level

📝 What’s Next?

✔ Publish more posts (like this one!)
✔ Add Google Analytics
✔ Fully automate deploys with GitHub Actions
✔ Share more dev journey content

❤️ About the Author

🔥 I’m Fari, founder of Data Inside Data LLC.
Here I share tools, insights, and lessons from building cool things in tech & data.

📺 Watch the full video walkthrough → [Embed link here]