Skip to content

Commit 5fffe04

Browse files
committed
feat: Add TimeTracker case study and markdown containers
Add TimeTracker Pro case study page and all related image assets (raw PNGs and optimized JPG/WEBP + thumbnails) under src/ and docs/, plus a new content page at src/pages/development/timetracker.md. Register markdown-it-container and add five fenced container types (card, section, cards, card-basic, card-shadow) in .eleventy.js; enable rendering for opt-in pages. Add SASS source for containers and compiled CSS outputs (containers.css, markdown.css, print.css, prism.css, slides.css, etc.) and update markdown include. Update docs (README, CLAUDE, CHANGELOG) to document the containers feature and the TimeTracker case study, and adjust a few HTML pages (replace wrapper <section> with <content>) for print/layout consistency. Also update package.json build scripts so production builds compile the full SASS directory into docs/css.
1 parent 553c8f5 commit 5fffe04

106 files changed

Lines changed: 3330 additions & 55 deletions

File tree

Some content is hidden

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

.eleventy.js

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ const pluginTOC = require('eleventy-plugin-toc');
99
const pluginDropcap = require('eleventy-plugin-dropcap');
1010
const markdownIt = require("markdown-it");
1111
const markdownItAnchor = require("markdown-it-anchor");
12-
const markdownItHighlightJS = require('markdown-it-highlightjs')
12+
const markdownItHighlightJS = require('markdown-it-highlightjs');
13+
const markdownItContainer = require('markdown-it-container');
1314
const emojiReadTime = require("@11tyrocks/eleventy-plugin-emoji-readtime");
1415
const packageVersion = require("./package.json").version;
1516
const eleventySass = require("@11tyrocks/eleventy-plugin-sass-lightningcss");
@@ -118,6 +119,41 @@ module.exports = function (eleventyConfig) {
118119
markdownIt(mdOptions)
119120
.use(markdownItAnchor, mdAnchorOpts)
120121
.use(markdownItHighlightJS)
122+
.use(markdownItContainer, 'card', {
123+
render(tokens, idx) {
124+
return tokens[idx].nesting === 1
125+
? '<div class="card">\n'
126+
: '</div>\n';
127+
}
128+
})
129+
.use(markdownItContainer, 'section', {
130+
render(tokens, idx) {
131+
return tokens[idx].nesting === 1
132+
? '<section class="prose-section">\n'
133+
: '</section>\n';
134+
}
135+
})
136+
.use(markdownItContainer, 'cards', {
137+
render(tokens, idx) {
138+
return tokens[idx].nesting === 1
139+
? '<div class="cards-row">\n'
140+
: '</div>\n';
141+
}
142+
})
143+
.use(markdownItContainer, 'card-basic', {
144+
render(tokens, idx) {
145+
return tokens[idx].nesting === 1
146+
? '<div class="card-basic">\n'
147+
: '</div>\n';
148+
}
149+
})
150+
.use(markdownItContainer, 'card-shadow', {
151+
render(tokens, idx) {
152+
return tokens[idx].nesting === 1
153+
? '<div class="card-shadow">\n'
154+
: '</div>\n';
155+
}
156+
})
121157
);
122158

123159
// Plugins

CHANGELOG.md

Lines changed: 20 additions & 0 deletions

CLAUDE.md

Lines changed: 27 additions & 4 deletions

README.md

Lines changed: 54 additions & 0 deletions

docs/about/resume/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,13 @@
7575
<link rel="stylesheet" href="/css/print.css" media="print" />
7676
<link rel="stylesheet" href="/css/markdown.css" />
7777

78+
7879
<section class="hero">
7980
<h1>Adam Jolicoeur</h1>
8081
<p class="text-lead mb-4">Lead Product Designer with 15+ years at AWS, Red Hat, and high-growth B2B companies</p></section>
8182

8283

83-
<section>
84+
<content>
8485
<section class="hide-on-screen print">
8586
<h1>Adam Jolicoeur</h1>
8687
<caption>contact@adamjolicoeur.com</caption>
@@ -128,7 +129,7 @@ <h3>Also available</h3>
128129
<a href="https://www.github.com/AdamJ" class="btn btn-social" target="_blank" alt="Click to visit my GitHub profile"><i class="fa-brands fa-github"></i> GitHub</a>
129130
</section>
130131

131-
</section>
132+
</content>
132133

133134

134135
</main>

docs/apps/taskstat-privacy.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,13 @@
7575
<link rel="stylesheet" href="/css/print.css" media="print" />
7676
<link rel="stylesheet" href="/css/markdown.css" />
7777

78+
7879
<section class="hero">
7980
<h1>TaskStat Privacy Policy</h1>
8081
<p class="text-lead mb-4">Privacy policy for TaskStat - a privacy-first task management app for iOS</p></section>
8182

8283

83-
<section>
84+
<content>
8485
<section>
8586
<p><strong>Last Updated:</strong> January 5, 2026<br>
8687
<strong>Effective Date:</strong> January 5, 2026</p>
@@ -328,7 +329,7 @@ <h2 id="acknowledgment" tabindex="-1">Acknowledgment <a class="anchor-link" href
328329
<em>Simple tasks. Complete privacy.</em></p>
329330
</section>
330331

331-
</section>
332+
</content>
332333

333334

334335
</main>

docs/apps/taskstat.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,13 @@
7575
<link rel="stylesheet" href="/css/print.css" media="print" />
7676
<link rel="stylesheet" href="/css/markdown.css" />
7777

78+
7879
<section class="hero">
7980
<h1>TaskStat</h1>
8081
<p class="text-lead mb-4">Privacy-first task management for iOS. Your tasks stay on your device—no accounts, no tracking, no cloud sync.</p></section>
8182

8283

83-
<section>
84+
<content>
8485
<section>
8586
<h2 id="about-taskstat" tabindex="-1">About TaskStat <a class="anchor-link" href="#about-taskstat">#</a></h2>
8687
<p>TaskStat is a native iOS task management app built with privacy as a core principle. Unlike cloud-based task managers, TaskStat stores all your data locally on your device using SwiftData—ensuring complete privacy and offline functionality.</p>
@@ -176,7 +177,7 @@ <h2 id="technical-details" tabindex="-1">Technical Details <a class="anchor-link
176177
<div class="text-callout">TaskStat: Simple tasks. Complete privacy.</div>
177178
</section>
178179

179-
</section>
180+
</content>
180181

181182

182183
</main>
2.24 KB
882 Bytes
21.9 KB

0 commit comments

Comments
 (0)