A Hugo-powered site using the Docsy theme, focused on data engineering and analytics.
- π Clean, responsive blog layout with modern UI
- π Built-in search functionality with Lunr.js
- π± Mobile-first, responsive design
- π¨ Customizable theme with SCSS support
- π Syntax highlighting with Hugo's built-in Chroma
- ποΈ Modular content organization
- π Data visualization support
- π Automatic table of contents
- π Multilingual support (i18n ready)
- π± Social media sharing capabilities
- π SEO optimized
- β‘ Fast page loads with asset minification
-
Per Post Basis Add the following to your post's front matter:
--- # Required toc: true # Enable table of contents # Optional TOC Settings toc_float: true # Make TOC float on the side (true/false) toc_label: "Contents" # Customize TOC title toc_icon: "list" # Add an icon (uses Font Awesome icons) toc_sticky: true # Make TOC sticky on scroll (true/false) toc_expand: true # Expand all TOC sections by default (true/false) toc_depth: 4 # Maximum heading level to include (1-6) ---
Available Icons: You can use any Font Awesome icon name (without the
fa-prefix) from Font Awesome Icons. -
Global TOC Settings The following settings are configured in
config/_default/config.toml:[markup.tableOfContents] startLevel = 2 # Start with h2 headings endLevel = 4 # Include up to h4 headings ordered = false # Use unordered lists for TOC
The site supports the following Markdown features through Goldmark (Hugo's default markdown renderer):
- Bold, italic,
strikethrough,inline code - Headers (
# H1to###### H6) - Links and images
- Lists (ordered and unordered)
- Blockquotes
- Horizontal rules
- Tables
- Task lists
- Definition lists
- Footnotes
- Strikethrough
- Autolinking
- Typographic replacements (smart quotes, dashes, etc.)
```python
def hello():
print("Hello, World!")
```---
title: "Your Blog Post Title"
date: 2024-04-18T00:00:00+05:30
description: "A brief description of your post"
categories: ["category1", "category2"]
tags: ["tag1", "tag2", "tag3"]
weight: 100
toc: true
draft: false
---title: Post title (required)date: Publication date (required)lastmod: Last modified datedescription: Short description for SEO and previewscategories: Array of categoriestags: Array of tagsweight: Sorting weight (lower numbers appear first)toc: Enable/disable table of contentsdraft: Mark as draft (won't be published)images: Array of image paths for social sharing
- Hugo (Extended version required for SCSS support)
- Git
- Node.js (for development and theme customization)
- Yarn or npm (for managing frontend dependencies)
-
Clone the repository:
git clone https://github.com/aakashkh/data-patterns.git cd data-patterns -
Install dependencies:
# Install Node.js dependencies npm install # Or with Yarn yarn install
-
Start the development server:
# For development (includes drafts) hugo server -D --disableFastRender # For production build hugo --minify # For production build with drafts hugo -D --minify
-
Open your browser to
http://localhost:1313
# Create a new blog post with date prefix
hugo new blog/YYYY-MM-DD-post-title.md
# Create a post in a specific section
hugo new blog/section-name/YYYY-MM-DD-post-title.md
# Create a post with default front matter
hugo new --kind blog-post blog/YYYY-MM-DD-post-title.md-
Create a new file in
content/en/blog/following this pattern:- Filename:
YYYY-MM-DD-post-title.md - Example:
2025-10-20-getting-started.md
- Filename:
-
Add front matter:
--- title: "Your Post Title" date: "2025-10-20T14:30:00+05:30" draft: true tags: ["tag1", "tag2"] categories: ["category"] ---
# Create a new page in the root section
hugo new your-page.md
# Create a page in a specific section
hugo new section-name/page-name.md
# Create a page with a specific template
hugo new --kind page-bundle section-name/page-name- Main configuration:
hugo.yaml - Environment-specific settings:
config/directory - Theme settings:
config/_default/
- Custom SCSS:
assets/scss/ - Theme overrides:
layouts/ - Custom CSS:
static/css/
- Search provider: Lunr.js (client-side)
- Configuration:
hugo.yamlunderparams.offlineSearch - Search index: Generated at build time
- Minification: Enabled by default in production
- Asset pipeline: Hugo Pipes for CSS/JS processing
- Image processing: Built-in image processing with Hugo Pipes
- Hugo Extended (v0.100.0+ recommended)
- Node.js (v16+)
- npm or Yarn
- PostCSS
- Autoprefixer
- CSSNano
- Terser (for JS minification)
# Run HTML validation
npm run test:html
# Run accessibility tests
npm run test:a11y
# Run all tests
npm testThe site is configured to deploy to GitHub Pages. Push to the main branch to trigger a build.
# Build the site
hugo
# Output will be in the `public/` directorydata-patterns/
βββ .github/ # GitHub workflows and templates
βββ assets/ # SCSS, JS, and other assets
β βββ css/ # Compiled CSS
β βββ js/ # Custom JavaScript
β βββ scss/ # SCSS source files
βββ content/ # Website content
β βββ en/ # English content
β βββ blog/ # Blog posts
β βββ _index.md # Homepage content
βββ data/ # Data files
βββ i18n/ # Translation files
βββ layouts/ # HTML templates
β βββ _default/ # Default templates
β βββ partials/ # Reusable partials
β βββ shortcodes/ # Custom shortcodes
βββ static/ # Static files
β βββ images/ # Global images
β βββ fonts/ # Custom fonts
β βββ uploads/ # User uploads
βββ themes/ # Theme directory
βββ .gitignore # Git ignore rules
βββ hugo.yaml # Main configuration
βββ package.json # Node.js dependencies
βββ README.md # This file
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Set up your development environment:
# Install dependencies npm install # Start development server hugo server -D
- Make your changes
- Run tests:
npm test - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Hugo's coding style guide
- Use semantic HTML5
- Follow BEM methodology for CSS
- Use ESLint and StyleLint for code quality
- Use the Conventional Commits specification
- Start with type:
feat:,fix:,docs:,style:,refactor:,test:,chore: - Keep the first line under 72 characters
- Reference issues and pull requests liberally
This project is licensed under the MIT License - see the LICENSE file for details.
# If you get errors about missing modules
hugo mod tidy
# If you get SCSS compilation errors
npm install- Make sure you're using Hugo Extended
- Check for port conflicts (default is 1313)
- Ensure all dependencies are installed
# Build for production
hugo --minify
# Deploy to GitHub Pages
./deploy.sh- Set build command:
hugo --gc --minify - Set publish directory:
public - Set environment variable:
HUGO_VERSION = 0.100.0(or your Hugo version)
- Set build command:
hugo --gc --minify - Set output directory:
public - Set environment variable:
HUGO_VERSION = 0.100.0
Built with β€οΈ using Hugo and Docsy
- Blog permalinks:
/:section/:year/:month/:day/:slug/(configured inhugo.yaml) - Search: Offline search with Lunr.js (
params.offlineSearch: true) - Theme: Docsy (imported as a Hugo Module)
- Performance: Optimized for fast loading with lazy loading and asset minification
- Security: Content Security Policy (CSP) headers configured
- SEO: Optimized with JSON-LD structured data and OpenGraph tags
- Analytics: Google Analytics and Google Tag Manager support included
- Comments: Disqus integration available (uncomment in config)