Building a Personal Blog with Gatsby and Jupyter Notebooks

github repo

blog.jnapolitano.io is a personal blogging platform built with Gatsby, leveraging the official Gatsby blog theme to present well-researched publications. It integrates Jupyter Notebook rendering to support advanced content formats.


Features

  • Static site generation using Gatsby for fast performance.
  • Official Gatsby blog theme for streamlined content management.
  • Support for Markdown and MDX posts, including embedded Jupyter Notebooks via gatsby-transformer-ipynb.
  • Responsive iframe embedding for notebooks and other external content.
  • Site metadata configuration with author and social links.
  • Automated build and deployment pipeline using Python scripts.

Tech Stack

  • Framework: Gatsby (React-based static site generator)
  • Languages: JavaScript (React), Python (build automation), HTML
  • Styling: Emotion, Styled Components, Theme UI
  • Plugins:
    • gatsby-theme-blog
    • gatsby-transformer-ipynb for Jupyter Notebook integration
    • gatsby-transformer-remark with responsive iframe support
    • gatsby-plugin-manifest for PWA features
  • Build tooling: Node.js, npm

Getting Started

Prerequisites

  • Node.js (v14 or newer recommended)
  • npm (bundled with Node.js)
  • Python 3.x (for build automation scripts)

Installation

Clone the repository:

git clone https://github.com/justin-napolitano/blog.jnapolitano.io.git
cd blog.jnapolitano.io

Install dependencies:

npm install

Running the Development Server

Start the Gatsby development server:

npm run develop

Open your browser and navigate to http://localhost:8000 to view the site.

Building for Production

To create a production build:

npm run build

Alternatively, use the included Python script python-build.py to automate cleaning, building, committing, and pushing the build.


Project Structure

  • content/ β€” Markdown and MDX posts, including Jupyter Notebook content.
  • src/ β€” Source code for React components and theme customization.
  • static/ β€” Static assets such as images and favicons.
  • gatsby-config.js β€” Gatsby site configuration including plugins and site metadata.
  • package.json and package-lock.json β€” Node.js dependencies and scripts.
  • python-build.py β€” Python script automating build and deployment tasks.
  • README.md β€” Project documentation.

Future Work / Roadmap

  • Enhance build automation with error handling and logging.
  • Expand support for additional content types and interactive elements.
  • Improve responsive design and accessibility.
  • Integrate continuous deployment pipelines.
  • Refine theme customization and styling options.
hjkl / arrows Β· / search Β· :family Β· :tag Β· :datefrom Β· :dateto Β· ~/entries/slug Β· Ctrl+N/Ctrl+P for suggestions Β· Ctrl+C/Ctrl+G to cancel
entries 201/201 Β· entry -/-
:readyentries 201/201 Β· entry -/-