Mirror of
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feature: credits + collaboration tag (#148)

authored by

Felix Schneider and committed by
GitHub
593d66d5 e0ba34c6

+722 -105
+6 -3
astro.config.mjs
··· 114 114 starlightImageZoom(), 115 115 starlightThemeRapide(), 116 116 starlightCoolerCredit({ 117 - credit: "Starlight Blog", 117 + credit: { 118 + title: "Credits", 119 + description: "View all credits of this blog →", 120 + href: "https://blog.trueberryless.org/credits", 121 + }, 118 122 }), 119 123 starlightBlog({ 120 124 title: "Deep Thoughts", ··· 144 148 url: "https://hideoo.dev", 145 149 }, 146 150 frostybee: { 147 - name: "Frostybee", 151 + name: "FrostyBee", 148 152 picture: "/frostybee.png", 149 153 url: "https://github.com/frostybee", 150 154 }, ··· 174 178 ], 175 179 components: { 176 180 MarkdownContent: "./src/components/MarkdownContent.astro", 177 - TableOfContents: "./src/components/TableOfContents.astro", 178 181 Hero: "./src/components/Hero.astro", 179 182 PageTitle: "./src/components/PageTitle.astro", 180 183 },
+1
package.json
··· 29 29 "@expressive-code/plugin-line-numbers": "^0.41.3", 30 30 "@fontsource-variable/atkinson-hyperlegible-next": "^5.2.6", 31 31 "@fontsource-variable/jetbrains-mono": "^5.2.8", 32 + "@lucide/astro": "^0.545.0", 32 33 "@lunariajs/core": "^0.1.1", 33 34 "@lunariajs/starlight": "^0.1.1", 34 35 "astro": "^5.14.1",
+12
pnpm-lock.yaml
··· 29 29 '@fontsource-variable/jetbrains-mono': 30 30 specifier: ^5.2.8 31 31 version: 5.2.8 32 + '@lucide/astro': 33 + specifier: ^0.545.0 34 + version: 0.545.0(astro@5.14.3(@types/node@24.7.1)(jiti@1.21.7)(rollup@4.52.4)(typescript@5.9.3)(yaml@2.8.1)) 32 35 '@lunariajs/core': 33 36 specifier: ^0.1.1 34 37 version: 0.1.1 ··· 542 545 543 546 '@kwsites/promise-deferred@1.1.1': 544 547 resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} 548 + 549 + '@lucide/astro@0.545.0': 550 + resolution: {integrity: sha512-uhBiJCVXH+YmZdiTncV3I8e2gA4iqA/YLCKyMfxl1pWLleyrJWrQY5Avmt1qKjtYEMah0uJiQzaYtaeekaCdCw==} 551 + peerDependencies: 552 + astro: ^4 || ^5 545 553 546 554 '@lunariajs/core@0.1.1': 547 555 resolution: {integrity: sha512-sAqM9+DVsLe3xHM9wu2pEnKGYMs/bWS9qpR+CGHol3RihOELnOQTzHddXbdB1MtgesbI8dnQuG64Ocd8KkWsng==} ··· 2938 2946 - supports-color 2939 2947 2940 2948 '@kwsites/promise-deferred@1.1.1': {} 2949 + 2950 + '@lucide/astro@0.545.0(astro@5.14.3(@types/node@24.7.1)(jiti@1.21.7)(rollup@4.52.4)(typescript@5.9.3)(yaml@2.8.1))': 2951 + dependencies: 2952 + astro: 5.14.3(@types/node@24.7.1)(jiti@1.21.7)(rollup@4.52.4)(typescript@5.9.3)(yaml@2.8.1) 2941 2953 2942 2954 '@lunariajs/core@0.1.1': 2943 2955 dependencies:
public/blog/authors/artificial-intelligence.jpg

This is a binary file and will not be displayed.

public/blog/tags/collaboration.jpg

This is a binary file and will not be displayed.

