Personal blog and portfolio website of Jessica Temporal β Sr. Dev Advocate, podcaster, and creator. Built with Jekyll and the Ethereal Ink theme, hosted on GitHub Pages.
π Live site: jtemporal.com
Repository note: This project currently lives at
jtemporal/new-blogwhile the Ethereal Ink migration is in progress. Clone and setup instructions below still usejtemporal/jtemporal.github.ioβ the repo will be renamed once the migration ships.
This site features:
- Technical blog posts about Python, data science, Git, and open source
- Books, talks, videos, series, and social links
- Hacktoberfest project collections (2019β2025)
- Multi-language support (Portuguese and English, with French infrastructure)
- Static site generator: Jekyll 4.3
- Styling: Tailwind CSS (Ethereal Ink design system) with Typography plugin
- Syntax highlighting: Rouge
- Hosting: GitHub Pages
- Domain: jtemporal.com
- Analytics: Google Analytics & PostHog
- Responsive layout with light/dark mode
- Multi-language content (PT/EN) with scalable architecture
- Reading time estimation
- Post tag banners, series pages, and listing pages for talks, videos, and books
- Blog post pagination
- Language switcher
See MULTI_LANGUAGE_SYSTEM.md for architecture, translation management, adding languages, and troubleshooting.
- Ruby 3.4.1 (see
.ruby-version) - Bundler
- Node.js & npm (for Tailwind CSS builds)
- Git
-
Clone the repository
git clone https://github.com/jtemporal/jtemporal.github.io.git cd jtemporal.github.ioIf you are working from the migration repo before the rename:
git clone https://github.com/jtemporal/new-blog.git cd new-blog -
Install dependencies
bundle install npm install
-
Run the development server
Recommended β builds CSS and starts Jekyll with the dev config:
npm run dev
Or run the steps separately:
npm run build:css bundle exec jekyll serve --config _dev_config.ymlCSS auto-rebuilds via
_plugins/build_css.rbwhile Jekyll is running. -
Open the site
| Command | Description |
|---|---|
npm run dev |
Build CSS and serve with _dev_config.yml |
npm run build:css |
Compile Tailwind β assets/css/main.css |
npm run watch:css |
Watch and rebuild CSS |
bundle exec jekyll build |
Production build |
bundle exec jekyll serve --drafts |
Include draft posts |
bundle exec jekyll serve --future |
Include future-dated posts |
bundle exec jekyll clean |
Remove _site and cache |
βββ _posts/ # Blog posts
βββ _books/ # Book collection (en/, pt/)
βββ _drafts/ # Draft posts
βββ _hacktoberfest_projects_*/ # Hacktoberfest listings by year
βββ _includes/ # Reusable templates
βββ _layouts/ # Page layouts
βββ _plugins/ # Jekyll plugins (CSS build, Rouge tweaks)
βββ _data/ # YAML data (socials, localization, etc.)
βββ src/styles/ # Tailwind source (tailwind.css, theme.css, syntax.css)
βββ assets/css/ # Compiled CSS
βββ images/ # Image assets
βββ slides/ # Presentation slides
Design mockups from Stitch live in stitch_bilingual_blog_post_page_v1/ locally for reference β that folder is gitignored and not part of the repository.
Create new posts in _posts/ using:
YYYY-MM-DD-post-title.md
---
layout: post
title: "Your Post Title"
date: 2025-08-30
image: /images/covers/tutorial.webp
tags: [tag1, tag2]
lang: en # or pt
translations:
- lang: pt
url: "/caminho-para-traducao-em-portugues"
---
Your post content here...For translation details, see MULTI_LANGUAGE_SYSTEM.md.
Book content lives in _books/en/ and _books/pt/.
Organized by year in _hacktoberfest_projects_YYYY/.
- Production config:
_config.yml - Development config:
_dev_config.yml(local URLs, dev-only excludes) - Styling:
src/styles/tailwind.css,tailwind.config.js,src/styles/theme.css
- Fork jtemporal/jtemporal.github.io
- Create a feature branch (
git checkout -b feature/my-change) - Commit your changes
- Push and open a pull request
See LICENCE.md.
- Website: jtemporal.com
- Email: hello@jtemporal.com
- Twitter: @jesstemporal
- GitHub: @jtemporal
Made with β€οΈ by Jessica Temporal