{"id":19156322,"url":"https://github.com/ess/ess.github.com","last_synced_at":"2026-03-04T14:31:42.568Z","repository":{"id":5704489,"uuid":"6915184","full_name":"ess/ess.github.com","owner":"ess","description":"It's a github page!","archived":false,"fork":false,"pushed_at":"2025-02-06T16:45:57.000Z","size":3868,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-22T21:42:05.931Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"SCSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ess.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"liberapay":"hakerdefo","custom":["https:///paypal.me/hakerdefo","https://www.buymeacoffee.com/hakerdefo"]}},"created_at":"2012-11-29T04:26:17.000Z","updated_at":"2025-02-06T16:46:00.000Z","dependencies_parsed_at":"2024-03-20T23:47:02.260Z","dependency_job_id":"b301fb18-c87e-455f-b150-240b79578737","html_url":"https://github.com/ess/ess.github.com","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/ess/ess.github.com","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ess%2Fess.github.com","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ess%2Fess.github.com/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ess%2Fess.github.com/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ess%2Fess.github.com/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ess","download_url":"https://codeload.github.com/ess/ess.github.com/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ess%2Fess.github.com/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30083745,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T13:22:36.021Z","status":"ssl_error","status_checked_at":"2026-03-04T13:20:45.750Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T08:34:05.839Z","updated_at":"2026-03-04T14:31:41.910Z","avatar_url":"https://github.com/ess.png","language":"SCSS","funding_links":["https://liberapay.com/hakerdefo","https:///paypal.me/hakerdefo","https://www.buymeacoffee.com/hakerdefo","https://paypal.me/hakerdefo","https://liberapay.com/hakerdefo/donate"],"categories":[],"sub_categories":[],"readme":"# [Forever Jekyll - A simple, elegant \u0026 full featured Jekyll theme](https://forever-jekyll.github.io)\n`Forever Jekyll` is a theme-template-boilerplate for `Jekyll`. Primary goal of `Forever Jekyll` is to make the task of building a personal website with `Jekyll` so easy that even a person with non-computing background should be able to do it with ease.  \n\n## Introduction\nIn an era of internet everyone should have a personal website or a blog. Their own personal space on `WWW`. It shouldn't be too difficult to own a personal web space in 21st century, right? Yes, right but apparently it is not that easy. To be honest it is difficult and confusing. It shouldn't be, but is. `Blogger` has long been dead. `Weebly` and `Wix` are not up to the quality mark to say the least. `WordPress` and `ghost` are not free. Site generators like `Jekyll`, `Hugo`, `Grav`, `Gatsby`, `Pelican` are great but they all require a fair amount of expertise in programming language(s) and a very good knowledge of computers and operating system(s), plus you'll have to host the created site somewhere on your own. This is one of the primary reasons why so many people with a dream of starting a blog or creating their own website end-up leaving their dreams unfulfilled. Now picture is not entirely black, there are a few options and solutions out there that can help an average person create his/her own blog/site without too many hassles and for free. Free as in Beer and free as in Freedom too. `Forever Jekyll` is one of them.  \n\nAs the name suggests `Forever Jekyll` is based on static site generator `Jekyll` but it eliminates almost all of the up front setup. No need to install/setup things like `Ruby`, `RubyGems` and no knowledge of `HTML`, `JavaScript` and `CSS` is required. All you'll need to create a blog or a site with `Forever Jekyll` is a **computer**, a **browser** and of-course an **internet connection**. Believe me that's all you'll need and in only a few minutes you'll have your own personal website up and running.  \n\nBefore continuing I'm sure you would want to know what `Forever Jekyll` has to offer beside the aforementioned ease of getting started. Here are some of its notable features,  \n- Simple, clean and distraction free layout.  \n- Responsive theme design.  \n- Mobile optimized theme.  \n- Dark mode toggle.  \n- Good looking and readable font stack.  \n- Font Awesome icon set.  \n- Search engine optimization.  \n- Sass/SCSS preprocessor support.  \n- Privacy friendly commenting system (optional).  \n- Privacy friendly analytics system (optional).  \n- Google analytics system (optional).  \n- Syntax highlighting.  \n- Multimedia content (Video, Audio, Images, Playlists, Maps) embedding.  \n- Lightbox for images and videos.  \n- Math typesetting.  \n- Diagrams and charts.  \n- Social sharing buttons for over 10 social networks.  \n- Page navigation (pagination).  \n- Post navigation.  \n- Post categories.  \n- Post read time.  \n- Site search.  \n- RSS feed.  \n- Emojis.  \n- And last but not the least free hosting support out-of-the-box.  \n\nNot convinced yet about `Forever Jekyll`? Here is a **live demo** of `Forever Jekyll`,  \n\n:trumpet::trumpet: [**Live Demo of Forever Jekyll**](https://forever-jekyll.github.io) :trumpet::trumpet:  \n\nHopefully that live demo has convinced you, hasn't it? Great! Continue with me...  \n\n## Getting started\nIn the top-right corner of this page, click `Fork`.  \n`GitHub` will prompt you to sign in. If you don't have a `GitHub` account you can easily create one from that page.  \nNext rename your newly forked repository to `yourgithubusername.github.io`. This is an important step.  \nFor example your `GitHub` user name is `elaine-thompson` then name of your repository will be,  \n`elaine-thompson.github.io`  \n\nAnother example. If your `GitHub` user name is `bolt-usain` then name of your repository will be,  \n`bolt-usain.github.io`  \nThat's it. Your site will be available a few seconds later at `https://yourgithubusername.github.io` - if not, give it a few minutes as `GitHub` suggests and it'll appear soon.  \nIf your site is not up and running, go to `Settings =\u003e Pages =\u003e Source` and make sure that `Branch: main` is set to `/ (root)`. Hit the `Save` button after making the change and your site should be available shortly.  \n\n## Customizing your site\nNow that your site is up and running it's time to customize it and truly make it yours.  \n\nClick on `_config.yml` file in your repository and next click on the `pencil icon` on the right hand corner.  \nFirst thing you'd want to change in this file is the title of your website. Edit the following line with your desired site title,  \n```\ntitle: Forever Jekyll\n```  \n\nNext, it's time to change the description of your website. To do so edit this line,  \n```\ndescription: A simple, elegant and full featured Jekyll theme\n```\nAnd finally change the url to your sites url,  \n```\nurl: https://forever-jekyll.github.io\n```  \n\nYou can add links to some or all of your social networks, online accounts, emails, even phone numbers if you wish to the footer at the bottom of your site.  \nTo do so you need to edit the `footer_links:` section in the file. Remove the ones used by the theme first and then add some of your accounts.  \nFor example you can add a link to your `Facebook` account like this,  \n  ```\n  - title: Facebook  \n    url: https://facebook.com/your.facebook.username  \n    icon: fa fa-facebook-square  \n```  \n\nOne more example. To add Your `reddit` account you need to add this to `footer_links:`,  \n```\n- title: reddit  \n  url: https://www.reddit.com/user/your.reddit.username  \n  icon: fa fa-reddit-square  \n```  \n\nIt's time to set the time zone for your site generation. This sets the TZ environment variable, which Ruby uses to handle time and date creation and manipulation. Any entry from the tz database name (IANA time zone database) is valid here. You can get the tz database name for your location from this Wikipedia article,  \n[https://en.wikipedia.org/wiki/List_of_tz_database_time_zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)  \n\nAfter finding the tz database name for your location, replace the value `null` in the following line with the tz database name,  \n```\ntimezone: null\n```\n\nA few examples,  \n```\ntimezone: Africa/Lagos\ntimezone: America/Buenos_Aires\ntimezone: Asia/Kolkata\ntimezone: Atlantic/Madeira\ntimezone: Australia/Perth\ntimezone: Brazil/West\ntimezone: Canada/Yukon\ntimezone: Europe/Dublin\ntimezone: US/Mountain\n```\n\nSave the file by clicking on `Commit changes` button in the bottom left.  \n\nTime to add your avatar and favicons to your site.  \n\nAvatar first. Select an image that you want to use as your site avatar. Scale it down to **70x70** and save it as  `avatar.png` file. There are many tools out there to do so and if you don't know any I'd suggest `mtPaint`.  \nNext in your repository navigate to the folder `assets` and then open the folder `image`. Click on the `avatar.png` file and delete it by clicking on `trashcan icon` at the top right and save the action by clicking on `Commit changes` button at the bottom left.  \nGo back to `image` folder and in the top right part click on `Add file` -\u003e `Upload files` and from there upload your own `avatar.png` file. Don't forget to save it by clicking on `Commit changes` button.  \n\nOkay now it's time for favicons. A favicon is a site icon. You'll need an image in `png` format for this. Once you are ready with your image, open the following website and use it to generate the favicons,  \n\n[https://favycon.vercel.app/](https://favycon.vercel.app/)  \n\nThis site will let you download the generated favicons in a zip file. Unzip that file and then in your `GitHub` repository go to `assets` -\u003e `image` folder and upload all the extracted image files via `Add file` -\u003e `Upload files`. Don't upload any `xml` or `json` files please.  \n\nIn your repository there is a file named `about.md`. Open it and add some content related to your site/blog. You can write a short description about yourself, your background, about your website. Possibilities are endless. Try and make this page interesting. Adding a picture is always a good idea. You can also share ways to contact you on this page if you wish. Once you have finished writing a killer introduction to you and your site, don't forget to save the changes by clicking on `Commit changes` button at the bottom left.  \n\n## Enabling comments\nComments are not enabled by default in `Forever Jekyll` but this functionality can easily be added.  \n`Forever Jekyll` uses `Cactus Comments`. It is a privacy respecting federated comment system built on Matrix protocol.  \n`Cactus Comments` is completely free and open source.  \nFirst you need to register your site with `Cactus Comments`. To do so, click on the following link,  \n\n[chat with @cactusbot:cactus.chat](https://matrix.to/#/@cactusbot:cactus.chat)  \n\nClicking on that link will take you to the `Matrix` page and you'll be prompted to choose an app to continue.  \nSelect `Element` and click on `continue`.  \nOn the next page click on `Continue in your browser`.  \nOn the next page click on `Send a Direct Message`. It'll prompt you to either `Sign In` or to `Create Account`.  \nAfter signing in to your account send following text as a direct message,  \n```\nregister \u003cYOUR-SITE-NAME\u003e\n```  \nFor example,  \n```\nregister elaine-thompson.github.io\n```  \n50% of work done.  \n\nRight click on the following link and select `Save link as...` option and save the file with the name `default.html`.  \n\n[default.html](https://github.com/forever-jekyll/propaganda/raw/a6a98c79f871fb51fc18ba2fc6f3364ce33c4d62/default-with-comments-.html)  \n\nRight click on the following link and again select `Save link as...` option and save the file with the name `post.html`.  \n\n[post.html](https://github.com/forever-jekyll/propaganda/raw/main/post-with-comments.html)  \n\nSave the following link with the name `_cactus.scss` just like we did earlier.  \n\n[_cactus.scss](https://github.com/forever-jekyll/propaganda/raw/main/_cactus.scss)  \n\nNow Navigate back to your site repository and open the folder `_layouts`.  \nUpload the `default.html` file via `Add file` -\u003e `Upload files` option.  \nOpen this file `default.html` in your site repository and go to the line number **120**,  \n```\nsiteName: \"elaine-thompson.github.io\",\n```  \nReplace `elaine-thompson.github.io` with the site name you just registered on `Cactus Comments`.  \nDon't forget to save the changes by clicking on `Commit Changes` button.  \n\nNext upload the `post.html` file to the folder `_layouts` via `Add file` -\u003e `Upload files` option.  \nIn your site repository go to folder `_sass` and upload `_cactus.scss` file via `Add file` -\u003e `Upload files` option.  \nAnd finally open the file `style.scss` in your site repository. Add the following line at the very end of the file,  \n```\n@import \"cactus\";\n```  \nSave the changes by clicking on `Commit Changes` button.  \n\nThat's it. Kudos! You have successfully enabled commenting system on your site.  \n\n## Enabling web analytics\nLike comments web analytics is not enabled by default in `Forever Jekyll` but this can easily be added.  \n`Forever Jekyll` uses `GoatCounter`. It is an open source and privacy friendly web analytics platform.  \n`GoatCounter` is free for non-commercial use. To sign up for `GoatCounter` click open the following link,  \n\n[Sign up for GoatCounter](https://www.goatcounter.com/signup)  \n\nNext navigate back to your site repository and open the file `default.html` in the folder `_layouts`.  \nRight at the end of the file you'll see following closing tags,  \n```\n\u003c/body\u003e\n\u003c/html\u003e\n```  \nAdd the following snippet right before those closing tags,  \n```\n\u003cscript data-goatcounter=\"https://MYCODE.goatcounter.com/count\"\n        async src=\"//gc.zgo.at/count.js\"\u003e\u003c/script\u003e\n```  \nOf-course you'll have to replace `MYCODE` in the snippet above with your actual `GoatCounter` code acquired during the sign up.  \nSave the changes by clicking on `Commit Changes` button.  \n\nWell-done! You have successfully enabled an ethical and privacy friendly web analytics system for your site.  \n\n## Enabling Google analytics  \nIt's quite easy to implement `Google analytics` in `Forever Jekyll`. Here is how you can do it,  \n\nCreate a file with the name `google-analytics.html` in the `_includes` directory. Add the following code into it and save the file,  \n\n```html\n\u003cscript async src=\"https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  window['ga-disable-{{ site.google_analytics }}'] = window.doNotTrack === \"1\" || navigator.doNotTrack === \"1\" || navigator.doNotTrack === \"yes\" || navigator.msDoNotTrack === \"1\";\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){window.dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', '{{ site.google_analytics }}');\n\u003c/script\u003e\n```\n\nNext open-up the `_config.yml` file and add,  \n\n`google_analytics: UA-XXXXXXXX-X`\n\nOf-course, replace `UA-XXXXXXXX-X` with your actual `Google tracking ID` above.  \n\nAnd finally, add the following code snippet to the `default.html` file in the `_layouts` directory right below the `{% include meta.html %}` line,  \n\n```html\n{%- if jekyll.environment == 'production' and site.google_analytics -%}\n  {%- include google-analytics.html -%}\n{%- endif -%}\n```\n\nSave the file and voila! you have successfully enabled `Google analytics` for your website!\n\n## Support\n\nIf you like `Forever Jekyll`, please consider supporting it, even the smallest contribution goes a long way:  \n\n[![Support via PayPal](https://cdn.jsdelivr.net/gh/twolfson/paypal-github-button@1.0.0/dist/button.svg)](https://paypal.me/hakerdefo)  \n[![\"Buy Me A Coffee\"](https://user-images.githubusercontent.com/1376749/120938564-50c59780-c6e1-11eb-814f-22a0399623c5.png)](https://www.buymeacoffee.com/hakerdefo)  \n[![Support via Liberapay](https://liberapay.com/assets/widgets/donate.svg)](https://liberapay.com/hakerdefo/donate)  \n\n## Writing posts\nThe `_posts` folder is where your blog posts live.  \nPosts in `Jekyll` are text files and `Jekyll` provides everything you need to turn it into a blog.  \n`Jekyll` posts are typically written in `Markdown` but you can also write in `HTML` if you wish.  \nAll post files must begin with front matter. What's a front matter?  \nA front matter is typically used to set a layout or other meta data.  \nBut at this point in time all that technical stuff is strictly not necessary for you to remember.  \nAll you need to remember is, you'll have to begin every new post with following snippet,  \n```  \n---\nlayout: post\ntitle: Title of your post\ncategories: [category 1, category 2]\n---\n```  \n`title:` in the above snippet is obviously the title of your post.  \n`categories:` A blog category can either be a word or a group of words separated by a comma.  \nChoose them wisely and use them to give a gist of the post or post's content.  \n`Categories` can play a crucial role in organizing your site’s posts properly. It is also considered a good SEO practice.  \n`Categories` makes it easy for your potential web visitors to navigate around your site and offers a good user experience.  \n\nNow coming to actual writing. `Markdown` doesn't require any special application. You can write in `Markdown` everywhere.  \nHere is a very good resource to get you started with `Markdown`=\u003e [Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).  \nBut for someone who is new to `Markdown` I would recommend any of these three editors,  \n - [Abricotine](https://abricotine.brrd.fr/)  \n - [Mark Text](https://marktext.app/)  \n - [Zettlr](https://www.zettlr.com/)  \n\nAfter you have completed your post, you'll have to save the post file in `_posts` folder in your repository.  \n`Jekyll` is very particular about the post filename format. Every post filename must follow this format,  \n```\nYEAR-MONTH-DAY-title.md\n```  \nAn example,  \n```\n2011-12-31-new-years-eve-is-awesome.md\n```  \nOne more example,  \n```\n2012-09-12-how-to-write-a-blog.md\n```  \nA bit odd but not that difficult, right?!?  \n\nIt is always a great idea to keep the main (index) page of your blog uncluttered and concise. So rather than displaying the complete post on the main page, we can display summery or excerpt of the post there. `Forever Jekyll` makes it really easy to truncate post and let you select the amount of content you wish to display on the main page. All you have to do is, add `\u003c!--more--\u003e` on a newline from where you want to truncate the post. An example. Say you have following post you want to publish,  \n```\nBut I must explain to you how all this mistaken idea of re-probating pleasure and extolling pain arose. To do so, I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but occasionally circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure?  \nOn the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain. These cases are perfectly simple and easy to distinguish. In a free hour, when our power of choice is untrammeled and when nothing prevents our being able to do what we like best, every pleasure is to be welcomed and every pain avoided. But in certain circumstances and owing to the claims of duty or the obligations of business it will frequently occur that pleasures have to be repudiated and annoyances accepted. The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains.  \n```\nYou want to only display the first paragraph and truncate the post after that on the main page. It can easily be done by just adding `\u003c!--more--\u003e` like this,  \n```\nBut I must explain to you how all this mistaken idea of re-probating pleasure and extolling pain arose. To do so, I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. Nor again is there anyone who loves or pursues or desires to obtain pain of itself, because it is pain, but occasionally circumstances occur in which toil and pain can procure him some great pleasure. To take a trivial example, which of us ever undertakes laborious physical exercise, except to obtain some advantage from it? But who has any right to find fault with a man who chooses to enjoy a pleasure that has no annoying consequences, or one who avoids a pain that produces no resultant pleasure?  \n\u003c!--more--\u003e\nOn the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain. These cases are perfectly simple and easy to distinguish. In a free hour, when our power of choice is untrammeled and when nothing prevents our being able to do what we like best, every pleasure is to be welcomed and every pain avoided. But in certain circumstances and owing to the claims of duty or the obligations of business it will frequently occur that pleasures have to be repudiated and annoyances accepted. The wise man therefore always holds in these matters to this principle of selection: he rejects pleasures to secure other greater pleasures, or else he endures pains to avoid worse pains.  \n```\n\nI highly recommend adding excerpts to your posts using `\u003c!--more--\u003e` as shown above to keep your main blog/site page uncluttered and easy to navigate. You can find more examples of this on `Forever Jekyll` demo site as every post there has been truncated using the above technique.  \n\nI've included a sample post in `_posts` directory to get you started. Feel free to delete it when you are ready with your first post.  \n\n## Conclusion\nI'm pretty sure that this should be good enough for almost everyone to get started with `Forever Jekyll` in particular and `Blogging` in general.  \nBut I'm also aware that I must have missed a few things in this README and there will be a few unexplained things left behind.  \nIn such a case feel free to [start a discussion](https://github.com/forever-jekyll/forever-jekyll/discussions/). Everything related to `ForeverJekyll` is welcome.  \n\n\u003e Your personal website or blog might not change the world but it will certainly change you.  \n~ Me  \n\n\u003e It is necessary to write, if the days are not to slip emptily by. How else, indeed, to clap the net over the butterfly of the moment? for the moment passes, it is forgotten; the mood is gone; life itself is gone.  \n~ Vita Sackville-West  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fess%2Fess.github.com","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fess%2Fess.github.com","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fess%2Fess.github.com/lists"}