DevSculptor 1.0.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 (86) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +711 -0
  4. data/_config.yml +142 -0
  5. data/_data/blogroll.yml +34 -0
  6. data/_data/locales.yml +280 -0
  7. data/_data/page-list.yml +28 -0
  8. data/_data/projects.yml +50 -0
  9. data/_data/social.yml +149 -0
  10. data/_includes/about.html +19 -0
  11. data/_includes/anchor_headings.html +174 -0
  12. data/_includes/archives.html +28 -0
  13. data/_includes/categories.html +21 -0
  14. data/_includes/comments.html +35 -0
  15. data/_includes/footer/code-block-lang.html +12 -0
  16. data/_includes/footer/color_theme_toggler.html +92 -0
  17. data/_includes/footer/copyright.html +14 -0
  18. data/_includes/footer/create-toc.html +51 -0
  19. data/_includes/footer/page_pagination.html +24 -0
  20. data/_includes/footer/reading-time.html +11 -0
  21. data/_includes/footer/scripts.html +10 -0
  22. data/_includes/footer/toggle-toc.html +12 -0
  23. data/_includes/footer.html +50 -0
  24. data/_includes/head/ban.html +7 -0
  25. data/_includes/head/google_analytics.html +9 -0
  26. data/_includes/head/icons.html +5 -0
  27. data/_includes/head/scripts.html +6 -0
  28. data/_includes/head/stylesheets.html +2 -0
  29. data/_includes/head.html +20 -0
  30. data/_includes/home/post_card.html +56 -0
  31. data/_includes/home.html +28 -0
  32. data/_includes/navigation/color-theme-switcher.html +50 -0
  33. data/_includes/navigation/svg.html +20 -0
  34. data/_includes/navigation.html +48 -0
  35. data/_includes/page_pagination.html +29 -0
  36. data/_includes/projects/project-card.html +73 -0
  37. data/_includes/projects.html +8 -0
  38. data/_includes/search/algolia.html +165 -0
  39. data/_includes/sidebar/aboutme.html +61 -0
  40. data/_includes/sidebar/blogroll.html +7 -0
  41. data/_includes/sidebar.html +6 -0
  42. data/_includes/tags.html +21 -0
  43. data/_includes/toc.html +7 -0
  44. data/_layouts/default.html +21 -0
  45. data/_layouts/home.html +2 -0
  46. data/_layouts/page.html +11 -0
  47. data/_layouts/plain.html +14 -0
  48. data/_layouts/post.html +78 -0
  49. data/_sass/_base.scss +250 -0
  50. data/_sass/_navigation.scss +24 -0
  51. data/_sass/_syntax-highlighting.scss +160 -0
  52. data/assets/JustinSunday_Resume_2023-09-14.pdf +0 -0
  53. data/assets/branding/branding-colors-and-fonts/BrandBoard.pdf +0 -0
  54. data/assets/branding/branding-colors-and-fonts/fonts/Fira Mono Bold.ttf +0 -0
  55. data/assets/branding/logo/eps-pdf-png-formats.zip +0 -0
  56. data/assets/branding/logo/svg/logo-black.svg +1 -0
  57. data/assets/branding/logo/svg/logo-color.svg +1 -0
  58. data/assets/branding/logo/svg/logo-no-background-black-letters.svg +1 -0
  59. data/assets/branding/logo/svg/logo-no-background.svg +1 -0
  60. data/assets/branding/logo/svg/logo-white.svg +1 -0
  61. data/assets/fonts/CascadiaCode-WebFont/caskaydia_cove_nerd_font_complete-demo.html +517 -0
  62. data/assets/fonts/CascadiaCode-WebFont/caskaydia_cove_nerd_font_complete-webfont.woff +0 -0
  63. data/assets/fonts/CascadiaCode-WebFont/caskaydia_cove_nerd_font_complete-webfont.woff2 +0 -0
  64. data/assets/fonts/CascadiaCode-WebFont/generator_config.txt +5 -0
  65. data/assets/fonts/CascadiaCode-WebFont/specimen_files/grid_12-825-55-15.css +129 -0
  66. data/assets/fonts/CascadiaCode-WebFont/specimen_files/specimen_stylesheet.css +396 -0
  67. data/assets/fonts/CascadiaCode-WebFont/stylesheet.css +12 -0
  68. data/assets/images/projects/desvsculptor/20230926-localhost-iphone14promax-homepage-fotor-bg-remover-20231002163813.png +0 -0
  69. data/assets/images/projects/desvsculptor/20230926-localhost-iphone14promax-homepage.PNG +0 -0
  70. data/assets/images/projects/desvsculptor/home-page-example.png +0 -0
  71. data/assets/images/projects/dummy_project/ilya-pavlov-OqtafYT5kTw-unsplash.jpg +0 -0
  72. data/assets/images/site-shots/blogroll-20231010.png +0 -0
  73. data/assets/images/site-shots/blogroll-to-datayml-20201010.png +0 -0
  74. data/assets/images/topbutton.png +0 -0
  75. data/assets/js/jquery-1.9.1.min.js +5 -0
  76. data/assets/js/totop.js +26 -0
  77. data/assets/scss/main.scss +120 -0
  78. data/pages/about.md +8 -0
  79. data/pages/archives.md +7 -0
  80. data/pages/categories.md +8 -0
  81. data/pages/home.md +6 -0
  82. data/pages/projects.md +8 -0
  83. data/pages/search.md +11 -0
  84. data/pages/subscribe.md +12 -0
  85. data/pages/tags.md +7 -0
  86. metadata +241 -0
