update tag styling to be consistent
All checks were successful
Build and Deploy / build (push) Successful in 30s
All checks were successful
Build and Deploy / build (push) Successful in 30s
This commit is contained in:
parent
09b838819b
commit
6497f5dfb8
@ -50,13 +50,13 @@ const sourceUrl = generateSourceUrl(frontmatter.filename, "blog");
|
||||
<Prose>
|
||||
<slot />
|
||||
</Prose>
|
||||
<div class="flex flex-wrap gap-2 mt-4">
|
||||
<div class="flex flex-wrap gap-2 w-full mt-8 mb-4">
|
||||
{frontmatter.tags?.map((tag) => (
|
||||
<span class="-zag-text -zag-bg zag-transition px-2 py-1 text-sm font-semibold">
|
||||
<span class="-zag-text -zag-bg zag-transition px-2 py-1 text-sm font-semibold rounded-md whitespace-nowrap overflow-hidden text-ellipsis max-w-[150px]" title={tag}>
|
||||
{tag}
|
||||
</span>
|
||||
))}
|
||||
</div>
|
||||
<p class="pt-8">~{GLOBAL.username}</p>
|
||||
<p class="pt-4">~{GLOBAL.username}</p>
|
||||
</Section>
|
||||
</Layout>
|
||||
|
@ -37,11 +37,11 @@ const sourceUrl = generateSourceUrl(frontmatter.filename, "projects");
|
||||
<h1 class="text-3xl sm:text-4xl leading-tight font-display">
|
||||
{frontmatter.title}
|
||||
</h1>
|
||||
<div class="flex text-sm gap-2">
|
||||
<div class="flex flex-wrap gap-2 w-full">
|
||||
{
|
||||
frontmatter.tags
|
||||
? frontmatter.tags.map((tag) => (
|
||||
<span class="-zag-text -zag-bg zag-transition font-semibold py-1 px-2">
|
||||
<span class="-zag-text -zag-bg zag-transition px-2 py-1 text-sm font-semibold rounded-md whitespace-nowrap overflow-hidden text-ellipsis max-w-[150px]" title={tag}>
|
||||
{tag}
|
||||
</span>
|
||||
))
|
||||
|
@ -28,6 +28,7 @@ export const processContentInDir = async <T extends object, K>(
|
||||
.filter((file: string) => file.endsWith(".md"))
|
||||
.map((file) => file.split(".")[0]);
|
||||
const readMdFileContent = async (file: string) => {
|
||||
try {
|
||||
if (contentType === "projects") {
|
||||
const content = import.meta
|
||||
.glob(`/src/pages/projects/*.md`)
|
||||
@ -37,6 +38,13 @@ export const processContentInDir = async <T extends object, K>(
|
||||
file: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
// Validate frontmatter before processing
|
||||
if (!data || !data.frontmatter) {
|
||||
console.warn(`Warning: Missing or invalid frontmatter in ${file}.md`);
|
||||
return null;
|
||||
}
|
||||
|
||||
return processFn(data);
|
||||
} else {
|
||||
const content = import.meta
|
||||
@ -47,10 +55,23 @@ export const processContentInDir = async <T extends object, K>(
|
||||
file: string;
|
||||
url: string;
|
||||
};
|
||||
|
||||
// Validate frontmatter before processing
|
||||
if (!data || !data.frontmatter) {
|
||||
console.warn(`Warning: Missing or invalid frontmatter in ${file}.md`);
|
||||
return null;
|
||||
}
|
||||
|
||||
return processFn(data);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Error processing ${file}.md:`, error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
return await Promise.all(markdownFiles.map(readMdFileContent));
|
||||
const results = await Promise.all(markdownFiles.map(readMdFileContent));
|
||||
// Filter out null results from files with errors
|
||||
return results.filter(result => result !== null) as K[];
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -2,9 +2,58 @@
|
||||
layout: ../../layouts/BlogLayout.astro
|
||||
title: No, We Have Netflix at Home
|
||||
description: How my exasperation at paying for an ever growing number of streaming services led to a deep obsession
|
||||
tags: ["code", "htmlf"]
|
||||
tags: ["code", "html", "homelab"]
|
||||
time: 4
|
||||
featured: true
|
||||
timestamp: 2024-12-18T02:39:03+00:00
|
||||
filename: html-intro
|
||||
---
|
||||
|
||||
## The Beginning of an Obsession
|
||||
|
||||
It all started with a simple thought: "Why am I paying for so many streaming services?" Netflix, Hulu, Disney+, HBO Max, Apple TV+, and the list goes on. Each one offering just enough exclusive content to justify its monthly fee, but collectively draining my wallet.
|
||||
|
||||
That's when I decided to take matters into my own hands and build my own media server. Little did I know this would be the gateway to a much deeper homelab obsession.
|
||||
|
||||
## The First Steps
|
||||
|
||||
I started with a simple Plex server running on an old laptop. It wasn't much, but it was mine. I could store my legally obtained media and stream it to any device in my home. The convenience was immediately apparent, and the satisfaction of building something myself was addictive.
|
||||
|
||||
But as with any tech hobby, it didn't stop there. Soon I was researching NAS solutions, RAID configurations, and the best hard drives for 24/7 operation. My simple media server was evolving into something much more complex.
|
||||
|
||||
## Expanding Horizons
|
||||
|
||||
As my collection grew, so did my ambitions. I found myself exploring other self-hosted applications:
|
||||
|
||||
- **Sonarr and Radarr** for managing TV shows and movies
|
||||
- **Jackett** for indexing
|
||||
- **Ombi** for allowing family members to request content
|
||||
- **Tautulli** for monitoring Plex usage
|
||||
|
||||
Each new addition made my system more powerful and more tailored to my specific needs. I was no longer just replicating Netflix; I was building something better.
|
||||
|
||||
## The Current Setup
|
||||
|
||||
Today, my homelab has expanded well beyond just media. It now includes:
|
||||
|
||||
- A proper NAS with redundant storage
|
||||
- Docker containers for various services
|
||||
- Home automation integration
|
||||
- VPN for remote access
|
||||
- Automated backups
|
||||
|
||||
The journey from "I don't want to pay for Netflix" to "I need more hard drives for my server rack" happened almost without me noticing. But I wouldn't have it any other way.
|
||||
|
||||
## Lessons Learned
|
||||
|
||||
If you're considering starting your own homelab journey, here's what I've learned:
|
||||
|
||||
1. **Start small** - You don't need enterprise hardware to begin
|
||||
2. **Document everything** - You'll thank yourself later
|
||||
3. **Backup, backup, backup** - Data loss is painful
|
||||
4. **Join the community** - r/homelab and other forums are invaluable resources
|
||||
5. **Enjoy the process** - The learning is half the fun
|
||||
|
||||
So while my family jokes about having "Netflix at home," I smile knowing that what we have is so much more than just another streaming service. It's a hobby, a learning experience, and a constantly evolving project that brings me joy.
|
||||
|
||||
And yes, it's probably cost me more than just paying for those streaming services would have. But where's the fun in that?
|
||||
|
Loading…
x
Reference in New Issue
Block a user