bilingual-jekyll-resume-theme 0.3.1 → 0.5.0

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/README.md +131 -20
  4. data/_data/ar/months.yml +12 -0
  5. data/_includes/ar-date.html +32 -0
  6. data/_includes/resume-section-ar.html +10 -4
  7. data/_includes/resume-section-en.html +9 -4
  8. data/_layouts/default.html +2 -0
  9. data/_layouts/resume-ar.html +4 -2
  10. data/_layouts/resume-en.html +3 -1
  11. data/docs/CONFIG_GUIDE.md +28 -13
  12. data/docs/DATA_GUIDE.md +106 -27
  13. data/docs/INCLUDES_GUIDE.md +17 -8
  14. data/docs/LAYOUTS_GUIDE.md +40 -25
  15. data/docs/PROJECT_OVERVIEW.md +69 -0
  16. data/docs/SASS_GUIDE.md +3 -1
  17. data/docs/{_config.sample.yml → _data/_config.sample.yml} +2 -1
  18. data/docs/_data/ar/associations.yml +27 -0
  19. data/docs/_data/ar/certifications.yml +73 -0
  20. data/docs/_data/ar/courses.yml +39 -0
  21. data/docs/_data/ar/education.yml +49 -0
  22. data/docs/_data/ar/experience.yml +50 -0
  23. data/docs/_data/ar/header.yml +6 -0
  24. data/docs/_data/ar/interests.yml +13 -0
  25. data/docs/_data/ar/languages.yml +29 -0
  26. data/docs/_data/ar/links.yml +17 -0
  27. data/docs/_data/ar/projects.yml +28 -0
  28. data/docs/_data/ar/recognitions.yml +23 -0
  29. data/docs/_data/ar/skills.yml +17 -0
  30. data/docs/_data/ar/volunteering.yml +39 -0
  31. data/docs/_data/en/associations.yml +27 -0
  32. data/docs/_data/en/certifications.yml +73 -0
  33. data/docs/_data/en/courses.yml +39 -0
  34. data/docs/_data/en/education.yml +49 -0
  35. data/docs/_data/en/experience.yml +50 -0
  36. data/docs/_data/en/header.yml +6 -0
  37. data/docs/_data/en/interests.yml +13 -0
  38. data/docs/_data/en/languages.yml +29 -0
  39. data/docs/_data/en/links.yml +17 -0
  40. data/docs/_data/en/projects.yml +28 -0
  41. data/docs/_data/en/recognitions.yml +23 -0
  42. data/docs/_data/en/skills.yml +17 -0
  43. data/docs/_data/en/volunteering.yml +39 -0
  44. metadata +71 -25
  45. /data/{CODE_OF_CONDUCT.MD → CODE_OF_CONDUCT.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82f9ca0be84e6576a493181eb0efe5878302db7196f3843f8468d2048a975995
4
- data.tar.gz: 9b477efb312e3a1e6d71c3ac8e6ab4e95c04f3a2053ec7042412fc659b6148df
3
+ metadata.gz: 6a564ca7ea40cba9ce7787387ec40f652ba6d372c20efc4e1ea7d4ca96c7fc07
4
+ data.tar.gz: f1bda2da34e9b4655a74a4e08657cb56ae52b8d735bb42e705c59c369fd1bd29
5
5
  SHA512:
6
- metadata.gz: 4cb13f53c7a175d3e353ad4bf169786d314c79c838b0aafafba6d57fec578b82fecf5171ae4cbac95f9c2ea2080146e7ae74d0b8067e4c834932af60c4172325
7
- data.tar.gz: 14a87ccc8f9ed64072ac5b210ed74e0047753a274987e2fd52c527cb728c7bb2f6e3aab22a091299051b8bdefbd8387966b524d0f61302ef835516fee4f9b19f
6
+ metadata.gz: da02b5f0d81a45531f55151bc1eec5eb9bf0acb74229d40cac47a41a452bfac4c6da21f0ee970930e5b4b40128b56189978c01809301f0673c1ba94e88c0b9fd
7
+ data.tar.gz: ae3a25641c914cfd40894c7484453aa6535cc61f906f9c4c0ffb6653736534fe424ff7d27ccaa859bd1defb0315407950b8c60ed43b9b5dcf48fc246144ebfe5
data/CHANGELOG.md CHANGED
@@ -4,6 +4,48 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+ ## [0.5.0] - 2025-11-06
8
+
9
+ ### Added
10
+ * Add sample configuration file for bilingual Jekyll resume theme ([`ce25360`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/ce25360b10bcc8bd1a26e4d3b3abb20a9f0d4e04))
11
+
12
+ * Add conditional Mastodon link for social verification ([`5bb7f62`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/5bb7f62586871c904df10003fe17f5f9fce9fce4))
13
+
14
+ * Add default Arabic months i18n files ([`1c3cac6`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/1c3cac6c4f0179f0447c746d6d950c3addc33907))
15
+
16
+
17
+ ### Changed
18
+ * Add project overview for bilingual Jekyll resume theme ([`6708f50`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/6708f50bc84a6dd62fb7f77e5ed7797d7a97bd08))
19
+
20
+ * Revise README for bilingual Jekyll resume theme ([`7efff88`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/7efff88b81d48aa9fac5d70cd4501e05f888e1db))
21
+
22
+ * Update configuration and data guides for bilingual resume theme ([`9c0f9e9`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/9c0f9e9c20633970ffeb795cc6bd581caf7a4e62))
23
+
24
+ * Add Arabic and English resume data samples ([`a86a668`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/a86a6680bb1384bc58053b502157aa0ae568a039))
25
+
26
+ * Enhance ar-date include with detailed comments and usage instructions ([`5f297d1`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/5f297d1f2184b24e7feef8257a8bd9d73295d321))
27
+
28
+ * Update bilingual-jekyll-resume-theme.gemspec ([`ca84a88`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/ca84a886bcdb7d8a41c1ed60dffd477207db9739))
29
+
30
+ * Rename CODE_OF_CONDUCT.MD to CODE_OF_CONDUCT.md ([`127813b`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/127813b4f6acb867dff576977b899d1b46d20241))
31
+
32
+ * Use ar-date include for Date of Birth ([`0b2ec85`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/0b2ec854638e9ceaefddc5b87f6a855cdeb0b596))
33
+
34
+ ## [0.4.0] - 2025-11-05
35
+
36
+ ### Added
37
+ * Add logger as explicit dependency ([`327702b`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/327702beb3383375172401d8f5869ee3ab3f50a9))
38
+
39
+
40
+ ### Changed
41
+ * Move intro text from _config to data file ([`d026de9`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/d026de92817b3de76843e18b8770c20136ae0691))
42
+
43
+ * Make summary optional in association.yml ([`a12cdc8`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/a12cdc8b9d64db5c3368db6dc270c03a4f353538))
44
+
45
+ * Make summary optional in recognition.yml ([`34b4661`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/34b46613dc561a3d1868fdf8d64f7cfd80e02e5d))
46
+
47
+ * Make description optional in skills.yml ([`601dbf9`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/601dbf9d81a621366d3a0e46f7079da42aa73e75))
48
+
7
49
  ## [0.3.1] - 2025-11-03
8
50
 
9
51
  ### Added
@@ -83,6 +125,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
83
125
 
84
126
  * Initial commit (New Theme Template) ([`00af662`](https://github.com/kmutahar/bilingual-jekyll-resume-theme/commit/00af6628dfec7aefe0ef7d7083bf98c9713a5ffd))
85
127
 
128
+ [0.5.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.4.0...v0.5.0
129
+ [0.4.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.3.1...v0.4.0
86
130
  [0.3.1]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.3.0...v0.3.1
87
131
  [0.3.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.2.0...v0.3.0
88
132
  [0.2.0]: https://github.com/kmutahar/bilingual-jekyll-resume-theme/compare/v0.1.1...v0.2.0
data/README.md CHANGED
@@ -1,50 +1,161 @@
1
1
  # bilingual-jekyll-resume-theme
2
2
 
3
- Welcome to your new Jekyll theme! In this directory, you'll find the files you need to be able to package up your theme into a gem. Put your layouts in `_layouts`, your includes in `_includes`, your sass files in `_sass` and any other assets in `assets`.
3
+ [![Latest release](https://img.shields.io/github/v/release/kmutahar/bilingual-jekyll-resume-theme?display_name=tag)](https://github.com/kmutahar/bilingual-jekyll-resume-theme/releases) [![Gem Version](https://badge.fury.io/rb/bilingual-jekyll-resume-theme.svg?icon=si%3Arubygems)](https://badge.fury.io/rb/bilingual-jekyll-resume-theme)
4
4
 
5
- To experiment with this code, add some sample content and run `bundle exec jekyll serve` this directory is setup just like a Jekyll site!
5
+ A flexible Jekyll theme for creating clean, data-driven, bilingual (English & Arabic) resume/CV websites. Created and maintained by Khaldoon Mutahar. See the latest version on the [Releases page](https://github.com/kmutahar/bilingual-jekyll-resume-theme/releases).
6
+ Inspired by and originally forked from [Joel Glovier’s resume template](https://github.com/jglovier/resume-template/). Joel’s version was a basic English-only theme with limited customization (e.g., no section reordering); this project has since evolved into a fully separate theme authored by Khaldoon.
6
7
 
7
- TODO: Delete this and the text above, and describe your gem
8
+ ## Features
8
9
 
9
- ## Installation
10
+ - **Bilingual support**: Separate layouts for English (`resume-en.html`) and Arabic (`resume-ar.html`) with full RTL support
11
+ - **Data-driven architecture**: All resume content stored in YAML files, supporting multiple data paths and versioning
12
+ - **12 resume sections**: Experience, Education, Certifications, Courses, Volunteering, Projects, Skills, Recognition, Associations, Languages, Links, Interests
13
+ - **Print-friendly**: Optimized for PDF generation and printing
14
+ - **SEO ready**: Built-in support for multilingual SEO, sitemap, and feed generation
15
+ - **Arabic month support**: Arabic date formatting included out of the box (`_data/ar/months.yml`)
10
16
 
11
- Add this line to your Jekyll site's `Gemfile`:
17
+ ## Quick Start
12
18
 
19
+ ### Installation
20
+
21
+ 1. Add to your Jekyll site's `Gemfile`:
13
22
  ```ruby
14
23
  gem "bilingual-jekyll-resume-theme"
15
24
  ```
16
25
 
17
- And add this line to your Jekyll site's `_config.yml`:
18
-
26
+ 2. Add to your `_config.yml`:
19
27
  ```yaml
20
28
  theme: bilingual-jekyll-resume-theme
21
29
  ```
22
30
 
23
- And then execute:
31
+ 3. Install dependencies:
32
+ ```bash
33
+ bundle install
34
+ ```
35
+
36
+ ### Basic Setup
37
+
38
+ 1. **Copy sample configuration**: Use `docs/_data/_config.sample.yml` as a starting point for your `_config.yml`
24
39
 
25
- $ bundle
40
+ 2. **Copy sample data files**:
41
+ - English data: Copy files from `docs/_data/en/` to your `_data/en/` directory (includes `header.yml` for the intro paragraph)
42
+ - Arabic data: Copy files from `docs/_data/ar/` to your `_data/ar/` directory (includes `header.yml` for the Arabic intro paragraph)
26
43
 
27
- Or install it yourself as:
44
+ 3. **Create resume pages**: Create pages using the `resume-en` and `resume-ar` layouts:
45
+ ```yaml
46
+ ---
47
+ layout: resume-en
48
+ permalink: /resume/en/
49
+ lang: en
50
+ t_id: resume
51
+ ---
52
+ ```
28
53
 
29
- $ gem install bilingual-jekyll-resume-theme
54
+ 4. **Run the development server**:
55
+ ```bash
56
+ bundle exec jekyll serve
57
+ ```
30
58
 
31
- ## Usage
59
+ Visit `http://localhost:4000` to see your resume!
32
60
 
33
- TODO: Write usage instructions here. Describe your available layouts, includes, sass and/or assets.
61
+ ## Documentation
34
62
 
35
- ## Contributing
63
+ This theme is fully documented. Choose the guide that fits your needs:
64
+
65
+ ### 📘 [Configuration Guide](docs/CONFIG_GUIDE.md)
66
+ Complete guide to `_config.yml` settings. Learn how to configure sections, contact info, social links, analytics, and more. **Start here for beginners.**
67
+
68
+ ### 📊 [Data Structure Guide](docs/DATA_GUIDE.md)
69
+ Detailed documentation of all 12 data file types (experience, education, skills, etc.) with examples. Learn how to structure your YAML files and what fields are required vs optional.
70
+
71
+ ### 🎨 [Layouts Guide](docs/LAYOUTS_GUIDE.md)
72
+ Deep dive into how layouts work, how data flows through them, and how to create custom layouts. Useful for advanced customization.
73
+
74
+ ### 🧩 [Includes Guide](docs/INCLUDES_GUIDE.md)
75
+ Understanding the theme's include system, how sections render, and how to add new sections or customize existing ones.
76
+
77
+ ### 🎨 [SASS/SCSS Guide](docs/SASS_GUIDE.md)
78
+ Complete guide to the theme's styling system, how to customize colors/fonts, and how to override styles without forking the theme.
79
+
80
+ ## Project Structure
81
+
82
+ ```
83
+ bilingual-jekyll-resume-theme/
84
+ ├── _layouts/ # HTML templates (default, resume-en, resume-ar, profile)
85
+ ├── _includes/ # Reusable components (sections, headers, analytics)
86
+ ├── _sass/ # SCSS stylesheets (RTL support, print styles)
87
+ ├── _data/ # Theme data (includes ar/months.yml)
88
+ ├── assets/ # CSS, images, favicons
89
+ └── docs/ # Documentation and sample files
90
+ ├── _data/ # Sample data files (copy to your site's _data/)
91
+ └── *.md # Documentation guides
92
+ ```
93
+
94
+ ## Key Concepts
95
+
96
+ ### Data Paths
36
97
 
37
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/bilingual-jekyll-resume-theme. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
98
+ **Recommended approach (for beginners):** Use language-specific folders. The theme supports separate data paths for English and Arabic:
99
+ ```yaml
100
+ active_resume_path_en: "en" # Uses _data/en/* (recommended)
101
+ active_resume_path_ar: "ar" # Uses _data/ar/* (recommended)
102
+ ```
103
+
104
+ This is the recommended approach even if you're only using one language, as it keeps your data organized and makes it easy to add more languages later. **Advanced users:** You can place files directly in `_data/` (root) by setting these to empty strings, but this is not recommended for beginners.
105
+
106
+ See the [Configuration Guide](docs/CONFIG_GUIDE.md#data-source-active_resume_path_en_ar) for details.
107
+
108
+ ### Sample Files
109
+
110
+ The theme includes sample data files in `docs/_data/en/` and `docs/_data/ar/` that you can copy to your site. These files contain:
111
+ - Commented examples for all 12 section types
112
+ - Required vs optional field explanations
113
+ - Multiple examples per section
114
+
115
+ ### Arabic Month Support
116
+
117
+ The theme includes `_data/ar/months.yml` with Arabic month names already configured. You don't need to create this file manually—it's included in the theme.
38
118
 
39
119
  ## Development
40
120
 
41
- To set up your environment to develop this theme, run `bundle install`.
121
+ To develop this theme locally:
122
+
123
+ ```bash
124
+ # Install dependencies
125
+ bundle install
126
+
127
+ # Run development server
128
+ bundle exec jekyll serve
42
129
 
43
- Your theme is setup just like a normal Jekyll site! To test your theme, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using your theme. Add pages, documents, data, etc. like normal to test your theme's contents. As you make modifications to your theme and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
130
+ # Build the gem
131
+ gem build bilingual-jekyll-resume-theme.gemspec
132
+ ```
133
+
134
+ For more details, see [WARP.md](WARP.md) or the [Development section](#development) below.
135
+
136
+ ## Requirements
137
+
138
+ - Jekyll 4.4+ (specified in `bilingual-jekyll-resume-theme.gemspec`)
139
+ - Required plugins (automatically included):
140
+ - `jekyll-feed`
141
+ - `jekyll-seo-tag`
142
+ - `jekyll-sitemap`
143
+ - `jekyll-redirect-from`
144
+
145
+ ## Contributing
44
146
 
45
- When your theme is released, only the files in `_layouts`, `_includes`, `_sass` and `assets` tracked with Git will be bundled.
46
- To add a custom directory to your theme-gem, please edit the regexp in `bilingual-jekyll-resume-theme.gemspec` accordingly.
147
+ Bug reports and pull requests are welcome on GitHub. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
47
148
 
48
149
  ## License
49
150
 
50
- The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
151
+ The theme is available as open source under the terms of the [MIT License](LICENSE.txt).
152
+
153
+ ## Support
154
+
155
+ - 📖 Check the [documentation guides](docs/) for detailed information
156
+ - 🐛 Report issues on [GitHub Issues](https://github.com/kmutahar/bilingual-jekyll-resume-theme/issues)
157
+ - 💡 See [project_overview.md](project_overview.md) for a high-level architecture overview
158
+
159
+ ---
160
+
161
+ **Created by Khaldoon Mutahar** | Version 0.4.0 | MIT License
@@ -0,0 +1,12 @@
1
+ "1": يناير
2
+ "2": فبراير
3
+ "3": مارس
4
+ "4": أبريل
5
+ "5": مايو
6
+ "6": يونيو
7
+ "7": يوليو
8
+ "8": أغسطس
9
+ "9": سبتمبر
10
+ "10": أكتوبر
11
+ "11": نوفمبر
12
+ "12": ديسمبر
@@ -1,7 +1,39 @@
1
+ {% comment %}
2
+ Arabic Date Formatter Include
3
+ This include file formats a date in Arabic format by looking up the Arabic month name
4
+ from the site data and formatting it according to the specified style.
5
+
6
+ Usage:
7
+ {% include ar-date.html date=page.date style="MDY" %}
8
+ {% include ar-date.html date=page.date %}
9
+
10
+ Parameters:
11
+ - date: The date to format (required)
12
+ - style: "MDY" for "Month Day, Year" format, or any other value for "Month Year" format (optional)
13
+ {% endcomment %}
14
+
15
+ {% comment %}
16
+ Extract date components from the provided date using Jekyll date filters:
17
+ - "%-m": Month as a number (1-12) without leading zeros
18
+ - "%-d": Day as a number (1-31) without leading zeros
19
+ - "%Y": Year as a 4-digit number
20
+ {% endcomment %}
1
21
  {% assign m = include.date | date: "%-m" %}
2
22
  {% assign d = include.date | date: "%-d" %}
3
23
  {% assign y = include.date | date: "%Y" %}
24
+
25
+ {% comment %}
26
+ Look up the Arabic month name from the site data file:
27
+ - site.data.ar.months is a YAML file containing month names in Arabic
28
+ - The month number (m) is used as the key to retrieve the corresponding Arabic month name
29
+ {% endcomment %}
4
30
  {% assign month_name = site.data.ar.months[m] %}
31
+
32
+ {% comment %}
33
+ Format the date output based on the style parameter:
34
+ - If style is "MDY": Output "Month Day, Year" (e.g., "يناير 15, 2024")
35
+ - Otherwise: Output "Month Year" (e.g., "يناير 2024")
36
+ {% endcomment %}
5
37
  {% if include.style == "MDY" %}
6
38
  {{ month_name }} {{ d }}, {{ y }}
7
39
  {% else %}
@@ -200,7 +200,7 @@
200
200
  {% for project in resume_data.projects %}
201
201
  {% if project.active == true %}
202
202
  <div class="resume-item" itemscope itemtype="http://schema.org/CreativeWork">
203
- <meta itemprop="creator" content="{{ site.name_ar.first }} {{ site.name_ar.middle }} {{ site.name_ar.last }}" itemtype="http://schema.org/Person" />
203
+ <meta itemprop="creator" content="{{ site.name.first }} {{ site.name.middle }} {{ site.name.last }}" itemtype="http://schema.org/Person" />
204
204
  <h3 class="resume-item-title" itemprop="name" style="display: inline-block;">
205
205
  {% if project.url %}
206
206
  <a href="{{ project.url }}" target="_blank" rel="noopener nofollow noreferrer" itemprop="url">{{ project.project }}</a>
@@ -232,7 +232,9 @@
232
232
  {% if skill.active == true %}
233
233
  <div class="resume-item">
234
234
  <h4 class="resume-item-details">{{ skill.skill }}</h4>
235
- <p class="resume-item-copy">{{ skill.description }}</p>
235
+ {% if skill.description %}
236
+ <p class="resume-item-copy">{{ skill.description }}</p>
237
+ {% endif %}
236
238
  </div>
237
239
  {% endif %}
238
240
  {% endfor %}
@@ -251,7 +253,9 @@
251
253
  <div class="resume-item">
252
254
  <h3 class="resume-item-title" itemprop="award">{{ recognition.award }}</h3>
253
255
  <h4 class="resume-item-details">{{ recognition.organization }} &bull; {{ recognition.year }}</h4>
254
- <p class="resume-item-copy">{{ recognition.summary }}</p>
256
+ {% if recognition.summary %}
257
+ <p class="resume-item-copy">{{ recognition.summary }}</p>
258
+ {% endif %}
255
259
  </div>
256
260
  {% endif %}
257
261
  {% endfor %}
@@ -281,7 +285,9 @@
281
285
  {% endif %}
282
286
 
283
287
  <h4 class="resume-item-details" itemprop="description">{{ association.role }} &bull; {{ association.year }}</h4>
284
- <p class="resume-item-copy">{{ association.summary }}</p>
288
+ {% if association.summary %}
289
+ <p class="resume-item-copy">{{ association.summary }}</p>
290
+ {% endif %}
285
291
  </div>
286
292
  {% endif %}
287
293
  {% endfor %}
@@ -232,8 +232,9 @@
232
232
  {% if skill.active == true %}
233
233
  <div class="resume-item">
234
234
  <h4 class="resume-item-details">{{ skill.skill }}</h4>
235
- <p class="resume-item-copy">{{ skill.description }}</p>
236
- </div>
235
+ {% if skill.description %}
236
+ <p class="resume-item-copy">{{ skill.description }}</p>
237
+ {% endif %} </div>
237
238
  {% endif %}
238
239
  {% endfor %}
239
240
  </section>
@@ -251,7 +252,9 @@
251
252
  <div class="resume-item">
252
253
  <h3 class="resume-item-title" itemprop="award">{{ recognition.award }}</h3>
253
254
  <h4 class="resume-item-details">{{ recognition.organization }} &bull; {{ recognition.year }}</h4>
254
- <p class="resume-item-copy">{{ recognition.summary }}</p>
255
+ {% if recognition.summary %}
256
+ <p class="resume-item-copy">{{ recognition.summary }}</p>
257
+ {% endif %}
255
258
  </div>
256
259
  {% endif %}
257
260
  {% endfor %}
@@ -281,7 +284,9 @@
281
284
  {% endif %}
282
285
 
283
286
  <h4 class="resume-item-details" itemprop="description">{{ association.role }} &bull; {{ association.year }}</h4>
284
- <p class="resume-item-copy">{{ association.summary }}</p>
287
+ {% if association.summary %}
288
+ <p class="resume-item-copy">{{ association.summary }}</p>
289
+ {% endif %}
285
290
  </div>
286
291
  {% endif %}
287
292
  {% endfor %}
@@ -21,8 +21,10 @@
21
21
  <!-- Analytics head snippet (GTM or gtag). Configured in _config.yml -->
22
22
  {% include analytics-head.html %}
23
23
 
24
+ {% if site.social_links.mastodon %}
24
25
  <!-- rel="me" for Mastodon verification / IndieAuth -->
25
26
  <link rel="me" href="{{ site.social_links.mastodon }}">
27
+ {% endif %}
26
28
  </head>
27
29
 
28
30
  <body>
@@ -205,7 +205,7 @@ resume_data.experience == site.data['2025-06']['20250621-PM'].experience
205
205
  {% endif %}
206
206
 
207
207
  {% if site.contact_info.dob %}
208
- &nbsp;&nbsp;تاريخ الميلاد:&nbsp;{{ site.contact_info.dob | date_to_long_string }}
208
+ &nbsp;&nbsp;تاريخ الميلاد:&nbsp;{% include ar-date.html date=site.contact_info.dob style="MDY" %}
209
209
  {% endif %}
210
210
 
211
211
  {% assign active_languages = resume_data.languages | where: "active", true %}
@@ -235,9 +235,11 @@ resume_data.experience == site.data['2025-06']['20250621-PM'].experience
235
235
  {% endif %}
236
236
  </div>
237
237
 
238
+ {% if site.resume_header_intro_ar == true %}
238
239
  <div class="executive-summary" itemprop="description">
239
- {{ site.resume_header_intro }}
240
+ <p>{{ resume_data.header.intro }}</p>
240
241
  </div>
242
+ {% endif %}
241
243
 
242
244
  {% if site.resume_looking_for_work == true %}
243
245
  <a href="mailto:{{ site.contact_info.email }}" class="contact-button no-print" itemprop="email">تواصل معي</a>
@@ -235,9 +235,11 @@ resume_data.experience == site.data['2025-06']['20250621-PM'].experience
235
235
  {% endif %}
236
236
  </div>
237
237
 
238
+ {% if site.resume_header_intro_en == true %}
238
239
  <div class="executive-summary" itemprop="description">
239
- {{ site.resume_header_intro }}
240
+ <p>{{ resume_data.header.intro }}</p>
240
241
  </div>
242
+ {% endif %}
241
243
 
242
244
  {% if site.resume_looking_for_work == true %}
243
245
  <a href="mailto:{{ site.contact_info.email }}" class="contact-button no-print" itemprop="email">Contact me</a>
data/docs/CONFIG_GUIDE.md CHANGED
@@ -24,6 +24,8 @@ Make your site render correctly with this theme. This guide matches the shipped
24
24
 
25
25
  ## Quick start
26
26
 
27
+ **For beginners:** This guide explains every setting in `_config.yml`. Start with the basics below, then add more sections as you need them. You can find sample configuration files in `docs/_data/_config.sample.yml` and sample data files in `docs/_data/en/` and `docs/_data/ar/`.
28
+
27
29
  Copy, paste, and customize the ALL-CAPS values:
28
30
 
29
31
  ```yaml
@@ -89,30 +91,39 @@ That’s enough to render a working resume using data from `_data/`.
89
91
 
90
92
  The layouts read resume data from a subtree of `_data/` using dot-separated paths.
91
93
 
92
- - active_resume_path_en: Path for English pages.
93
- - active_resume_path_ar: Path for Arabic pages.
94
- - If the value is an empty string (`""`) or not set, the root of `_data/` is used.
94
+ **Recommended approach (for beginners):** Use language-specific folders. Set `active_resume_path_en: "en"` and `active_resume_path_ar: "ar"` to use `_data/en/` and `_data/ar/` folders. This is the recommended approach even if you're only using one language, as it keeps your data organized and makes it easy to add more languages later.
95
+
96
+ **Advanced approach:** If you place files directly in `_data/` (root), set `active_resume_path_en: ""` and `active_resume_path_ar: ""`. This approach is not recommended for beginners.
97
+
98
+ - active_resume_path_en: Path for English pages (recommended: `"en"` for `_data/en/`).
99
+ - active_resume_path_ar: Path for Arabic pages (recommended: `"ar"` for `_data/ar/`).
100
+ - If the value is an empty string (`""`) or not set, the root of `_data/` is used (advanced users only).
95
101
 
96
102
  Examples:
97
103
 
98
104
  ```yaml
99
- active_resume_path_en: "en" # -> uses _data/en/*
100
- active_resume_path_ar: "ar" # -> uses _data/ar/*
101
- # Nested example:
105
+ # Recommended: Use language-specific folders
106
+ active_resume_path_en: "en" # -> uses _data/en/* (recommended for beginners)
107
+ active_resume_path_ar: "ar" # -> uses _data/ar/* (recommended for beginners)
108
+
109
+ # Advanced: Nested example for versioning
102
110
  active_resume_path_en: "2025-06.PM" # -> uses _data/2025-06/PM/*
103
- # Root example (use files directly under _data/ not suggested unless using one language only):
111
+
112
+ # Advanced: Root example (not recommended for beginners)
113
+ # Only use this if you place files directly under _data/ (not in language folders)
104
114
  active_resume_path_en: ""
105
115
  active_resume_path_ar: ""
106
116
  ```
107
117
 
108
- Note: This theme uses the two keys above (there is no single `active_resume_path`).
118
+ **Note:** This theme uses the two keys above (there is no single `active_resume_path`). For beginners, always use `"en"` and `"ar"` to keep your data organized in language folders.
109
119
 
110
120
  ---
111
121
 
112
122
  ## Header and contact
113
123
 
114
124
  - resume_avatar (bool): Show/hide avatar in the header.
115
- - resume_header_intro (HTML string): Short paragraph under your header; basic HTML supported.
125
+ - resume_header_intro_en (bool): Enable/disable the English intro paragraph below name/title. When enabled, reads from `resume_data.header.intro` (create `_data/en/header.yml` with an `intro:` field). **Recommended:** Use `_data/en/header.yml` for English.
126
+ - resume_header_intro_ar (bool): Enable/disable the Arabic intro paragraph below name/title. When enabled, reads from `resume_data.header.intro` (create `_data/ar/header.yml` with an `intro:` field). **Recommended:** Use `_data/ar/header.yml` for Arabic.
116
127
  - resume_looking_for_work (bool | omitted):
117
128
  - true → Shows “Contact me” button using `contact_info.email`.
118
129
  - false → Shows a neutral “I’m not looking for work” pill.
@@ -146,8 +157,9 @@ Helpful toggles:
146
157
 
147
158
  - resume_title_ar: Arabic job title for the Arabic layout.
148
159
  - address_ar: Arabic address line for the Arabic header contact row.
149
- - Arabic dates: `_includes/ar-date.html` expects `site.data.ar.months` to map 1–12 to Arabic month names (define in `_data/ar.yml` or `_data/ar/months.yml`).
150
- - Present text: English shows Present”; Arabic shows “حتى الآن”.
160
+ - Arabic dates: `_includes/ar-date.html` expects `site.data.ar.months` to map 1–12 to Arabic month names. **The theme already includes `_data/ar/months.yml`, so you don't need to create this file manually.**
161
+ - Present text: English shows "Present"; Arabic shows "حتى الآن".
162
+ - Header intro: To add an intro paragraph below your name/title, create `_data/en/header.yml` for English (or `_data/ar/header.yml` for Arabic) with an `intro:` field containing your text. Then enable `resume_header_intro_en: true` or `resume_header_intro_ar: true` in `_config.yml`. **Recommended:** Always use language-specific folders (`_data/en/` and `_data/ar/`). Sample files are available in `docs/_data/en/header.yml` and `docs/_data/ar/header.yml`.
151
163
 
152
164
  ---
153
165
 
@@ -228,7 +240,8 @@ contact_info:
228
240
 
229
241
  display_header_contact_info: true
230
242
  resume_avatar: true
231
- resume_header_intro: "<p>Building products customers love through clear strategy and measurable outcomes.</p>"
243
+ resume_header_intro_en: true # Enable English intro (reads from resume_data.header.intro)
244
+ resume_header_intro_ar: true # Enable Arabic intro (reads from resume_data.header.intro)
232
245
  resume_looking_for_work: true
233
246
 
234
247
  # Data paths
@@ -316,6 +329,8 @@ exclude:
316
329
  - Contact button shows but nothing happens.
317
330
  - Set `contact_info.email` or set `resume_looking_for_work: false`.
318
331
  - Arabic months appear as numbers.
319
- - Define Arabic month names under `site.data.ar.months` (e.g., `_data/ar/months.yml`).
332
+ - The theme includes `_data/ar/months.yml` by default. If you're using a custom data path, ensure `site.data.ar.months` is accessible.
333
+ - Header intro not showing.
334
+ - Enable `resume_header_intro_en: true` or `resume_header_intro_ar: true` in `_config.yml`, and create `_data/en/header.yml` (or `_data/ar/header.yml` for Arabic) in your active data path with an `intro:` field. You can copy sample files from `docs/_data/en/header.yml` and `docs/_data/ar/header.yml`.
320
335
  - Data for EN/AR lives in different folders.
321
336
  - Point `active_resume_path_en` and `active_resume_path_ar` at the right subtrees (e.g., `en` and `ar`).