Skip to content

Commit 5ed275c

Browse files
committed
tweaked services page to have object oriented hide/show features available to developers
1 parent 59cca64 commit 5ed275c

File tree

98 files changed

+599
-541
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+599
-541
lines changed

README.md

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ hugo && aws s3 sync public/ s3://bryanchasko.com --profile websites-bryanchasko
3434
### Website Architecture
3535

3636
```mermaid
37-
%%{init: {'flowchart': {'curve': 'linear'}, 'theme': 'base', 'themeVariables': {'fontSize': '16px', 'fontFamily': 'arial'}}}%%
37+
%%{init: {'flowchart': {'curve': 'linear'}, 'theme': 'base', 'themeVariables': {'fontSize': '16px', 'fontFamily': 'arial', 'lineColor': '#d8bfd8'}}}%%
3838
graph TB
3939
A["🌐 User<br/>Browser"] -->|HTTPS| B["🔍 Route 53<br/>DNS"]
4040
B -->|Resolves| C["⚡ CloudFront<br/>CDN"]
@@ -51,7 +51,7 @@ graph TB
5151
### CI/CD Pipeline
5252

5353
```mermaid
54-
%%{init: {'flowchart': {'curve': 'linear'}, 'theme': 'base', 'themeVariables': {'fontSize': '16px', 'fontFamily': 'arial'}}}%%
54+
%%{init: {'flowchart': {'curve': 'linear'}, 'theme': 'base', 'themeVariables': {'fontSize': '16px', 'fontFamily': 'arial', 'lineColor': '#00ff41'}}}%%
5555
graph TB
5656
A["📝 GitHub"] -->|Push| B["⚙️ GitHub<br/>Actions"]
5757
B -->|Build & Test| C["🔨 Hugo<br/>Build"]
@@ -496,6 +496,27 @@ This site uses the custom **bryan-chasko-theme** with modular architecture and N
496496

497497
Full roadmap: [THEME_DEVELOPMENT.md](THEME_DEVELOPMENT.md)
498498

499+
### Layout Architecture
500+
501+
The theme uses Hugo's layout cascade to provide section-specific control over content rendering:
502+
503+
| Layout | Purpose | Behavior |
504+
|--------|---------|----------|
505+
| `_default/list.html` | Default for all sections | Renders page header + content + child page list |
506+
| `services/list.html` | Services section only | Renders page header + content (cards + CTA) **without** child page list |
507+
| `notes/list.html` | Notes section only | Renders page header + social feed + content + "📝 Website Notes" header + child page list |
508+
509+
**How to add section-specific layouts:**
510+
1. Create `layouts/[section]/list.html` in the theme
511+
2. Copy essential structure from `_default/list.html` (header, breadcrumbs, content)
512+
3. Customize the child page rendering loop (or remove it entirely)
513+
4. Hugo automatically uses the section-specific layout when available
514+
515+
**Example: Services page**
516+
- Markdown content in `content/services/_index.md` contains hardcoded card grid HTML
517+
- `services/list.html` renders this content but skips the `{{ range $paginator.Pages }}` loop
518+
- Result: Card grid displays, no duplicate list below
519+
499520
## Data-Driven Content 📊
500521

501522
External profile content is managed via Hugo data files in `data/`:

