-
Notifications
You must be signed in to change notification settings - Fork 0
Add professional Jekyll website structure with dark theme and SEO #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: Pymmdrza <[email protected]>
Pymmdrza
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
jeklly
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR transforms the site from a cryptocurrency tools landing page with mixed promotional content to a clean, professional Jekyll-based blog and documentation platform. The changes establish a modern, accessible foundation for technical content.
Key changes:
- Complete redesign with Jekyll static site generator
- New dark theme toggle with persistent user preference
- Professional blog system with three sample posts on cryptocurrency security and Jekyll tutorials
- Modern responsive layout with semantic HTML and accessibility features
Reviewed Changes
Copilot reviewed 27 out of 29 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| index.md → index.html | Replaced promotional content with clean homepage featuring latest blog posts |
| _config.yml | Added Jekyll site configuration with plugins, navigation, and SEO settings |
| _layouts/* | Created default, page, and post layouts with semantic HTML |
| _includes/* | Added reusable header, footer, and head components |
| _sass/* | Implemented comprehensive SCSS with CSS variables for theming |
| assets/js/theme-toggle.js | Added dark theme toggle with localStorage persistence |
| _posts/* | Created three sample blog posts with proper front matter |
| about.md, contact.md, blog.html | Added core pages for site navigation |
| robots.txt | Added SEO configuration with sitemap reference |
| Gemfile | Defined Jekyll dependencies and plugins |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| // Only apply system preference if user hasn't set a preference | ||
| if (!localStorage.getItem('theme')) { | ||
| setTheme(darkModeQuery.matches ? 'dark' : 'light'); | ||
| } |
Copilot
AI
Oct 29, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The system preference check at initialization conflicts with the earlier initTheme() call on line 38. When a user has no stored preference, initTheme() sets it to 'light' (line 10 default), then this code immediately overwrites it with the system preference. The logic should check system preference first before the initial initTheme() call, or the default in getTheme() should be removed to allow this check to work properly.
| // Load theme preference before page renders to prevent flash | ||
| (function() { | ||
| const theme = localStorage.getItem('theme') || 'light'; | ||
| document.documentElement.setAttribute('data-theme', theme); | ||
| })(); |
Copilot
AI
Oct 29, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The theme initialization logic is duplicated between _includes/head.html and assets/js/theme-toggle.js (lines 9-10 and 27-30). This creates a maintenance burden and potential for inconsistency. Consider extracting the default theme value to a shared constant or removing the duplication by relying solely on the head.html initialization for the initial render.
|
|
||
| ### Send Us a Message | ||
|
|
||
| <form class="contact-form" action="https://formspree.io/f/YOUR_FORM_ID" method="POST"> |
Copilot
AI
Oct 29, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The contact form uses a placeholder 'YOUR_FORM_ID' that will result in a non-functional form. Consider either removing the form entirely until configured, providing clearer setup instructions in a comment, or using a configuration variable from _config.yml (e.g., {{ site.formspree_id }}) to make it easier to configure without editing HTML.
| User-agent: * | ||
| Allow: / | ||
|
|
||
| Sitemap: {{ site.url }}/sitemap.xml |
Copilot
AI
Oct 29, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Liquid template syntax in robots.txt will not be processed unless the file has front matter. The file needs YAML front matter (triple dashes) at the top for Jekyll to process the {{ site.url }} variable, otherwise it will be output as literal text.
Implements a complete Jekyll static site generator structure with dark theme support, blog system, and SEO optimization for the CryptoAttacker tools repository.
Structure
_config.ymlwith English content, navigation, SEO settings, and plugin configurationvariables.scss- Theme colors for light/dark modesbase.scss- Typography and accessibilitylayout.scss- Header, footer, navigation (responsive)pages.scss- Page and post stylessyntax-highlighting.scss- Code blocks (Rouge) with dual themesDark Theme
Theme preference stored in localStorage, respects system preferences by default. Toggle button in navigation switches between light/dark with smooth CSS transitions via
data-themeattribute.SEO & Accessibility
Screenshots
Light Theme:

Dark Theme:

Code Highlighting:

Usage
bundle install bundle exec jekyll serveSite builds successfully and serves at
localhost:4000.Original prompt
This pull request was created as a result of the following prompt from Copilot chat.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.