CLAUDE.md - FridayHacks Project Guide
Project Overview
FridayHacks is a technical blog documenting software engineering projects, experiments, and tutorials. The site is built with Jekyll and hosted on GitHub Pages at https://www.fridayhacks.com.
The blog started in 2015 and covers topics including:
- AI and machine learning projects
- Web development tutorials
- Developer tools and workflows
- Security and infrastructure
- Hackathon projects
Technology Stack
- Static Site Generator: Jekyll 3.7
- Theme: HPSTR Jekyll Theme (customized)
- Markdown: Kramdown with GFM (GitHub Flavored Markdown)
- Syntax Highlighting: Rouge
- CSS Preprocessor: SCSS/Sass
- Analytics: Umami (privacy-friendly)
- Hosting: GitHub Pages
- Domain: fridayhacks.com
Project Structure
fridayhacks/
βββ _config.yml # Jekyll configuration
βββ _data/
β βββ navigation.yml # Navigation menu links
βββ _includes/ # Reusable HTML partials
β βββ head.html # Meta tags, CSS, analytics
β βββ navigation.html # Site navigation
β βββ footer.html # Footer content
β βββ scripts.html # JavaScript includes
β βββ ...
βββ _layouts/
β βββ post.html # Blog post layout
β βββ page.html # Static page layout
β βββ post-index.html # Post listing layout
βββ _posts/ # Blog posts (YYYY-MM-DD-slug.md)
βββ _sass/ # SCSS stylesheets
βββ _site/ # Generated site (do not edit)
βββ assets/
β βββ css/main.scss # Main stylesheet
β βββ fonts/ # Font Awesome fonts
β βββ img/ # Images for posts
β βββ js/ # JavaScript files
βββ about/ # About page
βββ posts/ # Posts index page
βββ tags/ # Tags index page
βββ CHANGELOG.md # Project changelog
βββ Gemfile # Ruby dependencies
βββ Makefile # Build commands
βββ index.html # Homepage
Writing Blog Posts
File Naming Convention
Posts must be placed in _posts/ with the format:
YYYY-MM-DD-slug.md
Example: 2025-11-29-norai.md
Frontmatter Template
Every post must start with YAML frontmatter:
---
layout: post
title: "Your Post Title Here"
description: "A brief description for SEO and social sharing."
tags: [tag1, tag2, tag3]
---
Optional Frontmatter Fields
---
layout: post
title: "Post with Feature Image"
description: "Description here"
tags: [example]
image:
feature: feature-image.jpg # Hero image (1600x800 recommended)
thumb: thumb-image.jpg # Thumbnail
credit: Photographer Name # Image credit
creditlink: https://source.com
modified: 2025-01-15 # Last modified date
share: false # Disable social sharing
comments: false # Disable comments
---
Content Guidelines
- Headings: Start with
###(h3) since the title is h1 - Images: Store in
/assets/img/or subdirectories like/assets/img/projectname/ - Image syntax:
or - Code blocks: Use triple backticks with language identifier
- Links: Use standard markdown
[text](url)
Style Rules
- No emojis in posts or content
- No em dashes (use regular dashes or rewrite sentences)
- No smart quotes (use straight quotes)
- Keep descriptions concise (under 160 characters for SEO)
- Use active voice
- Include code examples where relevant
- Add diagrams using ASCII art in code blocks when helpful
Example Post Structure
---
layout: post
title: "Project Name: Brief Description"
description: "One sentence summary of the post."
tags: [technology, category, tool]
---

### Introduction
Opening paragraph explaining the problem or motivation.
### Section Title
Content with code examples:
\`\`\`python
def example():
return "Hello, World!"
\`\`\`
### Another Section
More content...
### Conclusion
Wrap-up and key takeaways.
---
*Optional footer note or credits*
Development Commands
Using Make (Recommended)
make install # Install Ruby dependencies
make run # Serve site locally with live reload
make serve # Alias for run
make build # Build site for production
make clean # Clean generated files
make help # Show available commands
Direct Jekyll Commands
bundle install # Install dependencies
bundle exec jekyll serve --livereload # Local development
bundle exec jekyll serve --host 0.0.0.0 --port 4000 # Accessible on network
bundle exec jekyll build # Production build
Local Development URL
http://localhost:4000
Adding Images
- Create a subdirectory in
/assets/img/for the project:/assets/img/projectname/ - Add images with descriptive names:
homepage.png,diagram.png - Optimize images before committing (compress PNGs, use appropriate formats)
- Reference in posts:

Recommended image sizes:
- Feature images: 1600x800px
- Inline images: 800-1200px width
- Thumbnails: 400x400px
Configuration
_config.yml Key Settings
title: FridayHacks
url: https://www.fridayhacks.com
timezone: America/New_York
paginate: 5 # Posts per page on homepage
permalink: /:categories/:title/
owner:
name: FridayHacks
email: contact@fridayhacks.com
x: fridayhacks # X/Twitter handle
Adding Navigation Links
Edit _data/navigation.yml:
- title: About
url: /about/
- title: External Link
url: https://example.com
Git Workflow
Branch Structure
master- Main branch, deployed to production- Feature branches for new posts or changes
Commit Messages
For new posts:
add [post-slug] article
For updates:
update [description of change]
For fixes:
fix [description of fix]
Updating the Changelog
After adding a new post, update CHANGELOG.md:
## YYYY-MM-DD
### Added
- **Post Title** - Brief description of the post content and what it covers.
Common Tasks
Creating a New Post
- Create file:
_posts/YYYY-MM-DD-slug.md - Add frontmatter with title, description, tags
- Write content following style guidelines
- Add images to
/assets/img/slug/ - Test locally with
make run - Update
CHANGELOG.md - Commit and push
Updating Site Configuration
- Edit
_config.yml - Restart Jekyll server (changes require restart)
- Test locally before pushing
Adding a New Page
- Create directory:
/pagename/ - Create
index.mdwith frontmatter:--- layout: page title: "Page Title" --- - Add to navigation in
_data/navigation.ymlif needed
Dependencies
Ruby Gems (Gemfile)
- jekyll ~> 3.7
- jekyll-sitemap
- jekyll-feed
- jekyll-paginate
- jekyll-gist
- kramdown-parser-gfm
- webrick ~> 1.7
External Resources
- Google Fonts (Lato)
- Font Awesome 6.5.1 (CDN)
- Umami Analytics
Troubleshooting
Common Issues
Jekyll wonβt start
bundle install
bundle exec jekyll serve
Styles not updating
make clean
make run
Liquid template errors
- Check frontmatter YAML syntax
- Ensure proper closing of Liquid tags
- Check for special characters in titles/descriptions
Images not showing
- Verify path starts with
/assets/img/ - Check file exists and is committed
- Ensure filename matches exactly (case-sensitive)
Code Style in Posts
Supported Languages for Syntax Highlighting
Common languages: bash, python, javascript, ruby, html, css, json, yaml, sql, go, rust, typescript
ASCII Diagrams
Use code blocks for architecture diagrams:
βββββββββββββββββββ βββββββββββββββββββ
β Component A βββββΆβ Component B β
βββββββββββββββββββ βββββββββββββββββββ
Box-drawing characters: β β β β β β β β€ β¬ β΄ βΌ βΆ βΌ
Contact
- Website: https://www.fridayhacks.com
- Email: contact@fridayhacks.com
- X/Twitter: @fridayhacks