public/404.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<!doctype html><html lang=en dir=auto data-theme=auto><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=preconnect href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel=stylesheet><meta name=robots content="index, follow"><title>404 Page not found | Bryan Chasko's Portfolio</title><meta name=keywords content><meta name=description content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."><meta name=author content="Bryan Chasko"><link rel=canonical href=http://localhost:1313/404.html><meta name=google-site-verification content="YOUR_GOOGLE_SITE_VERIFICATION_TAG"><meta name=yandex-verification content="YOUR_YANDEX_SITE_VERIFICATION_TAG"><meta name=msvalidate.01 content="YOUR_BING_SITE_VERIFICATION_TAG"><link crossorigin=anonymous href=/assets/css/stylesheet.cd7af05ee06ec274c53cd2fde20010833253635c24f33b41a00facf69447b42e.css integrity="sha256-zXrwXuBuwnTFPNL94gAQgzJTY1wk8ztBoA+s9pRHtC4=" rel="preload stylesheet" as=style><link rel=icon href=http://localhost:1313/favicon.ico><link rel=icon type=image/png sizes=16x16 href=http://localhost:1313/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=http://localhost:1313/favicon-32x32.png><link rel=apple-touch-icon href=http://localhost:1313/apple-touch-icon.png><link rel=mask-icon href=http://localhost:1313/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=http://localhost:1313/404.html><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--theme)}.toc{background:var(--entry)}}@media(prefers-color-scheme:light){.list::-webkit-scrollbar-thumb{border-color:var(--code-bg)}}</style></noscript><script>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":document.querySelector("html").dataset.theme="light"</script><script src=/js/notes-tilt.min.js defer></script><meta property="og:url" content="http://localhost:1313/404.html"><meta property="og:site_name" content="Bryan Chasko's Portfolio"><meta property="og:title" content="404 Page not found"><meta property="og:description" content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta property="og:image" content="http://localhost:1313/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="http://localhost:1313/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."></head><body class=list id=top><a class=skip-link href=#main-content>Skip to main content</a><header class=header role=banner><nav class=nav role=navigation aria-label="Main navigation"><div class=logo><a href=http://localhost:1313/ accesskey=h title="HOME (Alt + H)"><img src=http://localhost:1313/apple-touch-icon.png alt="HOME logo" height=35 onerror='this.classList.add("error"),this.style.display="none"'>HOME</a><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme" aria-pressed=false>
1+
<!doctype html><html lang=en dir=auto data-theme=auto><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><link rel=preconnect href=https://fonts.googleapis.com><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel=stylesheet><meta name=robots content="index, follow"><title>404 Page not found | Bryan Chasko's Portfolio</title><meta name=keywords content><meta name=description content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."><meta name=author content="Bryan Chasko"><link rel=canonical href=https://bryanchasko.com/404.html><meta name=google-site-verification content="YOUR_GOOGLE_SITE_VERIFICATION_TAG"><meta name=yandex-verification content="YOUR_YANDEX_SITE_VERIFICATION_TAG"><meta name=msvalidate.01 content="YOUR_BING_SITE_VERIFICATION_TAG"><link crossorigin=anonymous href=/assets/css/stylesheet.cd7af05ee06ec274c53cd2fde20010833253635c24f33b41a00facf69447b42e.css integrity="sha256-zXrwXuBuwnTFPNL94gAQgzJTY1wk8ztBoA+s9pRHtC4=" rel="preload stylesheet" as=style><link rel=icon href=https://bryanchasko.com/favicon.ico><link rel=icon type=image/png sizes=16x16 href=https://bryanchasko.com/favicon-16x16.png><link rel=icon type=image/png sizes=32x32 href=https://bryanchasko.com/favicon-32x32.png><link rel=apple-touch-icon href=https://bryanchasko.com/apple-touch-icon.png><link rel=mask-icon href=https://bryanchasko.com/safari-pinned-tab.svg><meta name=theme-color content="#2e2e33"><meta name=msapplication-TileColor content="#2e2e33"><link rel=alternate hreflang=en href=https://bryanchasko.com/404.html><noscript><style>#theme-toggle,.top-link{display:none}</style><style>@media(prefers-color-scheme:dark){:root{--theme:rgb(29, 30, 32);--entry:rgb(46, 46, 51);--primary:rgb(218, 218, 219);--secondary:rgb(155, 156, 157);--tertiary:rgb(65, 66, 68);--content:rgb(196, 196, 197);--code-block-bg:rgb(46, 46, 51);--code-bg:rgb(55, 56, 62);--border:rgb(51, 51, 51);color-scheme:dark}.list{background:var(--theme)}.toc{background:var(--entry)}}@media(prefers-color-scheme:light){.list::-webkit-scrollbar-thumb{border-color:var(--code-bg)}}</style></noscript><script>localStorage.getItem("pref-theme")==="dark"?document.querySelector("html").dataset.theme="dark":localStorage.getItem("pref-theme")==="light"?document.querySelector("html").dataset.theme="light":window.matchMedia("(prefers-color-scheme: dark)").matches?document.querySelector("html").dataset.theme="dark":document.querySelector("html").dataset.theme="light"</script><script src=/js/notes-tilt.min.js defer></script><meta property="og:url" content="https://bryanchasko.com/404.html"><meta property="og:site_name" content="Bryan Chasko's Portfolio"><meta property="og:title" content="404 Page not found"><meta property="og:description" content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."><meta property="og:locale" content="en"><meta property="og:type" content="website"><meta property="og:image" content="https://bryanchasko.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:card content="summary_large_image"><meta name=twitter:image content="https://bryanchasko.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Welcome to Bryan Chasko's Portfolio - A showcase of projects, notes, and contact information."></head><body class=list id=top><a class=skip-link href=#main-content>Skip to main content</a><header class=header role=banner><nav class=nav role=navigation aria-label="Main navigation"><div class=logo><a href=https://bryanchasko.com/ accesskey=h title="HOME (Alt + H)"><img src=https://bryanchasko.com/apple-touch-icon.png alt="HOME logo" height=35 onerror='this.classList.add("error"),this.style.display="none"'>HOME</a><div class=logo-switches><button id=theme-toggle accesskey=t title="(Alt + T)" aria-label="Toggle theme" aria-pressed=false>
22
<svg id="moon" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/></svg>
3-
<svg id="sun" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=http://localhost:1313/services/ title=Services data-glimmer=true><span>Services</span></a></li><li><a href=http://localhost:1313/notes/ title=Notes><span>Notes</span></a></li><li><a href=http://localhost:1313/contact/ title=Contact><span>Contact</span></a></li></ul></nav></header><div class="constellation-hero webgl-container" data-constellation aria-hidden=true></div><main class=main id=main-content tabindex=-1><main class=main><div class=cat-mascot aria-hidden=true><div class=cat-head><div class="cat-ear cat-ear--left"></div><div class="cat-ear cat-ear--right"></div><div class=cat-face><div class="cat-eye cat-eye--left"><div class=cat-pupil></div></div><div class="cat-eye cat-eye--right"><div class=cat-pupil></div></div></div></div></div><h1 class=error-title>404</h1><p class=error-message>404: Buddy The Cat Chewed the Routing Table.</p><a class=error-link href=http://localhost:1313/>Flee to safety</a></main></main><footer class=footer><span>&copy; 2025 <a href=http://localhost:1313/>Bryan Chasko's Portfolio</a></span> ·
3+
<svg id="sun" width="24" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg></button></div></div><ul id=menu><li><a href=https://bryanchasko.com/services/ title=Services data-glimmer=true><span>Services</span></a></li><li><a href=https://bryanchasko.com/notes/ title=Notes><span>Notes</span></a></li><li><a href=https://bryanchasko.com/contact/ title=Contact><span>Contact</span></a></li></ul></nav></header><div class="constellation-hero webgl-container" data-constellation aria-hidden=true></div><main class=main id=main-content tabindex=-1><main class=main><div class=cat-mascot aria-hidden=true><div class=cat-head><div class="cat-ear cat-ear--left"></div><div class="cat-ear cat-ear--right"></div><div class=cat-face><div class="cat-eye cat-eye--left"><div class=cat-pupil></div></div><div class="cat-eye cat-eye--right"><div class=cat-pupil></div></div></div></div></div><h1 class=error-title>404</h1><p class=error-message>404: Buddy The Cat Chewed the Routing Table.</p><a class=error-link href=https://bryanchasko.com/>Flee to safety</a></main></main><footer class=footer><span>&copy; 2025 <a href=https://bryanchasko.com/>Bryan Chasko's Portfolio</a></span> ·
44
<span><a href=https://linkedin.com/in/bryanChasko rel="noopener noreferrer" target=_blank>Contact Bryan on LinkedIn</a></span></footer><a href=#top aria-label="go to top" title="Go to Top (Alt + G)" class=top-link id=top-link accesskey=g><svg viewBox="0 0 12 6" fill="currentColor"><path d="M12 6H0l6-6z"/></svg>
55
</a><script>let menu=document.getElementById("menu");if(menu){const e=localStorage.getItem("menu-scroll-position");e&&(menu.scrollLeft=parseInt(e,10)),menu.onscroll=function(){localStorage.setItem("menu-scroll-position",menu.scrollLeft)}}document.querySelectorAll('a[href^="#"]').forEach(e=>{e.addEventListener("click",function(e){e.preventDefault();var t=this.getAttribute("href").substr(1);window.matchMedia("(prefers-reduced-motion: reduce)").matches?document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView():document.querySelector(`[id='${decodeURIComponent(t)}']`).scrollIntoView({behavior:"smooth"}),t==="top"?history.replaceState(null,null," "):history.pushState(null,null,`#${t}`)})})</script><script>var mybutton=document.getElementById("top-link");window.onscroll=function(){document.body.scrollTop>800||document.documentElement.scrollTop>800?(mybutton.style.visibility="visible",mybutton.style.opacity="1"):(mybutton.style.visibility="hidden",mybutton.style.opacity="0")}</script><script>document.getElementById("theme-toggle").addEventListener("click",()=>{const e=document.querySelector("html");e.dataset.theme==="dark"?(e.dataset.theme="light",localStorage.setItem("pref-theme","light")):(e.dataset.theme="dark",localStorage.setItem("pref-theme","dark"))})</script><script src=/js/webgl-monitor.js defer></script><script src=/js/webgl-scenes/BaseScene.js defer></script><script src=/js/webgl-scenes/TransitionScene.js defer></script><script src=/js/constellation.js defer></script><script src=/js/webgl-scenes/SceneInitializer.js defer></script></body></html>

0 commit comments

Comments
 (0)