jekyll-theme-zer0 0.15.0 β 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +28 -0
- data/README.md +56 -24
- data/_data/README.md +419 -17
- data/_data/generate_statistics.rb +216 -9
- data/_data/generate_statistics.sh +106 -0
- data/_data/github-actions-example.yml +210 -0
- data/_data/navigation/quickstart.yml +11 -3
- data/_data/posts_organization.yml +153 -0
- data/_data/prerequisites.yml +112 -0
- data/_data/statistics_config.yml +203 -0
- data/_data/ui-text.yml +321 -0
- data/_data/update_statistics.sh +126 -0
- data/_includes/content/intro.html +4 -4
- data/_layouts/notebook.html +3 -3
- data/scripts/README.md +3 -0
- data/scripts/lib/changelog.sh +89 -57
- data/scripts/test/lib/run_tests.sh +1 -2
- metadata +9 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 62704de5aed76c7000c418b93977002ded56b588a49183c4548c315bd2b40fdd
|
|
4
|
+
data.tar.gz: acfd3a0d47a33a99af964fe2019e0128bbfb50903640658671bb6090b3b38495
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8db972fbd75ed902880434ab1e8a79ba24ae276492cebce8987cda3ad085b0aeea26fc2174e8cf72594896884c5d1b3b08f816b97a0d1536044d51afa52c2d5e
|
|
7
|
+
data.tar.gz: 839bbeb76675da98c6136c952722154249264fe4998003b4c5e2152401855dcea16ac31864f89e66a30236589e41ecc789361378fd3308a8c529cd8315c67a0f
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.15.2] - 2025-12-19
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Version bump: patch release
|
|
7
|
+
|
|
8
|
+
### Commits in this release
|
|
9
|
+
- e1342ab Add configuration files for content organization, prerequisites, statistics, and UI text
|
|
10
|
+
- 366e8a2 chore(deps): update Ruby gem dependencies (#16)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## [0.15.1] - 2025-12-14
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- update test runner documentation for Bash 3.2 compatibility
|
|
17
|
+
- update version to 0.15.0 and enhance documentation with new features
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- refactor changelog.sh for Bash 3.2 compatibility (macOS default)
|
|
21
|
+
|
|
22
|
+
### Other
|
|
23
|
+
- document Bash 3.2 compatibility in automation
|
|
24
|
+
- unfreeze bundler before updating Gemfile.lock in version-bump workflow
|
|
25
|
+
- update Windows Developer Mode instructions and correct spelling errors
|
|
26
|
+
- Social sharing buttons use production URLs instead of localhost
|
|
27
|
+
- update Gemfile.lock for v0.15.0
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
3
31
|
## [0.15.0] - 2025-12-11
|
|
4
32
|
|
|
5
33
|
### Added
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: zer0-mistakes
|
|
3
3
|
sub-title: Jekyll Theme
|
|
4
4
|
description: Docker-optimized Jekyll theme with AI-powered installation automation and comprehensive error handling.
|
|
5
|
-
version: 0.
|
|
5
|
+
version: 0.15.0
|
|
6
6
|
layout: landing
|
|
7
7
|
tags:
|
|
8
8
|
- jekyll
|
|
@@ -215,12 +215,14 @@ pie title Technology Distribution
|
|
|
215
215
|
|
|
216
216
|
| Layer | Technology | Purpose |
|
|
217
217
|
|-------|-----------|---------|
|
|
218
|
-
| **Framework** | Jekyll 3.
|
|
218
|
+
| **Framework** | Jekyll 3.10.0 | Static site generation |
|
|
219
219
|
| **Styling** | Bootstrap 5.3.3 | Responsive UI components |
|
|
220
|
+
| **Icons** | Bootstrap Icons | Unified iconography |
|
|
220
221
|
| **Development** | Docker | Cross-platform consistency |
|
|
221
222
|
| **Templates** | Liquid | Dynamic content rendering |
|
|
222
223
|
| **Analytics** | PostHog | Privacy-first tracking |
|
|
223
224
|
| **Diagrams** | Mermaid 10+ | Documentation visuals |
|
|
225
|
+
| **Navigation** | Intersection Observer | Scroll spy & accessibility |
|
|
224
226
|
|
|
225
227
|
---
|
|
226
228
|
|
|
@@ -330,6 +332,33 @@ collections:
|
|
|
330
332
|
permalink: /notebooks/:name/
|
|
331
333
|
```
|
|
332
334
|
|
|
335
|
+
### π§ Enhanced Navigation System (v0.14.0)
|
|
336
|
+
|
|
337
|
+
Modern, accessible sidebar navigation with advanced features:
|
|
338
|
+
|
|
339
|
+
- **Intersection Observer Scroll Spy**: 70% reduction in scroll event overhead
|
|
340
|
+
- **Keyboard Shortcuts**: `[` and `]` for section navigation
|
|
341
|
+
- **Swipe Gestures**: Mobile-friendly left/right edge detection
|
|
342
|
+
- **Skip-to-Content**: Accessibility-first WCAG 2.1 Level AA compliant
|
|
343
|
+
- **Mobile TOC FAB**: Floating action button for table of contents
|
|
344
|
+
- **Unified Bootstrap Icons**: Consistent iconography across all components
|
|
345
|
+
- **Focus Management**: Improved screen reader support with ARIA labels
|
|
346
|
+
|
|
347
|
+
| Shortcut | Action |
|
|
348
|
+
|----------|--------|
|
|
349
|
+
| `[` | Previous section |
|
|
350
|
+
| `]` | Next section |
|
|
351
|
+
| `Tab` | Skip to content |
|
|
352
|
+
| Swipe | Toggle sidebar (mobile) |
|
|
353
|
+
|
|
354
|
+
### π Legal & Compliance Pages (v0.15.0)
|
|
355
|
+
|
|
356
|
+
Built-in GDPR/CCPA compliant documentation:
|
|
357
|
+
|
|
358
|
+
- **Privacy Policy**: Comprehensive data collection transparency
|
|
359
|
+
- **Terms of Service**: Ready-to-customize legal framework
|
|
360
|
+
- **Cookie Consent**: Granular user preference management
|
|
361
|
+
|
|
333
362
|
---
|
|
334
363
|
|
|
335
364
|
## π¦ Installation Methods
|
|
@@ -361,7 +390,7 @@ docker-compose up
|
|
|
361
390
|
|
|
362
391
|
```ruby
|
|
363
392
|
# Gemfile
|
|
364
|
-
gem "jekyll-theme-zer0", "~> 0.
|
|
393
|
+
gem "jekyll-theme-zer0", "~> 0.15"
|
|
365
394
|
```
|
|
366
395
|
|
|
367
396
|
---
|
|
@@ -403,12 +432,13 @@ graph TD
|
|
|
403
432
|
|
|
404
433
|
| Directory | Purpose | Key Files |
|
|
405
434
|
|-----------|---------|-----------|
|
|
406
|
-
| `_layouts/` | Page templates | `default.html`, `journals.html`, `landing.html` |
|
|
407
|
-
| `_includes/` | Reusable components | `core/`, `components/`, `analytics/` |
|
|
408
|
-
| `_sass/` | Stylesheets | `custom.scss`, `core/` |
|
|
409
|
-
| `assets/` | Static files | `css/`, `js
|
|
410
|
-
| `scripts/` | Automation | `release`, `build`, `
|
|
411
|
-
| `docs/` | Technical docs | `
|
|
435
|
+
| `_layouts/` | Page templates | `default.html`, `journals.html`, `landing.html`, `notebook.html` |
|
|
436
|
+
| `_includes/` | Reusable components | `core/`, `components/`, `analytics/`, `navigation/` |
|
|
437
|
+
| `_sass/` | Stylesheets | `custom.scss`, `notebooks.scss`, `core/` |
|
|
438
|
+
| `assets/` | Static files | `css/`, `js/sidebar.js`, `images/` |
|
|
439
|
+
| `scripts/` | Automation | `release`, `build`, `convert-notebooks.sh` |
|
|
440
|
+
| `docs/` | Technical docs | `SIDEBAR_IMPROVEMENTS.md`, `JUPYTER_NOTEBOOKS.md` |
|
|
441
|
+
| `pages/` | Content pages | `privacy-policy.md`, `terms-of-service.md` |
|
|
412
442
|
|
|
413
443
|
---
|
|
414
444
|
|
|
@@ -537,8 +567,10 @@ graph LR
|
|
|
537
567
|
| [π Technical Docs](docs/) | Architecture, systems, implementation |
|
|
538
568
|
| [π User Guides](pages/_docs/) | Published tutorials and references |
|
|
539
569
|
| [π€ Copilot Instructions](.github/copilot-instructions.md) | AI development guidelines |
|
|
540
|
-
| [
|
|
570
|
+
| [β¨οΈ Keyboard Navigation](docs/keyboard-navigation.md) | Accessibility shortcuts guide |
|
|
571
|
+
| [π Jupyter Notebooks](docs/JUPYTER_NOTEBOOKS.md) | Notebook conversion documentation |
|
|
541
572
|
| [π PRD](PRD.md) | Product requirements & roadmap |
|
|
573
|
+
| [π Privacy Policy](pages/privacy-policy.md) | GDPR/CCPA compliant privacy docs |
|
|
542
574
|
|
|
543
575
|
---
|
|
544
576
|
|
|
@@ -582,9 +614,9 @@ flowchart LR
|
|
|
582
614
|
/opt/homebrew/bin/bash scripts/release patch --dry-run
|
|
583
615
|
|
|
584
616
|
# Full release
|
|
585
|
-
/opt/homebrew/bin/bash scripts/release patch # 0.
|
|
586
|
-
/opt/homebrew/bin/bash scripts/release minor # 0.
|
|
587
|
-
/opt/homebrew/bin/bash scripts/release major # 0.
|
|
617
|
+
/opt/homebrew/bin/bash scripts/release patch # 0.15.0 β 0.15.1
|
|
618
|
+
/opt/homebrew/bin/bash scripts/release minor # 0.15.0 β 0.16.0
|
|
619
|
+
/opt/homebrew/bin/bash scripts/release major # 0.15.0 β 1.0.0
|
|
588
620
|
```
|
|
589
621
|
|
|
590
622
|
---
|
|
@@ -596,19 +628,19 @@ gantt
|
|
|
596
628
|
title zer0-mistakes Roadmap
|
|
597
629
|
dateFormat YYYY-MM
|
|
598
630
|
section Current
|
|
599
|
-
v0.
|
|
631
|
+
v0.15.x Maintenance :done, 2025-12, 2026-01
|
|
600
632
|
section Future
|
|
601
|
-
v0.
|
|
602
|
-
v0.
|
|
603
|
-
v0.
|
|
633
|
+
v0.16 - CMS Integration :2026-01, 2026-03
|
|
634
|
+
v0.17 - Advanced Analytics:2026-04, 2026-06
|
|
635
|
+
v0.18 - i18n Support :2026-07, 2026-09
|
|
604
636
|
v1.0 - Production Ready :milestone, 2027-01, 1d
|
|
605
637
|
```
|
|
606
638
|
|
|
607
639
|
| Version | Target | Features |
|
|
608
640
|
|---------|--------|----------|
|
|
609
|
-
| **v0.
|
|
610
|
-
| **v0.
|
|
611
|
-
| **v0.
|
|
641
|
+
| **v0.16** | Q1 2026 | Headless CMS integration, content API |
|
|
642
|
+
| **v0.17** | Q2 2026 | A/B testing, conversion funnels |
|
|
643
|
+
| **v0.18** | Q3 2026 | Multi-language support (i18n) |
|
|
612
644
|
| **v1.0** | Q1 2027 | Stable API, 90%+ test coverage |
|
|
613
645
|
|
|
614
646
|
---
|
|
@@ -664,11 +696,11 @@ git push origin feature/awesome-feature
|
|
|
664
696
|
|
|
665
697
|
| Metric | Value |
|
|
666
698
|
|--------|-------|
|
|
667
|
-
| **Current Version** | 0.
|
|
699
|
+
| **Current Version** | 0.15.0 |
|
|
668
700
|
| **Installation Success** | ~95% |
|
|
669
701
|
| **Setup Time** | 2-5 minutes |
|
|
670
|
-
| **RubyGems Downloads** |
|
|
671
|
-
| **Documentation** |
|
|
702
|
+
| **RubyGems Downloads** | 3,000+ |
|
|
703
|
+
| **Documentation** | 20,000+ lines |
|
|
672
704
|
| **Lighthouse Score** | 95+ |
|
|
673
705
|
|
|
674
706
|
---
|
|
@@ -688,6 +720,6 @@ Built with these amazing technologies:
|
|
|
688
720
|
|
|
689
721
|
**Built with β€οΈ for the Jekyll community**
|
|
690
722
|
|
|
691
|
-
**v0.
|
|
723
|
+
**v0.15.0** β’ [Changelog](CHANGELOG.md) β’ [License](LICENSE) β’ [Contributing](CONTRIBUTING.md)
|
|
692
724
|
|
|
693
725
|
|
data/_data/README.md
CHANGED
|
@@ -1,31 +1,433 @@
|
|
|
1
|
-
|
|
1
|
+
# π Zer0-Mistakes Data Directory
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This directory contains YAML data files that power the Zer0-Mistakes Jekyll theme's dynamic features, including navigation, content statistics, internationalization, and content organization.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## π Directory Contents
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
| File | Purpose | Auto-Generated |
|
|
8
|
+
|------|---------|----------------|
|
|
9
|
+
| `navigation/` | Site navigation menus | No |
|
|
10
|
+
| `authors.yml` | Author profile information | No |
|
|
11
|
+
| `content_statistics.yml` | Site content analytics | **Yes** |
|
|
12
|
+
| `statistics_config.yml` | Statistics generation config | No |
|
|
13
|
+
| `ui-text.yml` | Multilingual UI text labels | No |
|
|
14
|
+
| `prerequisites.yml` | Educational prerequisites | No |
|
|
15
|
+
| `posts_organization.yml` | Post section mappings | No |
|
|
16
|
+
| `generate_statistics.rb` | Statistics generator script | No |
|
|
17
|
+
| `generate_statistics.sh` | Bash wrapper script | No |
|
|
18
|
+
| `update_statistics.sh` | CI/CD automation script | No |
|
|
19
|
+
| `github-actions-example.yml` | Example workflow | No |
|
|
8
20
|
|
|
9
|
-
|
|
21
|
+
---
|
|
10
22
|
|
|
11
|
-
|
|
23
|
+
## π Navigation
|
|
12
24
|
|
|
13
|
-
|
|
25
|
+
### `navigation/`
|
|
14
26
|
|
|
15
|
-
|
|
27
|
+
Contains YAML files for site navigation menus (sidebar, header, footer).
|
|
16
28
|
|
|
17
|
-
|
|
29
|
+
**Example structure:**
|
|
30
|
+
```yaml
|
|
31
|
+
# navigation/main.yml
|
|
32
|
+
- title: Home
|
|
33
|
+
url: /
|
|
34
|
+
icon: bi-house
|
|
35
|
+
- title: Documentation
|
|
36
|
+
url: /docs/
|
|
37
|
+
icon: bi-book
|
|
38
|
+
children:
|
|
39
|
+
- title: Getting Started
|
|
40
|
+
url: /docs/getting-started/
|
|
41
|
+
```
|
|
18
42
|
|
|
19
|
-
|
|
43
|
+
---
|
|
20
44
|
|
|
21
|
-
|
|
45
|
+
## π€ Authors
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+
### `authors.yml`
|
|
24
48
|
|
|
25
|
-
|
|
49
|
+
Defines author profiles for multi-author sites.
|
|
26
50
|
|
|
27
|
-
|
|
51
|
+
**Structure:**
|
|
52
|
+
```yaml
|
|
53
|
+
john_doe:
|
|
54
|
+
name: "John Doe"
|
|
55
|
+
bio: "Senior Developer and Technical Writer"
|
|
56
|
+
avatar: /assets/images/authors/john.jpg
|
|
57
|
+
email: john@example.com
|
|
58
|
+
twitter: johndoe
|
|
59
|
+
github: johndoe
|
|
60
|
+
website: https://johndoe.dev
|
|
61
|
+
```
|
|
28
62
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
63
|
+
**Usage in posts:**
|
|
64
|
+
```yaml
|
|
65
|
+
---
|
|
66
|
+
author: john_doe
|
|
67
|
+
---
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## π Content Statistics
|
|
73
|
+
|
|
74
|
+
### `content_statistics.yml` β‘ *Auto-Generated*
|
|
75
|
+
|
|
76
|
+
Contains computed statistics about site content. **Do not edit manually** - this file is regenerated by `generate_statistics.rb`.
|
|
77
|
+
|
|
78
|
+
**Generated metrics:**
|
|
79
|
+
- `total_posts`: Total number of posts
|
|
80
|
+
- `published`: Published posts count
|
|
81
|
+
- `drafts`: Draft posts count
|
|
82
|
+
- `categories`: Posts per category
|
|
83
|
+
- `category_count`: Total unique categories
|
|
84
|
+
- `tags`: Posts per tag
|
|
85
|
+
- `tag_count`: Total unique tags
|
|
86
|
+
- `focus_areas`: Content by focus area (DevOps, Frontend, etc.)
|
|
87
|
+
- `skill_levels`: Content by difficulty level
|
|
88
|
+
- `content_types`: Content by type (tutorial, guide, etc.)
|
|
89
|
+
- `authors`: Posts per author
|
|
90
|
+
- `content_freshness`: Age distribution of content
|
|
91
|
+
- `date_range`: Earliest and latest post dates
|
|
92
|
+
- `derived_stats`: Calculated averages and insights
|
|
93
|
+
- `generated_at`: Timestamp of generation
|
|
94
|
+
|
|
95
|
+
**Accessing in templates:**
|
|
96
|
+
```liquid
|
|
97
|
+
{% assign stats = site.data.content_statistics %}
|
|
98
|
+
<p>Total posts: {{ stats.total_posts }}</p>
|
|
99
|
+
<p>Most posts in: {{ stats.derived_stats.most_common_category }}</p>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### `statistics_config.yml`
|
|
103
|
+
|
|
104
|
+
Configuration for the statistics generator. Defines keyword mappings for content analysis.
|
|
105
|
+
|
|
106
|
+
**Sections:**
|
|
107
|
+
```yaml
|
|
108
|
+
# Focus area detection keywords
|
|
109
|
+
focus_areas:
|
|
110
|
+
devops: [docker, kubernetes, ci/cd, jenkins, terraform]
|
|
111
|
+
frontend: [javascript, react, vue, css, html]
|
|
112
|
+
backend: [python, node, api, database, sql]
|
|
113
|
+
# ... more areas
|
|
114
|
+
|
|
115
|
+
# Skill level detection
|
|
116
|
+
skill_levels:
|
|
117
|
+
beginner: [introduction, basics, getting started, 101]
|
|
118
|
+
intermediate: [advanced basics, building, implementing]
|
|
119
|
+
advanced: [optimization, architecture, scaling]
|
|
120
|
+
expert: [mastering, deep dive, internals]
|
|
121
|
+
|
|
122
|
+
# Content type detection
|
|
123
|
+
content_types:
|
|
124
|
+
tutorial: [tutorial, how-to, step-by-step, walkthrough]
|
|
125
|
+
guide: [guide, handbook, manual, reference]
|
|
126
|
+
# ... more types
|
|
127
|
+
|
|
128
|
+
# Display preferences
|
|
129
|
+
display:
|
|
130
|
+
top_categories: 10
|
|
131
|
+
top_tags: 20
|
|
132
|
+
top_focus_areas: 8
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## π§ Statistics Scripts
|
|
138
|
+
|
|
139
|
+
### `generate_statistics.rb`
|
|
140
|
+
|
|
141
|
+
Ruby script that analyzes site content and generates `content_statistics.yml`.
|
|
142
|
+
|
|
143
|
+
**Usage:**
|
|
144
|
+
```bash
|
|
145
|
+
# Direct execution
|
|
146
|
+
ruby _data/generate_statistics.rb
|
|
147
|
+
|
|
148
|
+
# Via wrapper script
|
|
149
|
+
bash _data/generate_statistics.sh
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Features:**
|
|
153
|
+
- Front matter parsing
|
|
154
|
+
- Category and tag analysis
|
|
155
|
+
- Focus area detection (via keywords)
|
|
156
|
+
- Skill level classification
|
|
157
|
+
- Content freshness calculation
|
|
158
|
+
- Author statistics
|
|
159
|
+
- Derived metrics computation
|
|
160
|
+
|
|
161
|
+
### `generate_statistics.sh`
|
|
162
|
+
|
|
163
|
+
Bash wrapper script for statistics generation with validation and preview.
|
|
164
|
+
|
|
165
|
+
**Usage:**
|
|
166
|
+
```bash
|
|
167
|
+
# Generate statistics
|
|
168
|
+
./generate_statistics.sh
|
|
169
|
+
|
|
170
|
+
# Preview output (requires yq)
|
|
171
|
+
./generate_statistics.sh --preview
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Features:**
|
|
175
|
+
- Ruby availability check
|
|
176
|
+
- Configuration file validation
|
|
177
|
+
- Content directory verification
|
|
178
|
+
- Color-coded output
|
|
179
|
+
- Optional preview with yq
|
|
180
|
+
|
|
181
|
+
### `update_statistics.sh`
|
|
182
|
+
|
|
183
|
+
CI/CD automation script for running statistics updates in pipelines.
|
|
184
|
+
|
|
185
|
+
**Environment Variables:**
|
|
186
|
+
```bash
|
|
187
|
+
CI=true # Indicates CI environment
|
|
188
|
+
AUTO_PUSH=true # Auto-commit and push changes
|
|
189
|
+
FORCE_UPDATE=true # Skip hash comparison
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**Features:**
|
|
193
|
+
- CI environment detection
|
|
194
|
+
- Hash-based change detection
|
|
195
|
+
- Automatic git commit/push
|
|
196
|
+
- Skip unchanged content
|
|
197
|
+
- Detailed logging
|
|
198
|
+
|
|
199
|
+
### `github-actions-example.yml`
|
|
200
|
+
|
|
201
|
+
Example GitHub Actions workflow for automated statistics updates.
|
|
202
|
+
|
|
203
|
+
**Copy to `.github/workflows/update-statistics.yml` to enable.**
|
|
204
|
+
|
|
205
|
+
**Triggers:**
|
|
206
|
+
- Push to `pages/_posts/**`, `pages/_docs/**`, `_data/statistics_config.yml`
|
|
207
|
+
- Manual workflow_dispatch with options
|
|
208
|
+
- Weekly schedule (Monday 6 AM UTC)
|
|
209
|
+
|
|
210
|
+
**Workflow Options:**
|
|
211
|
+
- `force_update`: Update even if no changes detected
|
|
212
|
+
- `skip_push`: Generate but don't commit
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## π Internationalization (i18n)
|
|
217
|
+
|
|
218
|
+
### `ui-text.yml`
|
|
219
|
+
|
|
220
|
+
Multilingual UI text labels for theme components.
|
|
221
|
+
|
|
222
|
+
**Supported Languages:**
|
|
223
|
+
- `en` - English (default)
|
|
224
|
+
- `es` - Spanish
|
|
225
|
+
- `fr` - French
|
|
226
|
+
- `de` - German
|
|
227
|
+
- `ar` - Arabic (RTL)
|
|
228
|
+
|
|
229
|
+
**Structure:**
|
|
230
|
+
```yaml
|
|
231
|
+
en:
|
|
232
|
+
# Navigation
|
|
233
|
+
skip_links: "Skip to main content"
|
|
234
|
+
menu_label: "Menu"
|
|
235
|
+
search_label: "Search"
|
|
236
|
+
|
|
237
|
+
# Content
|
|
238
|
+
read_more: "Read more"
|
|
239
|
+
table_of_contents: "Table of Contents"
|
|
240
|
+
|
|
241
|
+
# Statistics
|
|
242
|
+
stats_total_posts: "Total Posts"
|
|
243
|
+
stats_published: "Published"
|
|
244
|
+
# ... more labels
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Usage in templates:**
|
|
248
|
+
```liquid
|
|
249
|
+
{% assign ui = site.data.ui-text[site.lang | default: 'en'] %}
|
|
250
|
+
<span>{{ ui.read_more }}</span>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## π Educational Content
|
|
256
|
+
|
|
257
|
+
### `prerequisites.yml`
|
|
258
|
+
|
|
259
|
+
Defines prerequisites for tutorials and educational content.
|
|
260
|
+
|
|
261
|
+
**Structure:**
|
|
262
|
+
```yaml
|
|
263
|
+
- id: git-basics
|
|
264
|
+
title: "Git Version Control Basics"
|
|
265
|
+
description: "Understanding commits, branches, and basic git workflow"
|
|
266
|
+
level: beginner
|
|
267
|
+
category: version-control
|
|
268
|
+
|
|
269
|
+
- id: docker-fundamentals
|
|
270
|
+
title: "Docker Container Fundamentals"
|
|
271
|
+
description: "Understanding containers, images, and Docker CLI"
|
|
272
|
+
level: intermediate
|
|
273
|
+
category: devops
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Usage in post front matter:**
|
|
277
|
+
```yaml
|
|
278
|
+
---
|
|
279
|
+
prerequisites:
|
|
280
|
+
- git-basics
|
|
281
|
+
- docker-fundamentals
|
|
282
|
+
---
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**Usage in templates:**
|
|
286
|
+
```liquid
|
|
287
|
+
{% if page.prerequisites %}
|
|
288
|
+
<div class="prerequisites">
|
|
289
|
+
<h4>Prerequisites</h4>
|
|
290
|
+
<ul>
|
|
291
|
+
{% for prereq_id in page.prerequisites %}
|
|
292
|
+
{% assign prereq = site.data.prerequisites | where: "id", prereq_id | first %}
|
|
293
|
+
<li>{{ prereq.title }} - {{ prereq.description }}</li>
|
|
294
|
+
{% endfor %}
|
|
295
|
+
</ul>
|
|
296
|
+
</div>
|
|
297
|
+
{% endif %}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## π Post Organization
|
|
303
|
+
|
|
304
|
+
### `posts_organization.yml`
|
|
305
|
+
|
|
306
|
+
Configuration for post section mappings and URL patterns.
|
|
307
|
+
|
|
308
|
+
**Sections:**
|
|
309
|
+
```yaml
|
|
310
|
+
sections:
|
|
311
|
+
- id: ai-machine-learning
|
|
312
|
+
title: "AI & Machine Learning"
|
|
313
|
+
directory: "pages/_posts/ai & machine learning"
|
|
314
|
+
icon: "bi-robot"
|
|
315
|
+
color: "#8B5CF6"
|
|
316
|
+
description: "Artificial intelligence, ML models, and data science"
|
|
317
|
+
aliases: ["ai", "ml", "machine-learning", "artificial-intelligence"]
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**Category to Section Mapping:**
|
|
321
|
+
```yaml
|
|
322
|
+
category_to_section:
|
|
323
|
+
"ai & machine learning": ai-machine-learning
|
|
324
|
+
"artificial intelligence": ai-machine-learning
|
|
325
|
+
"devops": devops
|
|
326
|
+
"docker": devops
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
**URL Pattern:**
|
|
330
|
+
```yaml
|
|
331
|
+
url_pattern: "/:categories/:year/:month/:day/:title/"
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## π Automation Workflows
|
|
337
|
+
|
|
338
|
+
### Setting Up Automated Statistics
|
|
339
|
+
|
|
340
|
+
1. **Copy the workflow file:**
|
|
341
|
+
```bash
|
|
342
|
+
cp _data/github-actions-example.yml .github/workflows/update-statistics.yml
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
2. **Ensure scripts are executable:**
|
|
346
|
+
```bash
|
|
347
|
+
chmod +x _data/generate_statistics.sh
|
|
348
|
+
chmod +x _data/update_statistics.sh
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
3. **Customize triggers** in the workflow file as needed.
|
|
352
|
+
|
|
353
|
+
4. **Push to main branch** to enable the workflow.
|
|
354
|
+
|
|
355
|
+
### Manual Statistics Update
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
# From repository root
|
|
359
|
+
cd _data
|
|
360
|
+
ruby generate_statistics.rb
|
|
361
|
+
|
|
362
|
+
# Or using the wrapper
|
|
363
|
+
bash generate_statistics.sh
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## π οΈ Customization
|
|
369
|
+
|
|
370
|
+
### Adding New Focus Areas
|
|
371
|
+
|
|
372
|
+
Edit `statistics_config.yml`:
|
|
373
|
+
```yaml
|
|
374
|
+
focus_areas:
|
|
375
|
+
my_new_area:
|
|
376
|
+
- keyword1
|
|
377
|
+
- keyword2
|
|
378
|
+
- keyword3
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### Adding New Languages
|
|
382
|
+
|
|
383
|
+
Add a new language block to `ui-text.yml`:
|
|
384
|
+
```yaml
|
|
385
|
+
ja: # Japanese
|
|
386
|
+
skip_links: "γ‘γ€γ³γ³γ³γγ³γγΈγΉγγγ"
|
|
387
|
+
menu_label: "γ‘γγ₯γΌ"
|
|
388
|
+
# ... translate all labels
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Adding New Prerequisites
|
|
392
|
+
|
|
393
|
+
Edit `prerequisites.yml`:
|
|
394
|
+
```yaml
|
|
395
|
+
- id: my-prerequisite
|
|
396
|
+
title: "My New Prerequisite"
|
|
397
|
+
description: "Description of what this covers"
|
|
398
|
+
level: beginner # beginner|intermediate|advanced|expert
|
|
399
|
+
category: my-category
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## π Best Practices
|
|
405
|
+
|
|
406
|
+
1. **Never edit `content_statistics.yml` manually** - it will be overwritten
|
|
407
|
+
2. **Keep `statistics_config.yml` updated** when adding new content types
|
|
408
|
+
3. **Test configuration changes locally** before pushing
|
|
409
|
+
4. **Use consistent language codes** in `ui-text.yml`
|
|
410
|
+
5. **Keep prerequisite IDs kebab-case** for URL friendliness
|
|
411
|
+
6. **Validate YAML syntax** before committing:
|
|
412
|
+
```bash
|
|
413
|
+
ruby -ryaml -e "YAML.load_file('_data/your-file.yml')"
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## π€ Contributing
|
|
419
|
+
|
|
420
|
+
When modifying data files:
|
|
421
|
+
|
|
422
|
+
1. Follow existing YAML formatting conventions
|
|
423
|
+
2. Test changes locally with `bundle exec jekyll serve`
|
|
424
|
+
3. Run statistics generation to verify no errors
|
|
425
|
+
4. Update this README if adding new files or features
|
|
426
|
+
|
|
427
|
+
See [CONTRIBUTING.md](../CONTRIBUTING.md) for full guidelines.
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## π License
|
|
432
|
+
|
|
433
|
+
This project is licensed under the MIT License - see the [LICENSE](../LICENSE) file for details.
|