Skip to content

Commit 7c22766

Browse files
authored
Merge pull request #36 from moshesham/copilot/refactor-style-and-format
Modernize site design to match Datalake-Guide styling
2 parents 045ba21 + a5a4a72 commit 7c22766

File tree

6 files changed

+1783
-82
lines changed

6 files changed

+1783
-82
lines changed

Gemfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ gem "github-pages", group: :jekyll_plugins
66
# Optional helpful plugins
77
gem "jekyll-feed"
88
gem "jekyll-sitemap"
9+
gem "jekyll-seo-tag"

_config.yml

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,69 @@
1+
# Site settings
12
title: "Data Science Analytical Handbook"
2-
description: "A handbook for preparing for analytical/data-science interviews"
3-
baseurl: "" # change if served from a subpath, e.g. /repo-name
4-
url: "" # set to your site URL, e.g. https://username.github.io
3+
description: "A comprehensive guide to data science interview preparation, analytical skills, and product analytics mastery"
4+
url: "https://moshesham.github.io"
5+
baseurl: "/Data-Science-Analytical-Handbook"
6+
repository: moshesham/Data-Science-Analytical-Handbook
7+
github_username: moshesham
58

9+
# Author information
10+
author: "Data Science Handbook Community"
11+
12+
# Build settings
613
markdown: kramdown
714
kramdown:
815
input: GFM
916
auto_id_prefix: "id-"
10-
11-
# Prevent inline styles for table alignment
17+
syntax_highlighter: rouge
1218
table_align_class: true
1319

20+
highlighter: rouge
21+
1422
permalink: /:categories/:title/
1523

24+
# Plugins
1625
plugins:
1726
- jekyll-feed
1827
- jekyll-sitemap
28+
- jekyll-seo-tag
29+
30+
# Include files
31+
include:
32+
- _pages
33+
- _layouts
34+
- _includes
35+
- assets
1936

