Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c6e6087
feat: add Dan Conway ngit spotlight
dergigi Sep 11, 2026
ff36afd
fix: render homepage posts without a cover image
dergigi Sep 11, 2026
a081611
fix: fact-check corrections and copy edits for Dan Conway spotlight
auntydonna015 Sep 13, 2026
b3adc2a
fix: join the two-line grant-funding quote so its link renders
auntydonna015 Sep 13, 2026
1cb6069
fix: replace sidebar pull quotes; drop a parenthetical
auntydonna015 Sep 13, 2026
2249ad5
fix: swap two sidebar pull quotes
auntydonna015 Sep 13, 2026
53975a6
fix: link the Tornado Cash ruling to a plain-English write-up
auntydonna015 Sep 13, 2026
7fefa5a
fix: reword the GRASP/ngit v3 paragraph
auntydonna015 Sep 13, 2026
88bc3f3
fix: reword the GitHub-outage sentence and source it to press coverage
auntydonna015 Sep 13, 2026
e7fe049
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
37a298a
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
f670ceb
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
12ef40b
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
63945e9
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
4fc9cc3
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
e902371
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
3091aff
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
e7f23a3
Update data/blog/developer-spotlight-dan-conway-ngit.mdx
auntydonna015 Sep 14, 2026
753499b
Update the ngit mirror tutorial: final walkthrough, step images, GitW…
auntydonna015 Sep 17, 2026
8ba4cf9
Link the GitWorkshop screenshot to the repository, add "Ta-dah!" befo…
auntydonna015 Sep 17, 2026
4093903
Add a GitWorkshop.dev walkthrough video and tighten the intro's close
auntydonna015 Sep 18, 2026
35c65d9
Set Dan Conway spotlight publication date to September 18
dergigi Sep 18, 2026
d1eb3df
Add Dan Conway spotlight hero and social preview artwork
dergigi Sep 18, 2026
0e85bb4
Collapse the ngit mirror walkthrough by default
dergigi Sep 18, 2026
0f47882
Fix walkthrough disclosure layout on mobile
dergigi Sep 18, 2026
89c9aa5
Update spotlight tutorial closing invitation
dergigi Sep 18, 2026
6c08a29
Link tutorial contribution invitation to GitWorkshop repository
dergigi Sep 18, 2026
f376ecb
Add recurring donation invitation to Dan Conway spotlight
dergigi Sep 18, 2026
6a8326a
Brighten Dan Conway hero and incorporate his bokeh avatar
dergigi Sep 18, 2026
3fbeca6
Reword the question that closes the intro
auntydonna015 Sep 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 17 additions & 3 deletions components/post/PostCoverHero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,16 @@ interface Props {
title: string
date: string
coverImage?: string
overlay?: 'default' | 'light'
}

// Wide cover assets (~2.3:1) work best; subject on the right leaves room for text on the left.
export default function PostCoverHero({ title, date, coverImage }: Props) {
export default function PostCoverHero({
title,
date,
coverImage,
overlay = 'default',
}: Props) {
if (!coverImage) {
return <PostDefaultHeader date={date} title={title} />
}
Expand All @@ -36,11 +42,19 @@ export default function PostCoverHero({ title, date, coverImage }: Props) {
className="object-cover object-[72%_center] xl:object-[center_right]"
/>
<div
className="absolute inset-0 bg-gradient-to-b from-black/70 via-black/20 to-transparent xl:from-black/60 xl:via-transparent"
className={`absolute inset-0 bg-gradient-to-b to-transparent xl:from-black/60 xl:via-transparent ${
overlay === 'light'
? 'from-black/30 via-transparent'
: 'from-black/70 via-black/20'
}`}
aria-hidden
/>
<div
className="absolute inset-0 bg-gradient-to-t from-black/95 via-black/50 to-transparent xl:from-black/80 xl:via-black/30"
className={`absolute inset-0 bg-gradient-to-t to-transparent xl:from-black/80 xl:via-black/30 ${
overlay === 'light'
? 'from-black/95 via-black/10'
: 'from-black/95 via-black/50'
}`}
aria-hidden
/>
<div className="absolute inset-x-0 bottom-0 pb-6 xl:pb-8">
Expand Down
1 change: 1 addition & 0 deletions contentlayer.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export const Blog = defineDocumentType(() => ({
draft: { type: 'boolean' },
summary: { type: 'string' },
images: { type: 'list', of: { type: 'string' } },
heroOverlay: { type: 'enum', options: ['default', 'light'] },
authors: { type: 'list', of: { type: 'string' } },
layout: { type: 'string' },
bibliography: { type: 'string' },
Expand Down
425 changes: 425 additions & 0 deletions data/blog/developer-spotlight-dan-conway-ngit.mdx

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion layouts/SpotlightLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export default function SpotlightLayout({
prev,
children,
}: LayoutProps) {
const { path, date, title, images } = content
const { path, date, title, images, heroOverlay } = content

return (
<>
Expand All @@ -38,6 +38,7 @@ export default function SpotlightLayout({
title={title}
date={date}
coverImage={getSpotlightHeroImage(images)}
overlay={heroOverlay}
/>
<SectionContainer>
<article>
Expand Down
29 changes: 18 additions & 11 deletions pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -210,21 +210,28 @@ export default function Home({
{!posts.length && 'No posts found.'}
{posts.slice(0, MAX_DISPLAY).map((post) => {
const { slug, date, title, summary, tags, images } = post
const cover = images?.[0]
return (
<li key={slug} className="py-12">
<article>
<div className="space-y-4 xl:grid xl:grid-cols-3 xl:items-start xl:gap-x-4 xl:space-y-0">
<div>
<Link href={`/blog/${slug}`} className="block">
<Image
src={images[0]}
alt="blog post"
width={400}
height={300}
/>
</Link>
</div>
<div className="space-y-2 xl:col-span-2">
{cover && (
<div>
<Link href={`/blog/${slug}`} className="block">
<Image
src={cover}
alt="blog post"
width={400}
height={300}
/>
</Link>
</div>
)}
<div
className={`space-y-2 ${
cover ? 'xl:col-span-2' : 'xl:col-span-3'
}`}
>
<div className="space-y-4">
<h2 className="text-2xl font-bold leading-8 tracking-tight max-[375px]:text-xl">
<Link
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/static/videos/gitworkshop-tour-dark.mp4
Binary file not shown.
Binary file added public/static/videos/gitworkshop-tour-light.mp4
Binary file not shown.
Loading