Skip to content

Commit 67dd52e

Browse files
committed
Merge #186: feat: add blog post about submitting trackers to newTrackon
20e825c feat: add blog post about submitting trackers to newTrackon (Jose Celano) Pull request description: ## Summary Adds a new blog post: **Submitting Trackers to newTrackon**. Closes #185 ## What's in the post - **Introduction** — what newTrackon is and why independent uptime monitoring matters - **Prerequisites** — all 5 checks newTrackon performs before accepting a tracker (including announce interval 300–10800 s) - **One tracker per IP constraint** — how newTrackon deduplicates by IP, not just URL - **Solution: Floating IPs** — how we use Hetzner floating IPs to list UDP and HTTP/S endpoints independently - **BEP34 DNS configuration** — TXT record syntax and our setup for each domain - **Submitting to newTrackon** — step-by-step walkthrough - **Troubleshooting: Tracker Shows as Down** — four sub-sections: - IPv6 routing with Docker and floating IPs (ip6tables, DNAT/SNAT) - Using `newtrackon.com/raw` to inspect probe results - Running a local copy of newTrackon - Using the Torrust Tracker console client ## Other changes - `static/blogMetadata.json` — regenerated to include the new post - `.github/skills/add-blog-post/SKILL.md` — updated step 5 to document SEO-friendly cover image naming convention - Cover image: `static/images/posts/submitting-trackers-to-newtrackon/submitting-bittorrent-tracker-to-newtrackon.webp` ## Checklist - [x] `npm run check` — 0 errors, 0 warnings - [x] `npm run lint` — all files pass Prettier + ESLint - [x] Pre-commit hook — all checks passed - [x] Cover image added with SEO-friendly filename - [x] `blogMetadata.json` regenerated ACKs for top commit: josecelano: ACK 20e825c Tree-SHA512: 3fd15031222f898c598c8edff4b03d7f538742ae2e5f18a040178ec72e2cc0a51c8028be1d425264c1a768c7ebd3327565780578b2b6c0464ce334c19940d987
2 parents ebff091 + 20e825c commit 67dd52e

6 files changed

Lines changed: 768 additions & 54 deletions

File tree

.github/skills/add-blog-post/SKILL.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,22 @@ Never invent names like `bp.md`, `bp.lg`, `bp.sm` — they will cause a Sass com
329329

330330
### 5. Add a cover image
331331

332-
Place the cover image at:
332+
Place the cover image under `static/images/posts/<post-slug>/`. Use an **SEO-friendly filename** — a descriptive kebab-case name that reflects the post topic, not a generic name like `cover.webp`:
333333

334334
```
335-
static/images/posts/<post-slug>/cover.webp
335+
static/images/posts/<post-slug>/descriptive-kebab-case-name.webp
336+
```
337+
338+
For example, for a post about submitting trackers to newTrackon:
339+
340+
```
341+
static/images/posts/submitting-trackers-to-newtrackon/submitting-bittorrent-tracker-to-newtrackon.webp
342+
```
343+
344+
Update `coverImage` in `metadata.ts` to match the exact filename you chose:
345+
346+
```typescript
347+
coverImage: '/images/posts/<post-slug>/descriptive-kebab-case-name.webp',
336348
```
337349

338350
- Preferred format: WebP
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { getMetadata } from '$lib/data/metadata';
2+
import type { PageServerLoad } from './$types';
3+
4+
export const load: PageServerLoad = async ({ url }) => {
5+
const slug = url.pathname.split('/').filter(Boolean).pop();
6+
if (!slug) throw new Error('Slug could not be determined.');
7+
8+
const metadata = await getMetadata();
9+
const currentPost = metadata.find((post) => post.slug === slug);
10+
11+
if (!currentPost) throw new Error(`Post not found: ${slug}`);
12+
13+
return { currentPost, allPosts: metadata };
14+
};

0 commit comments

Comments
 (0)