data/README.md ADDED
@@ -0,0 +1,711 @@
1
+ ![License](https://img.shields.io/badge/license-MIT-lightgrey?label=License&link=https%3A%2F%2Fraw.githubusercontent.com%2Fsundayj%2FDevSculptor%2Fmain%2FLICENSE.txt)
2
+ ![Jekyll](https://img.shields.io/badge/Jekyll-%3E%3D3.9-blue?label=Jekyll&link=https%3A%2F%2Fjekyllrb.com%2F)
3
+ ![Gem Version 1.0.0](https://img.shields.io/badge/gem-v1.0.0-blue?label=Ruby%20Gem)
4
+ ![Donate to this project using Buy Me A Coffee](https://img.shields.io/badge/Buy_me_a_coffee-donate-yellow?label=Buy%20me%20a%20coffee!&link=https%3A%2F%2Fwww.buymeacoffee.com%2Fjustinsunday)
5
+
6
+
7
+ <div class="ascii-art">
8
+ :::'###::::'########:::'#######::'##::::'##:'########:
9
+ ::'## ##::: ##.... ##:'##.... ##: ##:::: ##:... ##..::
10
+ :'##:. ##:: ##:::: ##: ##:::: ##: ##:::: ##:::: ##::::
11
+ '##:::. ##: ########:: ##:::: ##: ##:::: ##:::: ##::::
12
+ #########: ##.... ##: ##:::: ##: ##:::: ##:::: ##::::
13
+ ##.... ##: ##:::: ##: ##:::: ##: ##:::: ##:::: ##::::
14
+ ##:::: ##: ########::. #######::. #######::::: ##::::
15
+ ..:::::..::........::::.......::::.......::::::..:::::
16
+ '########::'########:'##::::'##::'######:::'######::'##::::'##:'##:::::::'########::'########::'#######::'########::
17
+ ##.... ##: ##.....:: ##:::: ##:'##... ##:'##... ##: ##:::: ##: ##::::::: ##.... ##:... ##..::'##.... ##: ##.... ##:
18
+ ##:::: ##: ##::::::: ##:::: ##: ##:::..:: ##:::..:: ##:::: ##: ##::::::: ##:::: ##:::: ##:::: ##:::: ##: ##:::: ##:
19
+ ##:::: ##: ######::: ##:::: ##:. ######:: ##::::::: ##:::: ##: ##::::::: ########::::: ##:::: ##:::: ##: ########::
20
+ ##:::: ##: ##...::::. ##:: ##:::..... ##: ##::::::: ##:::: ##: ##::::::: ##.....:::::: ##:::: ##:::: ##: ##.. ##:::
21
+ ##:::: ##: ##::::::::. ## ##:::'##::: ##: ##::: ##: ##:::: ##: ##::::::: ##::::::::::: ##:::: ##:::: ##: ##::. ##::
22
+ ########:: ########:::. ###::::. ######::. ######::. #######:: ########: ##::::::::::: ##::::. #######:: ##:::. ##:
23
+ ........:::........:::::...::::::......::::......::::.......:::........::..::::::::::::..::::::.......:::..:::::..::
24
+ </div>
25
+ <p><small><a href="http://patorjk.com/software/taag/#p=display&f=Banner3-D&t=About%0ADevSculptor" target="_blank" rel="noopener noreferrer">banner3-D</a> ascii font by Merlin Greywolf merlin@brahms.udel.edu August 9, 1994</small></p>
26
+
27
+ ---------------
28
+ ## Description
29
+
30
+ A full-featured, GitHub Pages compatible, Jekyll blog theme tailored to software devs that contains project and résumé pages.
31
+ Contains localization support for multiple languages.
32
+
33
+ If you like this theme, please consider sponsoring:
34
+
35
+ <a href="https://www.buymeacoffee.com/justinsunday" target="_blank">
36
+ <img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="41" width="174">
37
+ </a>
38
+
39
+ For feature requests, or bugs, please create an issue [here](https://github.com/sundayj/DevSculptor/issues){:target="_blank"}{:rel="noopener noreferrer"}
40
+
41
+ -----------------
42
+ ## Features List
43
+ - Responsive
44
+ - Dark and Light theme toggler
45
+ - SEO friendly
46
+ - Social Network friendly with Twitter Card support
47
+ - Site Search with [Algolia](https://www.algolia.com)
48
+ - Google Analytics Ready
49
+ - [Fabform](https://fabform.io/) Contact Form Ready
50
+ - [HTML Comment Box](https://www.htmlcommentbox.com/) Ready
51
+ - Code blocks use [GitHub Flavored Markdown](https://github.blog/2017-03-14-a-formal-spec-for-github-markdown/)
52
+ - Github gists for posts via the [jekyll-gist plugin](https://github.com/jekyll/jekyll-gist)
53
+ - Responsive Collapsible and Sticky TOC (Table of Contents) for posts
54
+ - Anchor links for headings within posts
55
+ - "Reading time" for posts to give readers estimates on how long it may take them to read.
56
+ - Includes Jekyll Admin (Optional)
57
+ - Emoji Ready
58
+ - RSS Feed for feed reader subscriptions
59
+ - Includes site map, privacy policy, cookie policy, and terms of service (It is your responsibility to
60
+ make sure that the details outlined in the provided files match fit within your country/state's laws.)
61
+ - Blog Roll
62
+ - Résumé link opens your provided résumé as a PDF in a new tab
63
+ - Localization support with help from ChatGPT
64
+ - English
65
+ - Spanish (Español)
66
+ - French (Français)
67
+ - German (Deutsch)
68
+ - Portuguese (Português)
69
+ - Italian (Italiano)
70
+ - Dutch (Nederlands)
71
+ - Chinese (Simplified) - 中文 (Zhōngwén)
72
+ - Japanese - 日本語 (Nihongo)
73
+ - Polish - Polski
74
+ - Korean - 한국어 (Hangugeo)
75
+ - Russian - Русский (Russkiy)
76
+ - Turkish - Türkçe
77
+ - Indonesian - Bahasa Indonesia
78
+
79
+ ----------------
80
+ ### Coming Soon
81
+ - Categories and details in Blogroll
82
+
83
+ ----------------
84
+ ## Installation
85
+
86
+ Add this line to your Jekyll site's `Gemfile`:
87
+
88
+ ```ruby
89
+ gem "DevSculptor"
90
+ ```
91
+
92
+ And add this line to your Jekyll site's `_config.yml`:
93
+
94
+ ```yaml
95
+ theme: DevSculptor
96
+ ```
97
+
98
+ And then execute:
99
+ ```shell
100
+ $ bundle
101
+ ```
102
+
103
+ Or install it yourself as:
104
+ ```shell
105
+ $ gem install DevSculptor
106
+ ```
107
+ --------
108
+ ## Usage
109
+
110
+ --------------------------------
111
+ ### Project Directory Structure
112
+
113
+ ```bash
114
+ # This tree was printed in Windows Terminal using the 'tree' command. See https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/tree for more info.
115
+ # `tree . /f`
116
+ DevSculptor # root
117
+
118
+ ├───.github
119
+ │ └───workflows
120
+ │ algolia-search.yml
121
+
122
+ ├───assets
123
+
124
+ ├───pages
125
+
126
+ ├───_data
127
+
128
+ ├───_includes
129
+
130
+ ├───_layouts
131
+
132
+ ├───_posts
133
+
134
+ ├───_sass
135
+ ```
136
+
137
+ -------------------
138
+ #### `root` Folder
139
+
140
+ ```shell
141
+ DevSculptor
142
+ │ 404.html # Keep, but you may edit.
143
+ │ android-chrome-192x192.png # You may remove, but I recommend replacing with your own.
144
+ │ android-chrome-512x512.png # You may remove, but I recommend replacing with your own.
145
+ │ apple-touch-icon.png # You may remove, but I recommend replacing with your own.
146
+ │ cookie-policy.md # You may remove, but minor edits will be needed.
147
+ │ favicon-16x16.png # You may remove, but I recommend replacing with your own.
148
+ │ favicon-32x32.png # You may remove, but I recommend replacing with your own.
149
+ │ favicon.ico # Replace with your own.
150
+ │ Gemfile # Keep. Editable.
151
+ │ index.html # Keep
152
+ │ LICENSE.txt # You may remove, but I recommend replacing with your own.
153
+ │ privacy-policy.md # You may remove, but minor edits will be needed.
154
+ │ README.md # You may remove, but I recommend replacing with your own.
155
+ │ site.webmanifest # You may remove, but I recommend replacing with your own.
156
+ │ sitemap.xml # I recommend replacing this with your own.
157
+ │ terms-of-service.md # You may remove, but minor edits will be needed.
158
+ │ _config.yml # Keep, but go through and edit what you need.
159
+ ```
160
+
161
+ The root of your project will contain the files listed above. Here, I will explain what they are, why they are needed, and which ones can be replaced.
162
+
163
+ - `404.html`
164
+ - This file needs to be at the root of your project to correctly display a 404 page if a user attempts to navigate to a page that doesn't exist. Feel free to edit its contents as you would like.
165
+ - Favicon files
166
+ - These files are all needed and used by `_includes/head/icons.html`. If you delete them and don't replace them, just remove their respective tag from that file.
167
+ - The android and apple icons are utilized when a user installs your page to their phone. They will be used as your "app" icon. The favicon pngs are used similarly.
168
+ - `android-chrome-192x192.png`
169
+ - `android-chrome-512x512.png`
170
+ - `apple-touch-icon.png`
171
+ - `favicon-16x16.png`
172
+ - `favicon-32x32.png`
173
+ - `favicon.ico`
174
+ - This one is the most important. It is used to display your site's icon in a browser tab.
175
+ - Legal files
176
+ - These have placeholders inside that specify the author's/website's names. So, if you are in the United States, theis should be pretty much plug and play. I would definitely recommend that look these over yourself for safety reasons. I assume no responsibility if you use these provided files. THey are meant as placeholders/ templates to be edited for your specific use-case.
177
+ - If you would like to include these files, simply mark `include_sitemap`, `include_privacypolicy`, `include_cookiepolicy`, and `include_terms` as `true` in the `_config.yml` under the `footer` property.
178
+ - If you change the path of these files, make sure you edit the path located in `_includes/footer.html`
179
+ - `cookie-policy.md`
180
+ - `privacy-policy.md`
181
+ - `terms-of-service.md`
182
+ - `Gemfile`
183
+ - Specifies the gems and plugins needed for your Jekyll site. More info can be found [here](https://jekyllrb.com/docs/ruby-101/#:~:text=A%20Gemfile%20is%20a%20list%20of%20gems%20used,group%20%3Ajekyll_plugins%20do%20gem%20%22jekyll-feed%22%20gem%20%22jekyll-seo-tag%22%20end){:target="_blank"}{:rel="noopener noreferrer"}
184
+ - `index.html`
185
+ - The entry point for your website. Every website has one of these!
186
+ - `README.md`
187
+ - If you're hosting your site on GitHub pages, or have your site in a repo, then you likely have one of these!
188
+ - `site.webmanifest`
189
+ - Used here for when a user installs your site to their device. More info can be found [here](https://developer.mozilla.org/en-US/docs/Web/Manifest){:target="_blank"}{:rel="noopener noreferrer"}
190
+ - `_config.yml`
191
+ - Holds site-wide settings and configuration for you Jekyll site. More info below. General info on Jekyll config can be found [here](https://jekyllrb.com/docs/configuration/){:target="_blank"}{:rel="noopener noreferrer"}
192
+ - `sitemap.xml`
193
+ - Your sitemap helps search engines by giving them an idea of your site's structure and how to find the data you want crawled for better search results. More info can be found [here](https://developers.google.com/search/docs/crawling-indexing/sitemaps/overview){:target="_blank"}{:rel="noopener noreferrer"}
194
+ - Jekyll can actually generate one of these for you.
195
+
196
+ -------------------
197
+ ##### `_config.yml`
198
+
199
+ Some things in the `_config.yml` are a bit more involved than others. For those, we will delve into them further down.
200
+ We will go over the less complex here. Anything in your `_config.yml` file can be accessed throughout your site. This makes
201
+ it a great place to store global variables, especially if you don't plan on changing them much. The following properties
202
+ in the `_config.yml` are a great example of variables that you can use throughout your app for displaying data.
203
+
204
+ ```yaml
205
+ title: DevSculptor
206
+ email: admin@jlsunday.com
207
+ description: >- # Ignore newlines to allow multiline strings.
208
+ A full-featured, GitHub Pages compatible, Jekyll blog theme tailored to software devs that contains project and resume pages.
209
+ Contains localization support for multiple languages.
210
+ tagline: >-
211
+ A full-featured, GitHub Pages compatible, Jekyll blog theme tailored to software devs that contains project and resume pages.
212
+ Contains localization support for multiple languages.
213
+ url: "https://jlsunday.com/DevSculptor" # The base hostname & protocol for your site, e.g. http://example.com
214
+ author:
215
+ name: Justin L. Sunday
216
+ url: https://JLSunday.com/
217
+ default_locale: "en" # Sets locale across the site
218
+ logo_light: "/assets/branding/logo/svg/logo-no-background-black-letters.svg" # path/to/logo.svg
219
+ logo_dark: "/assets/branding/logo/svg/logo-no-background.svg" # path/to/logo.svg
220
+ ```
221
+
222
+ A great variety of settings and their uses are displayed in the code block above. The `title`, `email`, and `url`
223
+ properties are pretty straightforward. You can display the contents of these variables anywhere on your site by placing
224
+ them within liquid mustaches. Some usages of the properties above can be found here:
225
+
226
+ - `site.title`
227
+ - `\_includes\head.html`
228
+ - `\pages\subscribe.md`
229
+ - `site.email`
230
+ - `\_includes\sidebar\aboutme.html`
231
+ - `site.url`
232
+ - Too many to list here. It can be used to prepend to any url in your site to help with relative links. The `_includes`
233
+ folder has a few examples in the `footer.html` and `head.html` files.
234
+
235
+ Some properties are used to help the site know whether to display certain things. Take the following properties, for example:
236
+
237
+ ```yaml
238
+ show_contact_info: true # Personal Info (twitter,GitHub,email) can be seen in `\_includes\sidebar\aboutme.html`, this info only shown where show_contact_info == true
239
+ include_blogroll: true
240
+ feed:
241
+ excerpt_only: true
242
+ footer: # Optional links for sitemap, privacy policy, cookie policy, and terms of service. These have placeholders inside that specify the author's/website's names. So, if you are in the United States, theis should be pretty much plug and play. I would definitely recommend that you look these over yourself for safety reasons. I assume no responsibility if you use these provided files. They are meant as placeholders/ templates to be edited for your specific use-case.
243
+ include_sitemap: true
244
+ include_privacypolicy: true
245
+ include_cookiepolicy: true
246
+ include_terms: true
247
+ ```
248
+ The properties `show_contact_info` and `include_blogroll` tell the site whether these two respective features are displayed at all!
249
+ Also, if you decide that you don't want to include the provided site map, privacy policy, cookie policy, or site terms,
250
+ then all you have to do is set their respective properties to `false`. It is that simple.
251
+
252
+ Some parts of the site use multiple properties to help decide what to display. Take the `aboutme` object in the `_config`
253
+ and the `\_includes\sidebar\aboutme.html`:
254
+
255
+ ```yaml
256
+ aboutme:
257
+ include: true
258
+ text: >-
259
+ Hello, my name is Justin! I live in the US with my wife, amazing daughters, and our crazy canines.
260
+ I'm extremely passionate about software development, programming, absorbing every bit of knowledge
261
+ I can, and sharing that knowledge with anyone interested in learning.
262
+ photo:
263
+ use_github_avatar: false
264
+ asset_path: # "/path/to/profile-photo.png"
265
+ hosted_aboutme_photo: "https://github.com/sundayj/sundayj.github.io/blob/master/images/other-images/profile-photo-1352x1098.png?raw=true" # Use if you want to use a photo from somewhere else on the web
266
+ ```
267
+ ```liquid
268
+ {% raw %}
269
+ {% assign abmPhoto = site.aboutme.photo %}
270
+ {% if abmPhoto.use_github_avatar %}
271
+ {%- avatar{{ site.data.social.github.username }}size = 300 %}
272
+ {% elsif abmPhoto.asset_path %}
273
+ <img
274
+ title="{{ site.author.name }}"
275
+ src="{{ abmPhoto.asset_path }}"
276
+ alt="{{ site.author.name }}"
277
+ />
278
+ {% elsif abmPhoto.hosted_aboutme_photo %}
279
+ <img
280
+ title="{{ site.author.name }}"
281
+ src="{{ abmPhoto.hosted_aboutme_photo }}"
282
+ alt="{{ site.author.name }}"
283
+ />
284
+ {% endif %}
285
+ {%endraw%}
286
+ ```
287
+ We can see in the `liquid` code blocks how the properties in the `_config.yml` `aboutme` object are being used. If
288
+ `site.aboutme.photo.use_github_avatar` is set to `true`, then the site will display your GitHub avatar as your profile photo.
289
+ However, if it is `false`, then it will use the path you provided in `site.aboutme.photo.asset_path`. Now, if that
290
+ property is blank, then it will use the photo you provided via url in `site.aboutme.photo.hosted_aboutme_photo`.
291
+
292
+ The rest of the properties found within `_config.yml` will be described further within this page.
293
+
294
+ ---------------------
295
+ #### `assets` Folder
296
+
297
+ ```shell
298
+ ├───assets
299
+ │ │
300
+ │ ├───fonts
301
+ │ │ └───CascadiaCode-WebFont
302
+ │ │ │ caskaydia_cove_nerd_font_complete-demo.html
303
+ │ │ │ caskaydia_cove_nerd_font_complete-webfont.woff
304
+ │ │ │ caskaydia_cove_nerd_font_complete-webfont.woff2
305
+ │ │ │ generator_config.txt
306
+ │ │ │ stylesheet.css
307
+ │ │ │
308
+ │ │ └───specimen_files
309
+ │ │ grid_12-825-55-15.css
310
+ │ │ specimen_stylesheet.css
311
+ │ │
312
+ │ ├───images
313
+ │ │ │ topbutton.png
314
+ │ │ │
315
+ │ │ └───projects
316
+ │ │ ├───desvsculptor
317
+ │ │ │ 20230926-localhost-iphone14promax-homepage-fotor-bg-remover-20231002163813.png
318
+ │ │ │ 20230926-localhost-iphone14promax-homepage.PNG
319
+ │ │ │ home-page-example.png
320
+ │ │ │
321
+ │ │ └───dummy_project
322
+ │ │ ilya-pavlov-OqtafYT5kTw-unsplash.jpg
323
+ │ │
324
+ │ ├───js
325
+ │ │ jquery-1.9.1.min.js
326
+ │ │ totop.js
327
+ │ │
328
+ │ └───scss
329
+ │ main.scss
330
+ ```
331
+
332
+ The `assets` folder generally contains the various assets used throughout your site, such as JavaScript, styles, images, fonts, pdfs, etc. Here I will explain the assets contained within the DevSculptor project, and let you know which ones can be edited freely.
333
+
334
+ - `JustinSunday_Resume_2023-09-14.pdf`
335
+ - A sample résumé that you can replace with your own. To make your résumé work, replace the existing résumé with your own and replace the path within `_data/page-list.yml`. That is all you have to do!
336
+ - `branding`
337
+ - This folder just happens to be where I store the logo designs for DevSculptor. You can remove this folder completely, or replace its contents with your own logo files. You will probably want to use your own logo for you site, anyway.
338
+ - `fonts`
339
+ - Any fonts you may want to use for your site that may not be installed by default on your users' machines. These fonts will usually be listed in the site's `main.scss` file.
340
+ - `images`
341
+ - Here, you will store any of the images used within your site. Generally, I would recommend subfolders for where your sites are located. For instance, photos of your projects should go in `projects`, images for your blog posts should go within a `posts` folder, etc. You can remove the subfolders I have here, but I would recommend keeping the `topbutton.png` file since it is used for the "back to top" functionality within the site.
342
+ - `js`
343
+ - Contains any JavaScript files needed for your site's functionality. You can add what you'd like here, but I would recommend keeping the existing files as they are needed for the DevSculptor theme.
344
+ - `scss`
345
+ - Base style files used within your site. The scss folder at the project's root level usually only contains site-wide style variables and imports of the other style files found within the project.
346
+
347
+ --------------------
348
+ #### `pages` Folder
349
+
350
+ ```shell
351
+ ├───pages
352
+ │ about.md # Keep. Edits shouldn't be necessary.
353
+ │ archives.md # Keep. Edits shouldn't be necessary.
354
+ │ categories.md # Keep. Edits shouldn't be necessary.
355
+ │ home.md # Keep. Edits shouldn't be necessary.
356
+ │ projects.md # Keep. Edits shouldn't be necessary.
357
+ │ search.md # Keep. You may need to edit this if you prefer not to use Algolia for your site's search.
358
+ │ subscribe.md # Keep. Edits shouldn't be necessary.
359
+ │ tags.md # Keep. Edits shouldn't be necessary.
360
+ ```
361
+
362
+ The `pages` directory holds all the basic page structures needed for your site and the DevSculptor theme.
363
+ I wouldn't recommend editing any of them. If you decide you don't like Algolia, or would prefer a different service for site-search,
364
+ then you will need to edit `search.md`.
365
+
366
+ -------------------
367
+ #### `_data` Folder
368
+
369
+ ```shell
370
+ ├───_data
371
+ │ blogroll.yml
372
+ │ locales.yml
373
+ │ page-list.yml
374
+ │ projects.yml
375
+ │ social.yml
376
+ ```
377
+
378
+ The `_data` folder contains files that are utilized much in the same way as the `_config.yml` file. More info on data files can be found [here](https://jekyllrb.com/docs/datafiles/){:target="_blank"}{:rel="noopener noreferrer"}.
379
+ The fies found within this folder hold data and details specific to your site. If you like to write your blog posts locally while running
380
+ the Jekyll server, then you'll notice that changes you make within the data files actually appear when the app refreshes, whereas changes
381
+ made within the `_config.yml` don't without the server being restarted.
382
+
383
+ --------------------
384
+ ##### `blogroll.yml`
385
+
386
+ The blogroll data can be accessed by your site by using `site.data.blogroll`. The data within is stored as a list of objects.
387
+ Jekyll's site has a good short use case for this type of list [here](https://jekyllrb.com/docs/datafiles/#example-list-of-members){:target="_blank"}{:rel="noopener noreferrer"}.
388
+
389
+ Each object in the list contains only three properties. Please see below for a small example:
390
+
391
+ ```yaml
392
+ - name: The Overflow # The name property is used to display the blog's name to the user.
393
+ href: https://stackoverflow.blog/ # The url is for the link for the listed blog.
394
+ title: Stack Overflow's Blog, The Overflow # The title tells the tooltip what to display when the user hovers over the link.
395
+ ```
396
+
397
+ For the definition of "blogroll," please click [here](https://www.techopedia.com/definition/4822/blogroll){:target="_blank"}{:rel="noopener noreferrer"}.
398
+ Currently, the blogroll within the DevRunner theme is minimal. On the homepage of the site, the blogroll
399
+ will present as a list of links. Hovering over those links will display a tooltip as shown below. Click the image to
400
+ open a larger version in a new window.
401
+
402
+
403
+ <figure style="margin-top: 20px;">
404
+ <a href="assets/images/site-shots/blogroll-to-datayml-20201010.png" target="_blank" rel="noopener noreferrer"><img alt="Blogroll to data.blogroll relationship" src="{{ '/assets/images/site-shots/blogroll-to-datayml-20201010.png' | prepend: site.url }}" loading="lazy" title="Blogroll to data.blogroll relationship"></a>
405
+ <figcaption>
406
+ Blogroll to data.blogroll relationship
407
+ </figcaption>
408
+ </figure>
409
+
410
+ -------------------
411
+ ##### `locales.yml`
412
+
413
+ The locales data can be accessed by your site by using `site.data.locales`. The data within is stored as a list of named objects.
414
+ Jekyll's site has a good short use case for this type of list [here](https://jekyllrb.com/docs/datafiles/#example-list-of-members){:target="_blank"}{:rel="noopener noreferrer"}.
415
+
416
+ This data file lists the various languages for which this the DevSculptor theme has attempted localization. The translations
417
+ were created with the help of ChatGPT, so please use with caution and double-check your desired language within the `locales.yml`
418
+ file. If you find any errors, or have any suggestions, I would greatly appreciate it if you open an [issue](https://github.com/sundayj/DevSculptor/issues){:target="_blank"}{:rel="noopener noreferrer"} on GitHub, or
419
+ contact me via any of the methods listed on the home page, or the About page.
420
+
421
+ Here is an example of the properties listed within the `locales` named objects. I'm providing two to illustrate how every
422
+ locale has the same property with their respective translations.
423
+
424
+ ```yaml
425
+ en: # English
426
+ Aboutme: "About Me" # About Author
427
+ Archives: "Archives" # Blog Archive
428
+ Blogroll: "Blogroll"
429
+ Categories: "Categories"
430
+ Tags: "Tags"
431
+ Previous: "Older" # Previous Post
432
+ Next: "Newer" # Next Post
433
+ PostDate: "Date Posted"
434
+ EditDate: "Date Edited"
435
+ Search: "Site Search"
436
+ Home: "Home" # Home Page
437
+ About: "About" # About site/blog
438
+ Subscribe: "Subscribe"
439
+ Résumé: "Résumé"
440
+ Projects: "Projects"
441
+ Site_Map: "Site Map"
442
+ Privacy_Policy: "Privacy Policy"
443
+ Cookie_Policy: "Cookie Policy"
444
+ Terms_of_Service: "Terms of Service"
445
+ es: # Spanish (Español)
446
+ Aboutme: "Acerca de Mí" # Acerca del Autor
447
+ Archives: "Archivos" # Archivo de Blog
448
+ Blogroll: "Lista de Blogs"
449
+ Categories: "Categorías"
450
+ Tags: "Etiquetas"
451
+ Previous: "Anterior" # Publicación Anterior
452
+ Next: "Siguiente" # Publicación Siguiente
453
+ PostDate: "Fecha de Publicación"
454
+ EditDate: "Fecha de Edición"
455
+ Search: "Buscar en el Sitio"
456
+ Home: "Inicio" # Página de Inicio
457
+ About: "Acerca de" # Acerca del sitio/blog
458
+ Subscribe: "Suscribirse"
459
+ Résumé: "Resumen"
460
+ Projects: "Proyectos"
461
+ Site_Map: "Mapa del Sitio"
462
+ Privacy_Policy: "Política de Privacidad"
463
+ Cookie_Policy: "Política de Cookies"
464
+ Terms_of_Service: "Términos de Servicio"
465
+ ```
466
+
467
+ ---------------------
468
+ ##### `page-list.yml`
469
+
470
+ The page list data can be accessed by your site by using `site.data.page-list`. The data within is stored as a list within
471
+ a `pages` object. This data is currently being used in `_includes/navigation.html`. The object properties can be seen below,
472
+ where two page objects are displayed to illustrate the `new-tab` property:
473
+
474
+ ```yaml
475
+ - title: Projects # The title property is used to display the page's name to the user.
476
+ url: /projects # The url property should match the canonical url of its respective page.
477
+ new-tab: false # The new-tab property tells the UI whether to have the link open in a new tab.
478
+ - title: Résumé
479
+ url: /assets/JustinSunday_Resume_2023-09-14.pdf # Explained below ⬇
480
+ new-tab: true # Explained below ⬇
481
+ ```
482
+
483
+ You're probably wondering, "Why don't you just use Jekyll's built-in `site.pages`?" Well, the answer is in case the site
484
+ owner (you or me) would like to link to sites may not have a corresponding page stored on your site. For example, there
485
+ is no actual Résumé page anywhere within the DevSculptor theme, but I can still show the Résumé link in the site's navigation.
486
+ Since there is no canonical url for a page that doesn't exist, I can simply use the path the résumé pdf file stored in
487
+ the `assets` folder. Then, with the `new-tab` property set to `true`, when the user clicks my Résumé link within the navigation
488
+ bar, a new tab will open in their browser with my résumé as a pdf.
489
+
490
+
491
+ --------------------
492
+ ##### `projects.yml`
493
+
494
+ <div class="alert alert-warning" role="alert">
495
+ &#9888; <b>WARNING</b>: The Projects page, as well as this data file are still being refined and are subject to change.
496
+ Please subscribe to the theme's blog, or follow this repo in GitHub to stay up-to-date with any potentially breaking changes.
497
+ </div>
498
+
499
+ The projects data can be accessed by your site by using `site.data.projects`. The data within is stored as a list of objects.
500
+ Jekyll's site has a good short use case for this type of list [here](https://jekyllrb.com/docs/datafiles/#example-list-of-members){:target="_blank"}{:rel="noopener noreferrer"}.
501
+
502
+ The objects within `projects.yml` are more a bit more involved than the data stored within the other data files.
503
+ There are a few important details to pay special attention to:
504
+ - `project.client` is optional
505
+ - `project.images` is optional, but the project won't display without images.
506
+ - `project.images[i].link` is optional
507
+ Currently, the projects page displays projects with the following information:
508
+ - Project Started: `project.start-year`
509
+ - Project Ended: `project.end-year`
510
+ - Project Website: `project.website`
511
+ - Client: `project.client`
512
+ - `project.client.name` - The client's name will always be displayed as long as it isn't an empty string `""`.
513
+ - `project.client.website` - If a website is provided, then the client's name will become a link to their website.
514
+ - Tags: `project.tags` as an array `[]`
515
+ - Skills: `project.skills` as an array `[]`
516
+ - Description: `project.description`
517
+ - Project Images: `project.images` as a list of objects.
518
+ - `project.images[i].title` - Used for the image's `alt` attribute if there is an error loading the image as well as the
519
+ `title` attribute for the image's tooltip.
520
+ - `project.images[i].path` - Used for the image's `src` attribute.
521
+ - `project.images[i].caption` - Used for the image's caption/description below the image. Use this to briefly explain
522
+ what is being displayed in the provided image.
523
+
524
+ Examples:
525
+ ```yaml
526
+ - name: DevSculptor Jekyll Theme
527
+ display: true # Whether to display this project on the projects page.
528
+ start-month: 9
529
+ start-year: 2023 # Optional
530
+ ongoing: true
531
+ tags: [Jekyll, Theme]
532
+ skills: [HTML, Liquid, Sass, JavaScript]
533
+ website: "https://jlsunday.com/DevSculptor"
534
+ description: "A full-featured, GitHub Pages compatible, Jekyll blog theme tailored to software devs that contains project and resume pages. Contains localization support for multiple languages."
535
+ images:
536
+ - title: "Home Page Example"
537
+ path: "/assets/images/projects/desvsculptor/home-page-example.png"
538
+ caption: "Home page example with the DevSculptor theme."
539
+ link: ""
540
+ - title: "Home Page Example on Mobile"
541
+ path: "/assets/images/projects/desvsculptor/20230926-localhost-iphone14promax-homepage-fotor-bg-remover-20231002163813.png"
542
+ caption: "Home page example on mobile."
543
+ link: ""
544
+ - name: Dummy Project
545
+ display: true
546
+ start-month: 1
547
+ start-year: 2017 # Optional
548
+ end-month: 5
549
+ end-year: 2017
550
+ ongoing: true
551
+ tags: [Jekyll, Theme, Tag1, Tag2, Tag3, Tag4, Tag5, Tag6, Tag7, Tag8, Tag9, Tag10]
552
+ skills: [HTML, Liquid, Sass, JavaScript]
553
+ client:
554
+ name: Example Client
555
+ website: "https://jlsunday.com"
556
+ website: ""
557
+ description: "Lorem ipsum dolor sit amet sed nulla. In lorem sea delenit erat eu nonummy hendrerit et amet laoreet diam lorem sed duis elitr accumsan sadipscing ea. Sit esse ad lorem sit et labore erat dolores at hendrerit. Diam luptatum stet sit. Elitr sed ut. Dolor sed lorem autem hendrerit iusto diam lorem duo eirmod sed dolore. Consequat lorem takimata. Voluptua nonumy autem labore vero amet vero amet invidunt et ea eirmod takimata feugiat kasd duo accusam. Dolore et vero sit facilisi duis tempor commodo diam commodo sea gubergren ea. Tempor aliquyam et nonumy dolore sadipscing sed diam sit stet ut sit elitr amet diam diam te duo. Tempor voluptua vulputate rebum. Wisi et takimata takimata adipiscing voluptua."
558
+ images:
559
+ - title: ""
560
+ path: "/assets/images/projects/dummy_project/ilya-pavlov-OqtafYT5kTw-unsplash.jpg"
561
+ caption: Photo by <a href="https://unsplash.com/@ilyapavlov?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Ilya Pavlov</a> on <a href="https://unsplash.com/photos/OqtafYT5kTw?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a>
562
+ - name: "Example Project 2"
563
+ display: false
564
+ start-month:
565
+ start-year:
566
+ end-month:
567
+ end-year:
568
+ ongoing: true
569
+ tags: []
570
+ skills: []
571
+ client:
572
+ name: ""
573
+ website: ""
574
+ website: ""
575
+ description: ""
576
+ ```
577
+
578
+ ------------------
579
+ ##### `social.yml`
580
+
581
+ The social data can be accessed by your site by using `site.data.social`. The data within is stored as a list of objects.
582
+ Jekyll's site has a good short use case for this type of list [here](https://jekyllrb.com/docs/datafiles/#example-list-of-members){:target="_blank"}{:rel="noopener noreferrer"}.
583
+
584
+ Social is a bit different from the other data files. The objects stored in `social.yml` are primarily used for the social
585
+ icons listed in the "About Me" on the home page. However, the objects can contain other properties that may be used elsewhere.
586
+ For instance, the `twitter` object in the list has a `card` property and a `creator` property that the others do not. These properties
587
+ are used to tell which blog post properties are to be used when creating a shareable X card. `discus` has a `shortname`
588
+ property that the others don't have or need. If all you care about is showing your social icon that links back to you, then
589
+ just be sure to include the following properties, shown here with GitHub:
590
+
591
+ ```yaml
592
+ - name: github
593
+ show_in_contact_me: true # Must be true if you want to show the icon in the About Me on the home page.
594
+ username: sundayj
595
+ url: https://github.com/sundayj
596
+ icon: bi bi-github # The bootstrap icon class to be used for the social's icon. More here: https://icons.getbootstrap.com/?q=social
597
+ ```
598
+
599
+ ------------------------
600
+ #### `_includes` Folder
601
+
602
+ ```shell
603
+ ├───_includes
604
+ │ │ about.html
605
+ │ │ anchor_headings.html
606
+ │ │ archives.html
607
+ │ │ categories.html
608
+ │ │ comments.html
609
+ │ │ footer.html
610
+ │ │ head.html
611
+ │ │ home.html
612
+ │ │ navigation.html
613
+ │ │ page_pagination.html
614
+ │ │ projects.html
615
+ │ │ sidebar.html
616
+ │ │ tags.html
617
+ │ │ toc.html
618
+ │ │
619
+ │ ├───footer
620
+ │ │ code-block-lang.html
621
+ │ │ color_theme_toggler.html
622
+ │ │ copyright.html
623
+ │ │ create-toc.html
624
+ │ │ page_pagination.html
625
+ │ │ reading-time.html
626
+ │ │ scripts.html
627
+ │ │ toggle-toc.html
628
+ │ │
629
+ │ ├───head
630
+ │ │ ban.html
631
+ │ │ google_analytics.html
632
+ │ │ icons.html
633
+ │ │ scripts.html
634
+ │ │ stylesheets.html
635
+ │ │
636
+ │ ├───home
637
+ │ │ post_card.html
638
+ │ │
639
+ │ ├───navigation
640
+ │ │ color-theme-switcher.html
641
+ │ │ svg.html
642
+ │ │
643
+ │ ├───projects
644
+ │ │ project-card.html
645
+ │ │
646
+ │ ├───search
647
+ │ │ algolia.html
648
+ │ │
649
+ │ └───sidebar
650
+ │ aboutme.html
651
+ │ blogroll.html
652
+ ```
653
+ -----------------------
654
+ #### `_layouts` Folder
655
+
656
+ ```shell
657
+ ├───_layouts
658
+ │ default.html
659
+ │ home.html
660
+ │ page.html
661
+ │ plain.html
662
+ │ post.html
663
+ ```
664
+ --------------------
665
+ #### `_posts` Folder
666
+
667
+ ```shell
668
+ ├───_posts
669
+ │ 2023-09-17-about-devsculptor.md
670
+ │ 2023-09-18-usage.md
671
+ │ 2023-09-19-test-post-1.md
672
+ ```
673
+ -------------------
674
+ #### `_sass` Folder
675
+
676
+ ```shell
677
+ ├───_sass
678
+ │ _base.scss
679
+ │ _navigation.scss
680
+ │ _syntax-highlighting.scss
681
+ ```
682
+
683
+ ---------------
684
+ ## Contributing
685
+
686
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sundayj/DevSculptor. 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.
687
+
688
+ ---------------
689
+ ## Development
690
+
691
+ To set up your environment to develop this theme, run `bundle install`.
692
+
693
+ DevSculptor is set up just like a normal Jekyll site! To test DevSculptor, run `bundle exec jekyll serve` and open your browser at `http://localhost:4000`. This starts a Jekyll server using DevSculptor. Add pages, documents, data, etc. like normal to test DevSculptor's contents. As you make modifications to DevSculptor and to your content, your site will regenerate and you should see the changes in the browser after a refresh, just like normal.
694
+
695
+ When DevSculptor is released, only the files in `_layouts`, `_includes`, `_sass`, `_data`, `pages` and `assets` tracked with Git will be bundled.
696
+ To add a custom directory to DevSculptor-gem, please edit the regexp in `DevSculptor.gemspec` accordingly.
697
+
698
+ ----------
699
+ ## License
700
+
701
+ The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
702
+
703
+ -------------
704
+ ## Built With
705
+
706
+ - DevSculptor logo generation - [LOGO](https://logo.com/)
707
+ - DevSculptor favicon conversion - [favicon.io](https://favicon.io/favicon-converter/)
708
+ - Search provided by [Algolia](https://www.algolia.com/blog/engineering/instant-search-blog-documentation-jekyll-plugin/)
709
+ - Contact Me form by [Fabform](https://fabform.io/)
710
+ - Comments provided by [HTML Comment Box](https://www.htmlcommentbox.com/)
711
+ - Anchor Tags provided by [allejo/jekyll-anchor-headings](https://github.com/allejo/jekyll-anchor-headings)