+227
src/components/ImageCredit.astro
··· 1 + --- 2 + import type { ImageMetadata } from "astro"; 3 + import { Image } from "astro:assets"; 4 + import { User, ExternalLink, FileText } from "@lucide/astro"; 5 + 6 + interface Props { 7 + image: string; 8 + title?: string; 9 + author: string; 10 + authorUrl?: string; 11 + source?: string; 12 + sourceUrl?: string; 13 + usedOn?: string; 14 + usedOnUrl?: string; 15 + alt?: string; 16 + } 17 + 18 + const { 19 + image, 20 + title, 21 + author, 22 + authorUrl, 23 + source = "Unsplash", 24 + sourceUrl, 25 + usedOn, 26 + usedOnUrl, 27 + alt = `Photo by ${author}`, 28 + } = Astro.props; 29 + 30 + const images = import.meta.glob<{ default: ImageMetadata }>( 31 + "/public/**/*.{jpeg,jpg,png,gif}" 32 + ); 33 + if (!images[image]) 34 + throw new Error( 35 + `"${image}" does not exist in glob: "public/**/*.{jpeg,jpg,png,gif}"` 36 + ); 37 + --- 38 + 39 + <article class="image-credit-card"> 40 + <div class="image-preview"> 41 + <Image 42 + src={images[image]()} 43 + alt={alt} 44 + loading="lazy" 45 + width={1400} 46 + height={800} 47 + /> 48 + </div> 49 + 50 + <div class="credit-info"> 51 + {title && <div class="title">{title}</div>} 52 + 53 + <div class="metadata"> 54 + <div class="metadata-item"> 55 + <User class="icon" size={14} /> 56 + { 57 + authorUrl ? ( 58 + <a href={authorUrl} target="_blank" rel="noopener noreferrer"> 59 + {author} 60 + </a> 61 + ) : ( 62 + <span>{author}</span> 63 + ) 64 + } 65 + </div> 66 + 67 + <span class="separator">•</span> 68 + 69 + <div class="metadata-item"> 70 + <ExternalLink class="icon" size={14} /> 71 + { 72 + sourceUrl ? ( 73 + <a href={sourceUrl} target="_blank" rel="noopener noreferrer"> 74 + {source} 75 + </a> 76 + ) : ( 77 + <span>{source}</span> 78 + ) 79 + } 80 + </div> 81 + 82 + { 83 + usedOn && ( 84 + <> 85 + <span class="separator">•</span> 86 + <div class="metadata-item"> 87 + <FileText class="icon" size={14} /> 88 + {usedOnUrl ? ( 89 + <a href={usedOnUrl}>{usedOn}</a> 90 + ) : ( 91 + <span>{usedOn}</span> 92 + )} 93 + </div> 94 + </> 95 + ) 96 + } 97 + </div> 98 + </div> 99 + </article> 100 + 101 + <style> 102 + .image-credit-card { 103 + display: flex; 104 + flex-direction: column; 105 + gap: 1.25rem; 106 + padding: 1rem; 107 + background: var(--sl-rapide-ui-bg-color); 108 + border: 1px solid var(--sl-rapide-ui-border-color); 109 + border-radius: 0.5rem; 110 + transition: 111 + border-color 0.3s ease, 112 + transform 0.2s ease; 113 + } 114 + 115 + .image-credit-card:hover { 116 + border-color: var(--sl-color-accent); 117 + transform: translateY(-2px); 118 + } 119 + 120 + @media (min-width: 568px) { 121 + .image-credit-card { 122 + flex-direction: row; 123 + min-height: 120px; 124 + } 125 + } 126 + 127 + .image-preview { 128 + width: 100%; 129 + height: auto; 130 + border-radius: 0.375rem; 131 + overflow: hidden; 132 + background: var(--sl-color-gray-6); 133 + } 134 + 135 + @media (min-width: 568px) { 136 + .image-preview { 137 + flex-shrink: 0; 138 + width: 150px; 139 + height: 86px; 140 + } 141 + } 142 + 143 + .image-preview img { 144 + width: 100%; 145 + height: 100%; 146 + object-fit: cover; 147 + display: block; 148 + } 149 + 150 + .credit-info { 151 + display: flex; 152 + flex-direction: column; 153 + justify-content: center; 154 + gap: 0.5rem; 155 + flex: 1; 156 + min-width: 0; 157 + } 158 + 159 + .title { 160 + font-size: 1.05rem; 161 + font-weight: 500; 162 + line-height: 1.1; 163 + color: var(--sl-color-white); 164 + margin: 0; 165 + } 166 + 167 + @media (min-width: 868px) { 168 + .title { 169 + font-size: 1.25rem; 170 + font-weight: 600; 171 + line-height: 1.3; 172 + } 173 + } 174 + 175 + .metadata { 176 + display: flex; 177 + align-items: center; 178 + flex-wrap: wrap; 179 + column-gap: 0.75rem; 180 + font-size: 0.875rem; 181 + color: var(--sl-color-gray-3); 182 + } 183 + 184 + .metadata-item { 185 + display: flex; 186 + align-items: center; 187 + gap: 0.375rem; 188 + color: var(--sl-color-gray-3); 189 + } 190 + 191 + .metadata-item :global(.icon) { 192 + flex-shrink: 0; 193 + color: var(--sl-color-gray-3); 194 + transition: color 0.2s ease; 195 + } 196 + 197 + .metadata-item a { 198 + color: var(--sl-color-gray-3); 199 + text-decoration: none; 200 + transition: color 0.2s ease; 201 + } 202 + 203 + .metadata-item:has(a:hover) :global(.icon), 204 + .metadata-item a:hover { 205 + color: var(--sl-color-accent-high); 206 + } 207 + 208 + .separator { 209 + color: var(--sl-color-gray-4); 210 + user-select: none; 211 + } 212 + 213 + @media (max-width: 567px) { 214 + .image-credit-card { 215 + gap: 1rem; 216 + } 217 + 218 + .title { 219 + font-size: 1.1rem; 220 + } 221 + 222 + .metadata { 223 + font-size: 0.8125rem; 224 + gap: 0.5rem; 225 + } 226 + } 227 + </style>
+21
src/components/ImageCreditsSection.astro
··· 1 + --- 2 + interface Props { 3 + class?: string; 4 + } 5 + 6 + const { class: className } = Astro.props; 7 + --- 8 + 9 + <div class:list={["image-credits-section not-content", className]}> 10 + <slot /> 11 + </div> 12 + 13 + <style> 14 + .image-credits-section { 15 + display: grid; 16 + grid-template-columns: 1fr; 17 + gap: 1.5rem; 18 + width: 100%; 19 + max-width: 100%; 20 + } 21 + </style>
+1 -1
src/components/IndexPostList.astro
··· 98 98 .year-label { 99 99 font-size: 16rem; 100 100 top: -14rem; 101 - left: 0; 101 + left: -0.5rem; 102 102 color: var(--sl-color-gray-7); 103 103 font-weight: bold; 104 104 position: absolute;
-4
src/content/docs/blog/20th-birthday.mdx
··· 133 133 ## Conclusion 134 134 135 135 It was a joy to turn this celebration into a personal challenge and to see friends and family try to solve the riddle. Whether you spotted five 20s or all seventy-three - thank you for playing along! 🎉 136 - 137 - ## Credits 138 - 139 - Cover image creator: https://unsplash.com/@bilal_ayadi
-5
src/content/docs/blog/accelerating-translations-with-continuous-integration.mdx
··· 32 32 Fast-forward three days and I am now an official contributor to the project, making it greater and greater almost daily, mainly focusing on docs and the support for my heart project: Starlight - as you might already have guessed from [my blogs](/blog/tags/starlight/). 33 33 34 34 Peli and I have our virtual productivity sessions between 4pm and 8pm UTC, extending longer on weekends. So if you want to join us as an early bird of the project or got interested in using it, feel free to check it out on [GitHub](https://github.com/github): https://github.com/pelikhan/action-continuous-translation 35 - 36 - 37 - ## Credits 38 - 39 - Cover image creator: https://unsplash.com/@towfiqu999999
-4
src/content/docs/blog/cognitive-erosion.mdx
··· 104 104 - [The most powerful ways to "hack" our new Dia browser (YouTube.com)](https://www.youtube.com/watch?v=JCZUIm4S9QQ) 105 105 106 106 Happy reading! 107 - 108 - ## Credits 109 - 110 - Cover image creator: https://neurolaunch.com
+1 -4
src/content/docs/blog/diploma-thesis.mdx
··· 5 5 excerpt: For our diploma thesis with Siemens AG, we built a service-oriented solution to detect power grid anomalies — featuring a Kafka pipeline, PostgreSQL, GraphQL API, and an Angular dashboard with tables and an interactive graph for real-time visualisation. 6 6 tags: 7 7 - Tool 8 + - Collaboration 8 9 authors: 9 10 - trueberryless 10 11 - clemens ··· 38 39 Our final product not only met Siemens' requirements but also demonstrated the power of a well-designed service-oriented architecture (SOA) in solving complex, real-world problems. It was immensely rewarding to see our software functioning reliably and providing actionable insights to tackle power grid anomalies. 39 40 40 41 For more details about our work, feel free to explore our thesis [here](https://trueberryless.org/thesis.pdf) 📜 or read our video course [here](https://videos.trueberryless.org/videos/thesis/) 🎥 (both only available in German). 41 - 42 - ## Credits 43 - 44 - Cover image creator: https://animalia-life.club/qa/pictures/high-resolution-nasa-earth-at-night-from-space
-4
src/content/docs/blog/earworms.mdx
··· 28 28 The exact reason for that is completely unknown to me, but if I had to guess, I would say that the rhythms of the completed song (the penultimate one) are still ringing somewhere in your mind since the song itself was maybe one of those "I-just-fade-out-my-volume-to-end-me"-songs, which is not my favourite type of ending to music, but it encourages the brain to go on. 29 29 30 30 At least that's what I think. I would be very interested if you have experienced similar patterns, so feel free to write your own blog post about it or just share this one with friends so you can discuss it with them! 31 - 32 - ## Credits 33 - 34 - Cover image creator: https://unsplash.com/@unclearvision
+1 -4
src/content/docs/blog/featuring/star-days.mdx
··· 5 5 excerpt: A star day is a day declared one day in advance to only one cause. In a star day, everything besides daily habits, self care, and the most urgent of matters becomes noise. There only exists the topic of the day to engage with, or silence! 6 6 tags: 7 7 - Mindspace 8 + - Collaboration 8 9 authors: 9 10 - lan 10 11 cover: ··· 59 60 Another motivation is that by declaring an entire day for one cause, we have more incentive to put in all the effort necessary and face hardships that require high mental preparation and perseverance. This is harder to do when you're trying to squeeze them into a 2 hour slot window. This also allows momentum to build quicker since we can absorb the problem domain more deeply than if we had no clear purpose for day. 60 61 61 62 The star topic doesn't have to be work-related only. It could be for a hobby you've always wanted to start, or social activities with friends! 62 - 63 - ## Credits 64 - 65 - Cover image creator: https://unsplash.com/@xusanfeng
-4
src/content/docs/blog/github-profile-readme.mdx
··· 31 31 The final implementation consists of a refined and visually striking GitHub profile README that integrates dynamic content updates while maintaining an elegant structure. It presents information clearly without unnecessary clutter and is entirely automated, updating itself every five minutes without manual intervention. The project involved significant research and experimentation with SVGs, GitHub Actions, and Markdown limitations. The process required persistence and problem-solving to work within the constraints of the platform while achieving a technically impressive result. The outcome is a GitHub profile README that effectively balances design, automation, and functionality within the limitations of the platform. 32 32 33 33 If you're now inspired to create a stunning GitHub profile README yourself, read my [more technical and amusing blog post](/blog/technically-impressive-github-profile-readme/) or directly check out my repository [github.com/trueberryless/trueberryless](https://github.com/trueberryless/trueberryless/tree/7519c6f50094bdfd6fb47f610e6638ac8efdd6ad). And if you find my work helpful, consider giving it a ⭐ and following me on GitHub at [trueberryless](https://github.com/trueberryless)! 🚀 34 - 35 - ## Credits 36 - 37 - Cover image creator: https://unsplash.com/@yancymin
-4
src/content/docs/blog/mutanuq.mdx
··· 31 31 Thanks to Starlight, managing and expanding Mutanuq became effortless, and the project grew into something I’m proud to maintain even today. What started as *Schneider IT*—a small idea to organize my notes—blossomed into *Mutanuq*, a platform that simplifies learning for others while preserving valuable knowledge for my future self. 32 32 33 33 You can take a look at Mutanuq under this domain: https://mutanuq.trueberryless.org 34 - 35 - ## Credits 36 - 37 - Cover image creator: https://unsplash.com/@miracleday
-4
src/content/docs/blog/rehype-github-badge-links.mdx
··· 144 144 ``` 145 145 146 146 </details> 147 - 148 - ## Credits 149 - 150 - Cover image creator: https://unsplash.com/@luarte_raw
+1 -5
src/content/docs/blog/setup-argocd-for-kubernetes.mdx
··· 9 9 - Education 10 10 excerpt: Continuing to improve our k3s cluster and especially the CI/CD workflow, we now take a look at the GitOps tool called <a class="gh-badge" href="https://github.com/argoproj"><img src="https://github.com/argoproj.png" alt="Argo CD" />Argo CD</a>, and how we can integrate it into our cluster. Our tech stack for deployment uses these services&#58; k3s, Helm, Cilium & after this tutorial Argo CD as well 11 11 authors: 12 - - trueberryless 12 + - trueberryless 13 13 cover: 14 14 alt: A massive container ship with stacked cargo containers sailing across the ocean under a clear blue sky. 15 15 image: ../../../../public/blog/setup-argocd-for-kubernetes.jpg ··· 297 297 ## Continuation 298 298 299 299 Be continued for our [next blog](/blog/setup-continuous-integration-github-repository) which will describe how to set up a [GitHub](https://github.com/github) repository which can then be deployed via Argo CD. 300 - 301 - ## Credits 302 - 303 - Cover image creator: https://unsplash.com/@carrier_lost
+1 -5
src/content/docs/blog/setup-continuous-integration-github-repository.mdx
··· 9 9 - Education 10 10 excerpt: Today we'll take a look at how to set up a <a class="gh-badge" href="https://github.com/github"><img src="https://github.com/github.png" alt="github" />GitHub</a> repository which will be deployed to a k3s cluster via Argo CD. In summary, the article will include Workflow files, Dockerfile, manifests (deployment) and <a class="gh-badge" href="https://github.com/docker"><img src="https://github.com/docker.png" alt="Docker Hub" />Docker Hub</a> repositories. Please check out [our Argo CD blog](./setup-argocd-for-kubernetes) because this will be a continuation of the other post. 11 11 authors: 12 - - trueberryless 12 + - trueberryless 13 13 cover: 14 14 alt: A person balances on a large pipe, with a view of the landscape in the background. 15 15 image: ../../../../public/blog/setup-continuous-integration-github-repository.jpg ··· 276 276 ## Celebrate with a Coffee! 277 277 278 278 Congratulations, you've successfully set up Argo CD with k3s and [Cilium](https://github.com/cilium)! You deserve a coffee break. Enjoy a well-earned cup, and if you'd like to share a virtual coffee with me, feel free to support my work on [Ko-fi](https://ko-fi.com/trueberryless). Thank you! 279 - 280 - ## Credits 281 - 282 - Cover image creator: https://unsplash.com/@frostroomhead
+3 -6
src/content/docs/blog/setup-kubernetes-with-cilium-and-cloudflare.mdx
··· 6 6 tags: 7 7 - Deployment Series 8 8 - Education 9 + - Collaboration 9 10 excerpt: This blog posts describes the process of setting up a <a class="gh-badge" href="https://github.com/kubernetes"><img src="https://github.com/kubernetes.png" alt="Kubernetes" />Kubernetes</a> cluster with <a class="gh-badge" href="https://github.com/k3s-io"><img src="https://github.com/k3s-io.png" alt="k3s" />k3s</a> and <a class="gh-badge" href="https://github.com/cilium"><img src="https://github.com/cilium.png" alt="Cilium" />Cilium</a>. We use <a class="gh-badge" href="https://github.com/helm"><img src="https://github.com/helm.png" alt="Helm" />Helm</a> as the package manager and <a class="gh-badge" href="https://github.com/cloudflare"><img src="https://github.com/cloudflare.png" alt="Cloudflare" />Cloudflare</a> as the certificate issuer. We used the tips and tricks from Vegard S. Hagen from [his article](https://blog.stonegarden.dev/articles/2024/02/bootstrapping-k3s-with-cilium/). Essentially, this blog explains, how all the trueberryless.org websites are deployed (not any more). 10 11 authors: 11 - - trueberryless 12 - - clemens 12 + - trueberryless 13 + - clemens 13 14 cover: 14 15 alt: A cube in 3D with a yellow and green sticker applied to its surface, showcasing a geometric design. 15 16 image: ../../../../public/blog/setup-kubernetes-with-cilium-and-cloudflare.jpg ··· 782 783 ``` 783 784 784 785 Hopefully, you're now good to go! 785 - 786 - ## Credits 787 - 788 - Cover image creator: https://unsplash.com/@growtika
-4
src/content/docs/blog/starlight-autogenerate-whole-sidebar.mdx
··· 152 152 However, if you want to automate the whole generation without having to specify labels and orders manually for each directory, coding the solution yourself (with some guidelines in this blog) is the preferred and recommended solution. 153 153 154 154 If you want to check out the code presented in this blog, feel free to visit the [StackBlitz](https://stackblitz.com/github/trueberryless/starlight-autogenerate-whole-sidebar?file=src%2Fcontent.config.ts) or the source code in the [GitHub repo](https://github.com/trueberryless/starlight-autogenerate-whole-sidebar). 155 - 156 - ## Credits 157 - 158 - Cover image creator: https://unsplash.com/@viktortalashuk
-4
src/content/docs/blog/starlight-cooler-credit.mdx
··· 24 24 What started as a simple idea turned into something I’m really proud of: **Starlight Cooler Credit** . It’s more than just a plugin—it’s a way to give credit with style, customization, and a touch of global teamwork. 25 25 26 26 If you’re curious, you can check it out at [starlight-cooler-credit.trueberryless.org](https://starlight-cooler-credit.trueberryless.org/) . Give it a try—I think you’ll love it as much as I do! 27 - 28 - ## Credits 29 - 30 - Cover image creator: https://unsplash.com/@markuswinkler
+1 -4
src/content/docs/blog/starlight-dropdown-and-list-together.mdx
··· 7 7 - Plugins 8 8 - CSS 9 9 - Education 10 + - Collaboration 10 11 excerpt: Combine two <a class="gh-badge" href="https://github.com/withastro/starlight"><img src="/starlight.png" alt="Starlight" />Starlight</a> Sidebar Topics plugins to show a list of topics on desktop and a dropdown menu in the mobile sidebar. 11 12 authors: 12 13 - hideoo ··· 116 117 You could also do it the other way around (list on mobile, dropdown on desktop) by swapping the `display: block` and `display: none` properties in the CSS. 117 118 118 119 Moreover, you could also create your own display component, which uses the route data from the Starlight Sidebar Topics plugin and renders the topics in a custom way. This is a bit more advanced, but you can find more information about this in the ["Custom Topics List" documentation](https://starlight-sidebar-topics.trueberryless.org/docs/guides/custom-topic-list/). 119 - 120 - ## Credits 121 - 122 - Cover image creator: https://unsplash.com/@nahakiole
+1 -4
src/content/docs/blog/starlight-progress-indicator.mdx
··· 6 6 - Starlight 7 7 - CSS 8 8 - Education 9 + - Collaboration 9 10 excerpt: Learn how to create a horizontal progress indicator for your <a class="gh-badge" href="https://github.com/withastro/starlight"><img src="/starlight.png" alt="Starlight" />Starlight</a> site. 10 11 authors: 11 12 - frostybee ··· 125 126 With this setup, the progress indicator will be displayed on every page (except landing pages) of your Starlight site. 🥳 126 127 127 128 You can also check out [FrostyBee's](https://github.com/frostybee) [Starlight Scroll To Top plugin](https://github.com/frostybee/starlight-scroll-to-top) which also supports a built in [Progress Ring](https://frostybee.github.io/starlight-scroll-to-top/configuration/#showprogressring) since version `0.3.1`. 🙌 128 - 129 - ## Credits 130 - 131 - Cover image creator: https://unsplash.com/@muriel_1
-4
src/content/docs/blog/starlight-sidebar-whitespace.mdx
··· 147 147 [starlight-css-cascade-layers]: https://starlight.astro.build/guides/css-and-tailwind/#cascade-layers 148 148 [starlight-0-34]: https://github.com/withastro/starlight/releases/tag/%40astrojs%2Fstarlight%400.34.0 149 149 [imho]: https://en.wiktionary.org/wiki/IMHO 150 - 151 - ## Credits 152 - 153 - Cover image creator: https://unsplash.com/@steve_j
-4
src/content/docs/blog/starlight-topics-history-story.mdx
··· 41 41 Profound. Timeless. Golden. 42 42 43 43 And that single, beautiful spark of an idea? It’s precisely what I’ll guide you through in [the post "Starlight Topics Dropdown and List together"](/blog/starlight-dropdown-and-list-together/). 44 - 45 - ## Credits 46 - 47 - Cover image creator: https://unsplash.com/@nakkeeran_raveendran
-4
src/content/docs/blog/technically-impressive-github-profile-readme.mdx
··· 156 156 Would I recommend it? Only if you have way too much patience. 😅 157 157 158 158 But in the end, I created a [GitHub](https://github.com/github) profile README that *shouldn't exist* — but it does. And I love it. 159 - 160 - ## Credits 161 - 162 - Cover image creator: https://unsplash.com/@eduardoflorespe
-4
src/content/docs/blog/terraform-variables-resolution.mdx
··· 173 173 Here you can see the example from [the Terraform explanation](#what-is-terraform), showing how this extension visually adds the values of the variables in VS Code: 174 174 175 175 ![Terraform Variables Resolution Example](../../../assets/blog/terraform-variables-resolution/example.png) 176 - 177 - ## Credits 178 - 179 - Cover image creator: https://unsplash.com/@pablocontreras
-4
src/content/docs/blog/true-tracker.mdx
··· 28 28 True Tracker became my first-ever Next.js project—a simple but unique app for tracking time with no strings attached. It's live now at [https://true-tracker.trueberryless.org](https://true-tracker.trueberryless.org/). 29 29 30 30 The journey taught me more than just how to use Next.js. It taught me about pushing past challenges, transitioning between frameworks, and embracing the quirks that make each project unique. True Tracker isn't just an app; it's a milestone—a little piece of proof that even small ideas can have a big impact. 31 - 32 - ## Credits 33 - 34 - Cover image creator: https://unsplash.com/@mboulden
-4
src/content/docs/blog/username.mdx
··· 34 34 Now, you might be thinking, _Three days for that? Really?_ 35 35 36 36 And to that, I say: _Yes_. Greatness takes time. Besides, who needs true berries when you can be berryless? 37 - 38 - ## Credits 39 - 40 - Cover image creator: https://www.freepik.com
-4
src/content/docs/blog/writing-blogs-is-hard-and-easy.mdx
··· 59 59 - Blogs have easy and hard sides: This is what the title says, but know that when I wrote all that I realised that I haven't answered that question at all... Thank god, that Jacob didn't type a question mark at the end of that suggestion. 🙏 60 60 61 61 Yeah, I guess that's it. If you want to share you thoughts, leave them in [Lou's comments](https://lou.gg/blog/why-writing-blogs-isnt-hard) because I have none. 62 - 63 - ## Credits 64 - 65 - Cover image creator: https://unsplash.com/@dlxmedia
+435
src/content/docs/credits.mdx
··· 1 + --- 2 + title: 🌟 Heartfelt Thanks & Credits 3 + description: Overview of all the awesome people who make this blog possible. 4 + template: splash 5 + lastUpdated: true 6 + editUrl: true 7 + pagefind: true 8 + badgeLinks: false 9 + --- 10 + 11 + Creating this blog has been an incredible journey — one that simply wouldn’t have been possible without the creativity, dedication, and open hearts of so many amazing people and projects across the open-source community. 12 + This page is dedicated to everyone who helped make this corner of the internet a reality, whether through code, design, feedback, or inspiration. 💖 13 + 14 + ## ✨ Special Gratitude to Starlight Blog 15 + 16 + A very special thank you goes to **[HiDeoo](https://hideoo.dev)**, the brilliant mind behind **[Starlight Blog](https://starlight-blog-docs.vercel.app/)** — a plugin that transforms the process of building a blog into one of the most seamless and delightful experiences imaginable. 17 + Your work embodies the spirit of accessibility and joy that open source is all about. 18 + 19 + ## 🌠 Shoutout to Starlight & Its Contributors 20 + 21 + Endless gratitude to the entire **[Starlight](https://starlight.astro.build/)** team and all its [contributors](https://github.com/withastro/starlight/graphs/contributors) for crafting such a thoughtful, extensible, and inspiring documentation framework. 22 + Starlight makes it not only possible, but *fun*, to build something beautiful, structured, and personal. 23 + 24 + ## 🤝 Collaborations & Shared Voices 25 + 26 + One of the most beautiful parts of this blog’s journey has been the chance to **create, think, and write together** with others. 27 + Some posts here were born from deep conversations, shared curiosity, and collective effort — each collaboration adding new perspective, depth, and heart. 28 + 29 + A huge thank you to everyone who co-wrote, inspired, edited, or shared their words on this platform. 30 + Your voices make this space richer, warmer, and infinitely more human. 💬💞 31 + 32 + **Collaborators & Co-Authors** 33 + 34 + - [Clemens Schlipfinger](https://clemens.steinanet.at) 35 + - [FrostyBee](https://github.com/frostybee) 36 + - [HiDeoo](https://hideoo.dev) 37 + - [Lan](https://github.com/LanHikari22) 38 + - [Louis Escher](https://lou.gg) 39 + 40 + _If you’ve written, inspired, or shaped even a small part of this blog — you’re part of this list too._ ✨ 41 + 42 + ## 🧡 A Typeface That Speaks Clearly 43 + 44 + This blog uses **[Atkinson Hyperlegible Next](https://brailleinstitute.org/freefont)** — a typeface designed by the **Braille Institute** to maximize legibility and inclusivity for readers of all kinds. 45 + Its thoughtful design combines accessibility and beauty, perfectly aligning with the open, welcoming spirit of this site. 46 + 47 + ## 🔌 Honorable Mentions — Plugins & Integrations 48 + 49 + This site wouldn’t shine the same way without these fantastic tools and integrations that power it behind the scenes: 50 + 51 + - [`@lunariajs/starlight`](https://github.com/lunariajs/starlight) – Localization sync that just *works* 52 + - [`starlight-giscus`](https://github.com/dragomano/starlight-giscus) – Smooth Giscus comment integration 53 + - [`starlight-image-zoom`](https://github.com/HiDeoo/starlight-image-zoom) – For that crisp, zoomable image experience 54 + - [`starlight-links-validator`](https://github.com/HiDeoo/starlight-links-validator) – Keeps all links neat and valid 55 + - [`starlight-theme-rapide`](https://github.com/HiDeoo/starlight-theme-rapide) – A fast and stylish theme that enhances the feel 56 + 57 + ## 🖼️ Image Credits 58 + 59 + A huge thank you to all the talented photographers and artists whose visuals bring warmth and depth to this blog. 60 + Most images are sourced from **[Unsplash](https://unsplash.com)** and other freely shared creative platforms — each listed below with full credit and appreciation. 🌍💫 61 + 62 + import ImageCreditsSection from '../../components/ImageCreditsSection.astro'; 63 + import ImageCredit from '../../components/ImageCredit.astro'; 64 + 65 + <ImageCreditsSection> 66 + <ImageCredit 67 + image="/public/blog/authors/artificial-intelligence.jpg" 68 + title="A Brain Displayed with Glowing Blue Lines" 69 + author="Shubham Dhage" 70 + authorUrl="https://unsplash.com/@theshubhamdhage" 71 + sourceUrl="https://unsplash.com/photos/a-brain-displayed-with-glowing-blue-lines-2sz-3NrmZYU" 72 + usedOn="Author: Artificial Intelligence (OG Image)" 73 + usedOnUrl="/blog/authors/artificial-intelligence" 74 + /> 75 + <ImageCredit 76 + image="/public/blog/mutanuq.jpg" 77 + title="A Bulletin Board with a Back to School Sign on It" 78 + author="Elena Mozhvilo" 79 + authorUrl="https://unsplash.com/@miracleday" 80 + sourceUrl="https://unsplash.com/photos/a-bulletin-board-with-a-back-to-school-sign-on-it-1nz2RyutBEE" 81 + usedOn="Organising School Life: The Journey Behind Mutanuq" 82 + usedOnUrl="/blog/mutanuq" 83 + /> 84 + <ImageCredit 85 + image="/public/blog/starlight-progress-indicator.jpg" 86 + title="A Close up of a Black Surface with Yellow Balls" 87 + author="Muriel Liu" 88 + authorUrl="https://unsplash.com/@muriel_1" 89 + sourceUrl="https://unsplash.com/photos/a-close-up-of-a-black-surface-with-yellow-balls-CFPWZHBHLRk" 90 + usedOn="How to create a horizontal progress indicator for your Starlight site" 91 + usedOnUrl="/blog/starlight-progress-indicator" 92 + /> 93 + <ImageCredit 94 + image="/public/blog/github-profile-readme.jpg" 95 + title="A Close up of a Text Description on a Computer Screen" 96 + author="Yancy Min" 97 + authorUrl="https://unsplash.com/@yancymin" 98 + sourceUrl="https://unsplash.com/photos/a-close-up-of-a-text-description-on-a-computer-screen-842ofHC6MaI" 99 + usedOn="Designing a Profile That Works Within GitHub's Rules" 100 + usedOnUrl="/blog/github-profile-readme" 101 + /> 102 + <ImageCredit 103 + image="/public/blog/tags/tool.jpg" 104 + title="A Group of Hammers and a Hammer on a Wooden Surface" 105 + author="Rob Laughter" 106 + authorUrl="https://unsplash.com/@roblaughter" 107 + sourceUrl="https://unsplash.com/photos/a-group-of-hammers-and-a-hammer-on-a-wooden-surface-Okg5ne7l-Vg" 108 + usedOn="Tag: Tool (OG Image)" 109 + usedOnUrl="/blog/tags/tool" 110 + /> 111 + <ImageCredit 112 + image="/public/blog/tags/automation.jpg" 113 + title="A Large Machine in a Large Building" 114 + author="Homa Appliances" 115 + authorUrl="https://unsplash.com/@homaappliances" 116 + sourceUrl="https://unsplash.com/photos/a-large-machine-in-a-large-building-pWUyHVJgLhg" 117 + usedOn="Tag: Automation (OG Image)" 118 + usedOnUrl="/blog/tags/automation" 119 + /> 120 + <ImageCredit 121 + image="/public/blog/starlight-topics-history-story.jpg" 122 + title="A Long Line of Pillars in a Building" 123 + author="Nakkeeran Raveendran" 124 + authorUrl="https://unsplash.com/@nakkeeran_raveendran" 125 + sourceUrl="https://unsplash.com/photos/a-long-line-of-pillars-in-a-building-dxgIrClfpOc" 126 + usedOn="A short history of Starlight Sidebar Topics plugins" 127 + usedOnUrl="/blog/starlight-topics-history-story" 128 + /> 129 + <ImageCredit 130 + image="/public/blog/writing-blogs-is-hard-and-easy.jpg" 131 + title="A Pen and a Cup of Coffee" 132 + author="dlxmedia.hu" 133 + authorUrl="https://unsplash.com/@dlxmedia" 134 + sourceUrl="https://unsplash.com/photos/a-pen-and-a-cup-of-coffee-CF5I-rfrJ4s" 135 + usedOn="Some aspects of creating a blog are really easy, and some are extremely difficult!" 136 + usedOnUrl="/blog/writing-blogs-is-hard-and-easy" 137 + /> 138 + <ImageCredit 139 + image="/public/blog/tags/collaboration.jpg" 140 + title="A Person Holding a Pair of Nails" 141 + author="Vardan Papikyan" 142 + authorUrl="https://unsplash.com/@varpap" 143 + sourceUrl="https://unsplash.com/photos/a-person-holding-a-pair-of-nails-A2QhHQMZD0Y" 144 + usedOn="Tag: Collaboration (OG Image)" 145 + usedOnUrl="/blog/tags/collaboration" 146 + /> 147 + <ImageCredit 148 + image="/public/blog/accelerating-translations-with-continuous-integration.jpg" 149 + title="A Pile of Plastic Letters and Numbers on a Pink and Blue Background" 150 + author="Towfiqu barbhuiya" 151 + authorUrl="https://unsplash.com/@towfiqu999999" 152 + sourceUrl="https://unsplash.com/photos/a-pile-of-plastic-letters-and-numbers-on-a-pink-and-blue-background-5u6bz2tYhX8" 153 + usedOn="Accelerating translations with continuous integration" 154 + usedOnUrl="/blog/accelerating-translations-with-continuous-integration" 155 + /> 156 + <ImageCredit 157 + image="/public/blog/tags/deployment.jpg" 158 + title="A Plane Flying Through a Cloudy Blue Sky" 159 + author="Roman Petrov" 160 + authorUrl="https://unsplash.com/@roap_oneee" 161 + sourceUrl="https://unsplash.com/photos/a-plane-flying-through-a-cloudy-blue-sky-cz0EanY68n8" 162 + usedOn="Tag: Deployment (OG Image)" 163 + usedOnUrl="/blog/tags/deployment" 164 + /> 165 + <ImageCredit 166 + image="/public/blog/true-tracker.jpg" 167 + title="A Pocket Watch Sitting on Top of a Book" 168 + author="Meg Boulden" 169 + authorUrl="https://unsplash.com/@mboulden" 170 + sourceUrl="https://unsplash.com/photos/a-pocket-watch-sitting-on-top-of-a-book-eLqWJqJzJDg" 171 + usedOn="Designing a No-Account, No-Database Approach to Time Tracking" 172 + usedOnUrl="/blog/true-tracker" 173 + /> 174 + <ImageCredit 175 + image="/public/blog/tags/components.jpg" 176 + title="A Small Island in the Middle of a Body of Water" 177 + author="Nicholas Bullett" 178 + authorUrl="https://unsplash.com/@munkstt" 179 + sourceUrl="https://unsplash.com/photos/a-small-island-in-the-middle-of-a-body-of-water-oJlzkhHTT-A" 180 + usedOn="Tag: Components (OG Image)" 181 + usedOnUrl="/blog/tags/components" 182 + /> 183 + <ImageCredit 184 + image="/public/blog/earworms.jpg" 185 + title="A Sound Wave Is Shown in the Middle of a Pink Background" 186 + author="Yassine Ait Tahit" 187 + authorUrl="https://unsplash.com/@unclearvision" 188 + sourceUrl="https://unsplash.com/photos/a-sound-wave-is-shown-in-the-middle-of-a-pink-background-uBqd-tGQI8o" 189 + usedOn="Earworms and the message hidden within the pattern" 190 + usedOnUrl="/blog/earworms" 191 + /> 192 + <ImageCredit 193 + image="/public/blog/tags/github.jpg" 194 + title="A White Dice with a Black Github Logo on It" 195 + author="Rubaitul Azad" 196 + authorUrl="https://unsplash.com/@rubaitulazad" 197 + sourceUrl="https://unsplash.com/photos/a-white-dice-with-a-black-github-logo-on-it-HLQDfaJUTVI" 198 + usedOn="Tag: GitHub (OG Image)" 199 + usedOnUrl="/blog/tags/github" 200 + /> 201 + <ImageCredit 202 + image="/public/blog/authors/felix-schneider.jpg" 203 + title="A White Mask Sitting on Top of a Piece of Paper" 204 + author="Bret Lama" 205 + authorUrl="https://unsplash.com/@sepiatone" 206 + sourceUrl="https://unsplash.com/photos/a-white-mask-sitting-on-top-of-a-piece-of-paper-8zJMGvGeFig" 207 + usedOn="Author: Felix Schneider (OG Image)" 208 + usedOnUrl="/blog/authors/felix-schneider" 209 + /> 210 + <ImageCredit 211 + image="/public/blog/starlight-cooler-credit.jpg" 212 + title="A Wooden Block Spelling Credit on a Table" 213 + author="Markus Winkler" 214 + authorUrl="https://unsplash.com/@markuswinkler" 215 + sourceUrl="https://unsplash.com/photos/a-wooden-block-spelling-credit-on-a-table-ULXC8_R1sXE" 216 + usedOn="A Stylish Way to Give Credit in Starlight Projects" 217 + usedOnUrl="/blog/starlight-cooler-credit" 218 + /> 219 + <ImageCredit 220 + image="/public/blog/technically-impressive-github-profile-readme.jpg" 221 + title="An Aerial View of a Soccer Field from Above" 222 + author="Eduardo Flores" 223 + authorUrl="https://unsplash.com/@eduardoflorespe" 224 + sourceUrl="https://unsplash.com/photos/an-aerial-view-of-a-soccer-field-from-above-tOdS_OYdnKA" 225 + usedOn="How I Built a GitHub Profile README That Shouldn't Exist (But It Does)" 226 + usedOnUrl="/blog/technically-impressive-github-profile-readme" 227 + /> 228 + <ImageCredit 229 + image="/public/blog/rehype-github-badge-links.jpg" 230 + title="Assorted Colored Lapel Pin Lot" 231 + author="Kevin Luarte" 232 + authorUrl="https://unsplash.com/@luarte_raw" 233 + sourceUrl="https://unsplash.com/photos/assorted-colored-lapel-pin-lot-FHTxbpRWEsE" 234 + usedOn="How to create a Rehype plugin that turns GitHub links into beautiful badges" 235 + usedOnUrl="/blog/rehype-github-badge-links" 236 + /> 237 + <ImageCredit 238 + image="/public/blog/starlight-autogenerate-whole-sidebar.jpg" 239 + title="Assorted Files" 240 + author="Viktor Talashuk" 241 + authorUrl="https://unsplash.com/@viktortalashuk" 242 + sourceUrl="https://unsplash.com/photos/assorted-files-05HLFQu8bFw" 243 + usedOn="How to fully autogenerate Starlight sidebars (without losing control)" 244 + usedOnUrl="/blog/starlight-autogenerate-whole-sidebar" 245 + /> 246 + <ImageCredit 247 + image="/public/blog/setup-argocd-for-kubernetes.jpg" 248 + title="Blue and Red Cargo Ship on Sea During Daytime" 249 + author="Ian Taylor" 250 + authorUrl="https://unsplash.com/@carrier_lost" 251 + sourceUrl="https://unsplash.com/photos/blue-and-red-cargo-ship-on-sea-during-daytime-jOqJbvo1P9g" 252 + usedOn="Setting up Argo CD in a k3s cluster" 253 + usedOnUrl="/blog/setup-argocd-for-kubernetes" 254 + /> 255 + <ImageCredit 256 + image="/public/blog/starlight-sidebar-whitespace.jpg" 257 + title="Blue Red and Yellow Abstract Painting" 258 + author="Steve Johnson" 259 + authorUrl="https://unsplash.com/@steve_j" 260 + sourceUrl="https://unsplash.com/photos/blue-red-and-yellow-abstract-painting-nDqFutpNNC4" 261 + usedOn="How to make your Starlight sidebar items look better" 262 + usedOnUrl="/blog/starlight-sidebar-whitespace" 263 + /> 264 + <ImageCredit 265 + image="/public/blog/tags/mindspace.jpg" 266 + title="Brown and White Water Splash" 267 + author="Pawel Czerwinski" 268 + authorUrl="https://unsplash.com/@pawel_czerwinski" 269 + sourceUrl="https://unsplash.com/photos/brown-and-white-water-splash-BFxnx0UHVGM" 270 + usedOn="Tag: Mindspace (OG Image)" 271 + usedOnUrl="/blog/tags/mindspace" 272 + /> 273 + <ImageCredit 274 + image="/public/blog/terraform-variables-resolution.jpg" 275 + title="Brown Wooden Building under White Clouds During Daytime" 276 + author="@invadingkingdom" 277 + authorUrl="https://unsplash.com/@pablocontreras" 278 + sourceUrl="https://unsplash.com/photos/brown-wooden-building-under-white-clouds-during-daytime-pdRpNwIJMGQ" 279 + usedOn="Vibe-coding a VS Code Extension for Terraform projects" 280 + usedOnUrl="/blog/terraform-variables-resolution" 281 + /> 282 + <ImageCredit 283 + image="/public/blog/authors/frostybee.jpg" 284 + title="Closeup Photo of Dried Leaf" 285 + author="Caleb Stokes" 286 + authorUrl="https://unsplash.com/@yoitscalebb" 287 + sourceUrl="https://unsplash.com/photos/closeup-photo-of-dried-leaf-dWc5Gs4E2wA" 288 + usedOn="Author: FrostyBee (OG Image)" 289 + usedOnUrl="/blog/authors/frostybee" 290 + /> 291 + <ImageCredit 292 + image="/public/blog/tags/plugins.jpg" 293 + title="Closeup Photography of Plant on Ground" 294 + author="Jeremy Bishop" 295 + authorUrl="https://unsplash.com/@jeremybishop" 296 + sourceUrl="https://unsplash.com/photos/closeup-photography-of-plant-on-ground-vGjGvtSfys4" 297 + usedOn="Tag: Plugins (OG Image)" 298 + usedOnUrl="/blog/tags/plugins" 299 + /> 300 + <ImageCredit 301 + image="/public/blog/setup-kubernetes-with-cilium-and-cloudflare.jpg" 302 + title="Diagram" 303 + author="Growtika" 304 + authorUrl="https://unsplash.com/@growtika" 305 + sourceUrl="https://unsplash.com/photos/diagram-f7uCQxhucw4" 306 + usedOn="Setting up Kubernetes with Cilium and Cloudflare" 307 + usedOnUrl="/blog/setup-kubernetes-with-cilium-and-cloudflare" 308 + /> 309 + <ImageCredit 310 + image="/public/blog/starlight-dropdown-and-list-together.jpg" 311 + title="Flat Lay Photography of Circuit Board" 312 + author="Robin Glauser" 313 + authorUrl="https://unsplash.com/@nahakiole" 314 + sourceUrl="https://unsplash.com/photos/flat-lay-photography-of-circuit-board-zP7X_B86xOg" 315 + usedOn="How components open up endless possibilities" 316 + usedOnUrl="/blog/starlight-dropdown-and-list-together" 317 + /> 318 + <ImageCredit 319 + image="/public/blog/deep-thoughts.jpg" 320 + title="Green Leafed Tree on Desert" 321 + author="Damian Denis" 322 + authorUrl="https://unsplash.com/@dwade" 323 + sourceUrl="https://unsplash.com/photos/green-leafed-tree-on-desert-D8R_txR_0PE" 324 + usedOn="Homepage (OG Image)" 325 + usedOnUrl="/" 326 + /> 327 + <ImageCredit 328 + image="/public/blog/authors/hideoo.jpg" 329 + title="Latte Art in Brown Cup in Macro Photography" 330 + author="Jonas Jacobsson" 331 + authorUrl="https://unsplash.com/@jonasjacobsson" 332 + sourceUrl="https://unsplash.com/photos/latte-art-in-brown-cup-in-macro-photography-RFHFV7lVQBY" 333 + usedOn="Author: HiDeoo (OG Image)" 334 + usedOnUrl="/blog/authors/hideoo" 335 + /> 336 + <ImageCredit 337 + image="/public/blog/tags/starlight.jpg" 338 + title="Nebula" 339 + author="NASA" 340 + authorUrl="https://unsplash.com/@nasa" 341 + sourceUrl="https://unsplash.com/photos/nebula--hI5dX2ObAs" 342 + usedOn="Tag: Starlight (OG Image)" 343 + usedOnUrl="/blog/tags/starlight" 344 + /> 345 + <ImageCredit 346 + image="/public/blog/cognitive-erosion.jpg" 347 + title="Omega Brain: Unlocking Cognitive Potential with Essential Fatty Acids" 348 + author="NeuroLaunch Editorial Team" 349 + authorUrl="https://neurolaunch.com/editorial-team/" 350 + source="NeuroLaunch" 351 + sourceUrl="https://neurolaunch.com/wp-content/uploads/2024/09/omega-brain-unlocking-cognitive-potential-with-essential-fatty-acids-1024x585.webp" 352 + usedOn="Stop Outsourcing Your Soul to AI" 353 + usedOnUrl="/blog/cognitive-erosion" 354 + /> 355 + <ImageCredit 356 + image="/public/blog/authors/clemens-schlipfinger.jpg" 357 + title="Person in Red Sweater Holding Babys Hand" 358 + author="Hannah Busing" 359 + authorUrl="https://unsplash.com/@hannahbusing" 360 + sourceUrl="https://unsplash.com/photos/person-in-red-sweater-holding-babys-hand-Zyx1bK9mqmA" 361 + usedOn="Author: Clemens Schlipfinger (OG Image)" 362 + usedOnUrl="/blog/authors/clemens-schlipfinger" 363 + /> 364 + <ImageCredit 365 + image="/public/blog/setup-continuous-integration-github-repository.jpg" 366 + title="Person on Top of Brown Steel Frame" 367 + author="Rodion Kutsaiev" 368 + authorUrl="https://unsplash.com/@frostroomhead" 369 + sourceUrl="https://unsplash.com/photos/person-on-top-of-brown-steel-frame-xNdPWGJ6UCQ" 370 + usedOn="Setting up Continuous deployment in a GitHub repository" 371 + usedOnUrl="/blog/setup-continuous-integration-github-repository" 372 + /> 373 + <ImageCredit 374 + image="/public/blog/diploma-thesis.jpg" 375 + title="Planet Space Photography" 376 + author="Animalia Life" 377 + authorUrl="https://animalia-life.club/qa/pictures/high-resolution-nasa-earth-at-night-from-space" 378 + source="High Resolution Nasa Earth At Night From Space" 379 + sourceUrl="https://ena.our-dogs.info/facts-ph.html" 380 + usedOn="Designing a Kafka-Based Pipeline and Interactive Graph for Energy Anomaly Detection" 381 + usedOnUrl="/blog/diploma-thesis" 382 + /> 383 + <ImageCredit 384 + image="/public/blog/tags/css.jpg" 385 + title="Programming Language" 386 + author="Pankaj Patel" 387 + authorUrl="https://unsplash.com/@pankajpatel" 388 + sourceUrl="https://unsplash.com/photos/programming-language-6JVlSdgMacE" 389 + usedOn="Tag: CSS (OG Image)" 390 + usedOnUrl="/blog/tags/css" 391 + /> 392 + <ImageCredit 393 + image="/public/blog/tags/education.jpg" 394 + title="Red Apple Fruit on Four Pyle Books" 395 + author="Element5 Digital" 396 + authorUrl="https://unsplash.com/@element5digital" 397 + sourceUrl="https://unsplash.com/photos/red-apple-fruit-on-four-pyle-books-OyCl7Y4y0Bk" 398 + usedOn="Tag: Education (OG Image)" 399 + usedOnUrl="/blog/tags/education" 400 + /> 401 + <ImageCredit 402 + image="/public/blog/featuring/star-days.jpg" 403 + title="Water Ripple" 404 + author="Levi XU" 405 + authorUrl="https://unsplash.com/@xusanfeng" 406 + sourceUrl="https://unsplash.com/photos/water-ripple-dOhJtfXJZfw" 407 + usedOn="Star Days ★" 408 + usedOnUrl="/blog/featuring/star-days" 409 + /> 410 + <ImageCredit 411 + image="/public/blog/authors/lan.jpg" 412 + title="White Flowers and Dark Green Leaves Fill the Frame" 413 + author="Sourav Kundu" 414 + authorUrl="https://unsplash.com/@uravx" 415 + sourceUrl="https://unsplash.com/photos/white-flowers-and-dark-green-leaves-fill-the-frame-xYd2ri2F0Sw" 416 + usedOn="Author: Lan (OG Image)" 417 + usedOnUrl="/blog/authors/lan" 418 + /> 419 + <ImageCredit 420 + image="/public/blog/20th-birthday.jpg" 421 + title="Yellow and Green Lighted Candle" 422 + author="Bilal Ayadi" 423 + authorUrl="https://unsplash.com/@bilal_ayadi" 424 + sourceUrl="https://unsplash.com/photos/yellow-and-green-lighted-candle-k8Lp1IOsZt4" 425 + usedOn="From Balloons to Binary: A 20th Birthday Packed with Clues" 426 + usedOnUrl="/blog/20th-birthday" 427 + /> 428 + </ImageCreditsSection> 429 + 430 + ## ❤️ To Everyone Involved 431 + 432 + To the developers, designers, artists, testers, friends, and readers who contributed in one way or another — thank you. 433 + Your work, feedback, and presence make this blog what it is today. 434 + 435 + This site stands as a small tribute to the open-source spirit: collaboration, curiosity, and creativity shared freely for the love of building something together.
+3
src/content/docs/index.mdx
··· 8 8 next: 9 9 label: Detailed view 10 10 link: /blog 11 + prev: 12 + label: Credits 13 + link: /credits 11 14 --- 12 15 13 16 import IndexPostList from "../../components/IndexPostList.astro"
+7 -4
src/plugins/rehype/github-badge-links.ts
··· 2 2 import { visit } from "unist-util-visit"; 3 3 4 4 export default function rehypeGitHubBadgeLinks() { 5 - return (tree: any) => { 5 + return (tree: any, file: any) => { 6 + const frontmatter = file.data?.astro?.frontmatter ?? {}; 7 + 8 + if (frontmatter.badgeLinks === false) { 9 + return; 10 + } 11 + 6 12 visit(tree, "element", (node) => { 7 13 if ( 8 14 node.tagName === "a" && ··· 15 21 if (match) { 16 22 const username = match[1]; 17 23 18 - // Add GitHub badge class 19 24 node.properties.className = (node.properties.className || []).concat( 20 25 "gh-badge" 21 26 ); 22 27 23 - // Build avatar image 24 28 const avatarImg = h("img", { 25 29 src: `https://github.com/${username}.png`, 26 30 alt: username, 27 31 }); 28 32 29 - // Prepend avatar image to original children 30 33 node.children.unshift(avatarImg); 31 34 } 32 35 }