37+
# Exclude files
2038
exclude:
39+
- Gemfile
2140
- Gemfile.lock
41+
- vendor/
42+
- .bundle/
43+
- .sass-cache/
44+
- .jekyll-cache/
45+
- node_modules/
46+
- .git
47+
- .github
48+
- "*.pyc"
49+
- "__pycache__/"
2250
- streamlit_app
2351
- streamlit_app/**
52+
53+
# Custom variables
54+
github_url: "https://github.com/moshesham/Data-Science-Analytical-Handbook"
55+
issues_url: "https://github.com/moshesham/Data-Science-Analytical-Handbook/issues"
56+
57+
# SEO and social
58+
social:
59+
name: "Data Science Analytical Handbook"
60+
links:
61+
- https://github.com/moshesham/Data-Science-Analytical-Handbook
62+
63+
# Defaults
64+
defaults:
65+
- scope:
66+
path: ""
67+
type: "pages"
68+
values:
69+
layout: "default"

_includes/sidebar.html

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,46 @@
11
<aside class="sidebar">
2-
<h2>Contents</h2>
2+
<h2><i class="fas fa-book"></i> Contents</h2>
33
<ul class="nav-list">
4-
<li><a href="{{ '/introduction/' | relative_url }}" class="{% if page.url == '/introduction/' %}active{% endif %}">I. Introduction</a>
4+
<li>
5+
<a href="{{ '/introduction/' | relative_url }}" class="{% if page.url == '/introduction/' %}active{% endif %}">
6+
<i class="fas fa-play-circle"></i> I. Introduction
7+
</a>
58
<ul>
6-
<li><a href="{{ '/introduction/#welcome' | relative_url }}">1. Welcome and Purpose of this Handbook</a></li>
7-
<li><a href="{{ '/introduction/#meta-data-science-role' | relative_url }}">2. What to Expect: The Meta Data Science Role</a></li>
8-
<li><a href="{{ '/introduction/#interview-process' | relative_url }}">3. Navigating the Meta Interview Process</a></li>
9-
<li><a href="{{ '/introduction/#handbook-usage' | relative_url }}">4. How to Use This Handbook</a></li>
9+
<li><a href="{{ '/introduction/#welcome' | relative_url }}">Welcome & Purpose</a></li>
10+
<li><a href="{{ '/introduction/#meta-data-science-role' | relative_url }}">The Data Science Role</a></li>
11+
<li><a href="{{ '/introduction/#interview-process' | relative_url }}">Interview Process</a></li>
12+
<li><a href="{{ '/introduction/#handbook-usage' | relative_url }}">How to Use This Handbook</a></li>
1013
</ul>
1114
</li>
12-
<li><a href="{{ '/foundational_knowledge/1/' | relative_url }}" class="{% if page.url contains '/foundational_knowledge/' %}active{% endif %}">II. Foundational Knowledge &amp; Skills</a></li>
13-
<li><a href="{{ '/interview-preparation/technical-skills/' | relative_url }}" class="{% if page.url contains '/interview-preparation/' %}active{% endif %}">III. Interview Preparation</a></li>
14-
<li><a href="{{ '/meta-specificity/' | relative_url }}" class="{% if page.url contains '/meta-specificity/' %}active{% endif %}">IV. Meta Specificity</a></li>
15-
<li><a href="{{ '/resources-practice/' | relative_url }}" class="{% if page.url contains '/resources-practice/' %}active{% endif %}">V. Resources and Practice</a></li>
16-
<li><a href="{{ '/conclusion/' | relative_url }}" class="{% if page.url contains '/conclusion/' %}active{% endif %}">VI. Conclusion</a></li>
17-
<li><a href="{{ '/appendix/' | relative_url }}" class="{% if page.url contains '/appendix/' %}active{% endif %}">Appendix</a></li>
15+
<li>
16+
<a href="{{ '/foundational_knowledge/1/' | relative_url }}" class="{% if page.url contains '/foundational_knowledge/' %}active{% endif %}">
17+
<i class="fas fa-graduation-cap"></i> II. Foundational Knowledge
18+
</a>
19+
</li>
20+
<li>
21+
<a href="{{ '/interview-preparation/technical-skills/' | relative_url }}" class="{% if page.url contains '/interview-preparation/' %}active{% endif %}">
22+
<i class="fas fa-chalkboard-teacher"></i> III. Interview Preparation
23+
</a>
24+
</li>
25+
<li>
26+
<a href="{{ '/meta-specificity/' | relative_url }}" class="{% if page.url contains '/meta-specificity/' %}active{% endif %}">
27+
<i class="fas fa-building"></i> IV. Meta Specificity
28+
</a>
29+
</li>
30+
<li>
31+
<a href="{{ '/resources-practice/' | relative_url }}" class="{% if page.url contains '/resources-practice/' %}active{% endif %}">
32+
<i class="fas fa-book-open"></i> V. Resources & Practice
33+
</a>
34+
</li>
35+
<li>
36+
<a href="{{ '/conclusion/' | relative_url }}" class="{% if page.url contains '/conclusion/' %}active{% endif %}">
37+
<i class="fas fa-flag-checkered"></i> VI. Conclusion
38+
</a>
39+
</li>
40+
<li>
41+
<a href="{{ '/appendix/' | relative_url }}" class="{% if page.url contains '/appendix/' %}active{% endif %}">
42+
<i class="fas fa-paperclip"></i> Appendix
43+
</a>
44+
</li>
1845
</ul>
1946
</aside>

_layouts/default.html

Lines changed: 167 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,178 @@
11
<!DOCTYPE html>
22
<html lang="en">
3-
<head>
4-
<meta charset="utf-8">
5-
<meta name="viewport" content="width=device-width, initial-scale=1">
6-
<title>{{ page.title | default: site.title }}</title>
7-
<meta name="description" content="{{ page.description | default: site.description }}">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}</title>
7+
<meta name="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}">
8+
9+
<!-- SEO Meta Tags -->
10+
<meta name="keywords" content="Data Science, Analytics, Interview Preparation, SQL, Python, Statistics, Meta">
11+
<meta name="author" content="Data Science Analytical Handbook">
12+
13+
<!-- Open Graph / Facebook -->
14+
<meta property="og:type" content="website">
15+
<meta property="og:url" content="{{ page.url | absolute_url }}">
16+
<meta property="og:title" content="{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}">
17+
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}">
18+
19+
<!-- Twitter -->
20+
<meta property="twitter:card" content="summary_large_image">
21+
<meta property="twitter:url" content="{{ page.url | absolute_url }}">
22+
<meta property="twitter:title" content="{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}">
23+
<meta property="twitter:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}">
24+
25+
<!-- Font Preconnects -->
26+
<link rel="preconnect" href="https://fonts.googleapis.com">
27+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
28+
29+
<!-- Styles -->
30+
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
31+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism.min.css">
32+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
833

934
<!-- MathJax -->
10-
<script async src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
1135
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
1236

13-
<!-- Font Awesome -->
14-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css">
37+
<!-- RSS Feed -->
38+
{% feed_meta %}
39+
</head>
40+
<body>
41+
<div class="page-wrapper">
42+
<!-- Skip to main content link -->
43+
<a href="#main-content" class="skip-link">Skip to main content</a>
44+
45+
<!-- Header -->
46+
<header class="site-header">
47+
<nav class="main-nav">
48+
<div class="nav-brand">
49+
<a href="{{ '/' | relative_url }}">
50+
<i class="fas fa-chart-line"></i>
51+
<span>{{ site.title | default: "Data Science Handbook" }}</span>
52+
</a>
53+
</div>
54+
<button class="nav-toggle" aria-label="Open navigation menu" aria-expanded="false">
55+
<i class="fas fa-bars"></i>
56+
</button>
57+
<ul class="nav-links">
58+
<li><a href="{{ '/' | relative_url }}" {% if page.url == '/' %}class="active"{% endif %}>Home</a></li>
59+
<li><a href="{{ '/introduction/' | relative_url }}" {% if page.url contains 'introduction' %}class="active"{% endif %}>Introduction</a></li>
60+
<li><a href="{{ '/foundational_knowledge/1/' | relative_url }}" {% if page.url contains 'foundational' %}class="active"{% endif %}>Foundation</a></li>
61+
<li><a href="{{ '/interview-preparation/technical-skills/' | relative_url }}" {% if page.url contains 'interview' %}class="active"{% endif %}>Interview Prep</a></li>
62+
<li><a href="{{ '/resources-practice/' | relative_url }}" {% if page.url contains 'resources' %}class="active"{% endif %}>Resources</a></li>
63+
</ul>
64+
<div class="nav-actions">
65+
<button class="theme-toggle" aria-label="Toggle dark mode" title="Toggle theme">
66+
<i class="fas fa-moon"></i>
67+
</button>
68+
<a href="{{ site.github_url }}" class="btn btn-secondary" target="_blank">
69+
<i class="fab fa-github"></i> GitHub
70+
</a>
71+
</div>
72+
</nav>
73+
</header>
1574

16-
<!-- Site CSS -->
17-
<link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
18-
</head>
19-
<body>
20-
{% include sidebar.html %}
75+
<!-- Sidebar (for pages that need it) -->
76+
{% unless page.url == '/' %}
77+
{% include sidebar.html %}
78+
{% endunless %}
2179

22-
<div class="container">
23-
<main class="main-content">
24-
{{ content }}
25-
<footer>
26-
<p>© {{ site.time | date: "%Y" }} {{ site.author | default: "" }}</p>
80+
<!-- Main Content -->
81+
<main class="main-content" id="main-content">
82+
<article class="content">
83+
{{ content }}
84+
</article>
85+
</main>
86+
87+
<!-- Footer -->
88+
<footer class="site-footer">
89+
<div class="footer-content">
90+
<div class="footer-section">
91+
<h4>Quick Links</h4>
92+
<ul>
93+
<li><a href="{{ '/introduction/' | relative_url }}">Introduction</a></li>
94+
<li><a href="{{ '/foundational_knowledge/1/' | relative_url }}">Foundational Knowledge</a></li>
95+
<li><a href="{{ '/interview-preparation/technical-skills/' | relative_url }}">Interview Preparation</a></li>
96+
<li><a href="{{ '/resources-practice/' | relative_url }}">Resources & Practice</a></li>
97+
</ul>
98+
</div>
99+
<div class="footer-section">
100+
<h4>Topics</h4>
101+
<ul>
102+
<li><a href="{{ '/foundational_knowledge/1/' | relative_url }}">Statistics & Probability</a></li>
103+
<li><a href="{{ '/foundational_knowledge/2-SQL/' | relative_url }}">SQL & Data</a></li>
104+
<li><a href="{{ '/foundational_knowledge/3/' | relative_url }}">Python for Analysis</a></li>
105+
<li><a href="{{ '/interview-preparation/analytical-reasoning/' | relative_url }}">Analytical Reasoning</a></li>
106+
</ul>
107+
</div>
108+
<div class="footer-section">
109+
<h4>Community</h4>
110+
<ul>
111+
<li><a href="{{ site.github_url }}" target="_blank">GitHub Repository</a></li>
112+
<li><a href="{{ site.issues_url }}" target="_blank">Report Issues</a></li>
113+
<li><a href="{{ site.github_url }}/pulls" target="_blank">Contribute</a></li>
114+
<li><a href="{{ '/CODE_OF_CONDUCT/' | relative_url }}">Code of Conduct</a></li>
115+
</ul>
116+
</div>
117+
</div>
118+
<div class="footer-bottom">
119+
<p>&copy; {{ site.time | date: '%Y' }} {{ site.title }}. Built with ❤️ for aspiring data scientists.</p>
120+
<p>Licensed under <a href="{{ '/LICENSE/' | relative_url }}">MIT License</a></p>
121+
</div>
27122
</footer>
28-
</main>
29123
</div>
30-
</body>
124+
125+
<!-- Scripts -->
126+
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-core.min.js"></script>
127+
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>
128+
<script>
129+
// Mobile navigation toggle
130+
document.addEventListener('DOMContentLoaded', function() {
131+
const navToggle = document.querySelector('.nav-toggle');
132+
const navLinks = document.querySelector('.nav-links');
133+
134+
if (navToggle && navLinks) {
135+
navToggle.addEventListener('click', function() {
136+
navLinks.classList.toggle('active');
137+
const expanded = navToggle.getAttribute('aria-expanded') === 'true';
138+
navToggle.setAttribute('aria-expanded', !expanded);
139+
});
140+
}
141+
142+
// Theme toggle
143+
const themeToggle = document.querySelector('.theme-toggle');
144+
if (themeToggle) {
145+
themeToggle.addEventListener('click', function() {
146+
const currentTheme = document.documentElement.getAttribute('data-theme');
147+
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
148+
document.documentElement.setAttribute('data-theme', newTheme);
149+
localStorage.setItem('theme', newTheme);
150+
151+
const icon = themeToggle.querySelector('i');
152+
icon.className = newTheme === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
153+
});
154+
155+
// Check for saved theme preference
156+
const savedTheme = localStorage.getItem('theme');
157+
if (savedTheme) {
158+
document.documentElement.setAttribute('data-theme', savedTheme);
159+
const icon = themeToggle.querySelector('i');
160+
icon.className = savedTheme === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
161+
}
162+
}
163+
164+
// Sticky header scroll effect
165+
const header = document.querySelector('.site-header');
166+
if (header) {
167+
window.addEventListener('scroll', function() {
168+
if (window.scrollY > 50) {
169+
header.classList.add('scrolled');
170+
} else {
171+
header.classList.remove('scrolled');
172+
}
173+
});
174+
}
175+
});
176+
</script>
177+
</body>
31178
</html>

0 commit comments

Comments
 (0)