Skip to content

Commit 12ecaf6

Browse files
authored
Hello dev category feed (#101)
* refactor: Update Feed component to fetch posts from new RSS feed URL - Changed the RSS feed URL to "https://blog.hello.coop/feed". - Replaced the RSS parser with a fetch-based approach to retrieve and parse XML data. - Implemented filtering for posts categorized under "hello.dev" and updated the post structure for rendering. - Adjusted image source to use the new format from the fetched posts. * fix: Update category filter in Feed component from "hello.dev" to "Developer" - Changed the filtering logic in the Feed component to reflect the new category name "Developer" instead of "hello.dev" for improved accuracy in post retrieval. * chore: Remove deprecated feed.xml and related scripts - Deleted the feed.xml file and the associated feed.sh script as part of the cleanup process. - Updated linkinator configuration to remove references to the old blog URL. - Adjusted package.json to reflect the removal of the feed script, streamlining the build process. * fix: Update lastmod timestamps in sitemap and ai-sitemap for improved SEO - Changed lastmod timestamps for all URLs in sitemap.xml and ai-sitemap.xml to reflect the new date of September 8, 2025. - Ensured consistency across both files to enhance crawler efficiency and improve SEO.
1 parent db82ffc commit 12ecaf6

9 files changed

Lines changed: 98 additions & 121 deletions

File tree

components/feed.tsx

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
import React, { useState, useEffect } from 'react'
22
import Link from 'next/link'
33
import Image from 'next/image'
4-
import Parser from 'rss-parser';
54
import styles from './feed.module.css'
65

76
const Feed = () => {
8-
const parser = new Parser(
9-
{customFields: {
10-
item: ['hashnode:coverImage']
11-
}}
12-
)
13-
const rss = "/feed.xml"
7+
const rss = "https://blog.hello.coop/feed"
148
const [posts, setPosts] = useState([])
159

1610
useEffect(() => {
@@ -19,8 +13,30 @@ const Feed = () => {
1913

2014
const fetchPosts = async () => {
2115
try {
22-
const json = await parser.parseURL(rss)
23-
setPosts(json.items?.slice(0, 3))
16+
const res = await fetch(rss)
17+
const txt = await res.text()
18+
const xml = new window.DOMParser().parseFromString(txt, "text/xml")
19+
const allPosts = xml.querySelectorAll("item")
20+
21+
// Filter posts with "Developer" category
22+
const filteredPosts = Array.from(allPosts).filter(post => {
23+
const categories = Array.from(post.querySelectorAll("category"))
24+
return categories.some(category =>
25+
category.textContent?.includes('Developer')
26+
)
27+
}).slice(0, 3)
28+
29+
// Convert to the format expected by the component
30+
const processedPosts = filteredPosts.map(post => ({
31+
title: post.querySelector("title")?.textContent,
32+
link: post.querySelector("link")?.textContent,
33+
guid: post.querySelector("guid")?.textContent,
34+
pubDate: post.querySelector("pubDate")?.textContent,
35+
contentSnippet: post.querySelector("description")?.textContent?.replace(/<[^>]*>/g, ''), // Strip HTML
36+
image: post.querySelector("content")?.getAttribute("url")
37+
}))
38+
39+
setPosts(processedPosts)
2440
} catch(err){
2541
console.error(err)
2642
}
@@ -35,7 +51,7 @@ const Feed = () => {
3551
{posts.map(i => (
3652
<li key={i.guid}>
3753
<Link href={i.link} target="_blank" className="flex flex-col md:flex-row md:items-center gap-6 group">
38-
<Image src={i['hashnode:coverImage']} alt={i.title} width={256} height={144} className="rounded-md object-cover flex-shrink-0" priority={false} />
54+
<Image src={i.image} alt={i.title} width={256} height={144} className="rounded-md object-cover flex-shrink-0" priority={false} />
3955
<div>
4056
<span className="text-sm opacity-80">{i.pubDate.split(" ").slice(0, -2).join(" ")}</span>
4157
<h3 className="text-xl font-semibold my-1 group-hover:underline">{i.title}</h3>
@@ -49,7 +65,7 @@ const Feed = () => {
4965
))}
5066
</ul>
5167
{/* TBD Make link open in new tab (fix extenal link icon positioning) */}
52-
<Link href="https://blog.hello.dev" className="flex items-center gap-6 group md:ml-64 md:pl-6 mt-10 text-xl hover:underline font-semibold">Read more at blog.hello.dev</Link>
68+
<Link href="https://blog.hello.coop" className="flex items-center gap-6 group md:ml-64 md:pl-6 mt-10 text-xl hover:underline font-semibold">Read more at blog.hello.coop</Link>
5369
</>
5470
)
5571
}

linkinator.config.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"/js/script.hash.js",
66
"github.com/hellocoop/hello.dev/*",
77
"http://localhost:3000",
8-
"https://blog.hello.dev/*",
98
"https://blog.hello.coop/*",
109
"https://github.com/*",
1110
"https://cursor.com/*"

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"description": "Hellō is an OpenID Connect Provider that simplifies user registration and login, allowing you to provide all the choices your user's may want in hours instead of days or weeks.",
55
"scripts": {
66
"dev": "next dev",
7-
"feed": "./scripts/feed.sh",
87
"build": "next build",
98
"postbuild": "next-sitemap && node scripts/generate-markdown.mjs",
109
"start": "next start",

pages/_meta.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"blog": {
2929
"title": "Blog",
3030
"type": "page",
31-
"href": "https://blog.hello.dev/",
31+
"href": "https://blog.hello.coop/",
3232
"newWindow": true
3333
},
3434
"console": {

pages/docs/comparison.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Having a central service for users to manage and reuse their identity can signif
1919

2020
### <Color color="#00FF00">*Pros*</Color>
2121
- *Cost* - Login and verified email are FREE. Unlimited MAU. We will monetize when you need / want verified information about your users. See our [pricing](/pricing) for details on the Hellō business model.
22-
- *Time to Market* - With our [Quickstarts](/docs/quickstarts) you can be fully configured and [deployed in 60 seconds](https://blog.hello.dev/hello-in-60-seconds).
22+
- *Time to Market* - With our [Quickstarts](/docs/quickstarts) you can be fully configured and [deployed in 60 seconds](https://blog.hello.coop/2023/11/hello-in-60-seconds/).
2323
- *Data Model* - You only need a user table. You do not need to a table for user accounts / authentication as Hellō provides you an ID Token with an identifier for the user and the claims you requested. No Passwords. No managing multiple social logins. Rare account merging as Hellō will merge social accounts for you.
2424

2525
### <Color color="#FF0000">*Cons*</Color>

public/ai-sitemap.xml

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,157 +6,157 @@
66

77
<url>
88
<loc>https://www.hello.dev/markdown/docs/docs.md</loc>
9-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
9+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
1010
<priority>1.0</priority>
1111
</url>
1212

1313
<url>
1414
<loc>https://www.hello.dev/markdown/docs/docs/admin-mcp.md</loc>
15-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
15+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
1616
<priority>0.7</priority>
1717
</url>
1818

1919
<url>
2020
<loc>https://www.hello.dev/markdown/docs/docs/apis/admin.md</loc>
21-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
21+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
2222
<priority>0.8</priority>
2323
</url>
2424

2525
<url>
2626
<loc>https://www.hello.dev/markdown/docs/docs/apis/invite.md</loc>
27-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
27+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
2828
<priority>0.8</priority>
2929
</url>
3030

3131
<url>
3232
<loc>https://www.hello.dev/markdown/docs/docs/apis/quickstart.md</loc>
33-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
33+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
3434
<priority>0.8</priority>
3535
</url>
3636

3737
<url>
3838
<loc>https://www.hello.dev/markdown/docs/docs/apis/wallet.md</loc>
39-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
39+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
4040
<priority>0.8</priority>
4141
</url>
4242

4343
<url>
4444
<loc>https://www.hello.dev/markdown/docs/docs/apis/web-client.md</loc>
45-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
45+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
4646
<priority>0.8</priority>
4747
</url>
4848

4949
<url>
5050
<loc>https://www.hello.dev/markdown/docs/docs/buttons.md</loc>
51-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
51+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
5252
<priority>0.8</priority>
5353
</url>
5454

5555
<url>
5656
<loc>https://www.hello.dev/markdown/docs/docs/getting-started.md</loc>
57-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
57+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
5858
<priority>0.9</priority>
5959
</url>
6060

6161
<url>
6262
<loc>https://www.hello.dev/markdown/docs/docs/quickstarts.md</loc>
63-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
63+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
6464
<priority>0.9</priority>
6565
</url>
6666

6767
<url>
6868
<loc>https://www.hello.dev/markdown/docs/docs/quickstarts/express.md</loc>
69-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
69+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
7070
<priority>0.8</priority>
7171
</url>
7272

7373
<url>
7474
<loc>https://www.hello.dev/markdown/docs/docs/quickstarts/fastify.md</loc>
75-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
75+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
7676
<priority>0.8</priority>
7777
</url>
7878

7979
<url>
8080
<loc>https://www.hello.dev/markdown/docs/docs/quickstarts/nextjs.md</loc>
81-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
81+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
8282
<priority>0.8</priority>
8383
</url>
8484

8585
<url>
8686
<loc>https://www.hello.dev/markdown/docs/docs/quickstarts/wordpress.md</loc>
87-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
87+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
8888
<priority>0.8</priority>
8989
</url>
9090

9191
<url>
9292
<loc>https://www.hello.dev/markdown/docs/docs/scopes.md</loc>
93-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
93+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
9494
<priority>0.8</priority>
9595
</url>
9696

9797
<url>
9898
<loc>https://www.hello.dev/markdown/docs/docs/sdks/config.md</loc>
99-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
99+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
100100
<priority>0.7</priority>
101101
</url>
102102

103103
<url>
104104
<loc>https://www.hello.dev/markdown/docs/docs/sdks/environment.md</loc>
105-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
105+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
106106
<priority>0.7</priority>
107107
</url>
108108

109109
<url>
110110
<loc>https://www.hello.dev/markdown/docs/docs/sdks/express.md</loc>
111-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
111+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
112112
<priority>0.7</priority>
113113
</url>
114114

115115
<url>
116116
<loc>https://www.hello.dev/markdown/docs/docs/sdks/faqs.md</loc>
117-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
117+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
118118
<priority>0.7</priority>
119119
</url>
120120

121121
<url>
122122
<loc>https://www.hello.dev/markdown/docs/docs/sdks/fastify.md</loc>
123-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
123+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
124124
<priority>0.7</priority>
125125
</url>
126126

127127
<url>
128128
<loc>https://www.hello.dev/markdown/docs/docs/sdks/helper.md</loc>
129-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
129+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
130130
<priority>0.7</priority>
131131
</url>
132132

133133
<url>
134134
<loc>https://www.hello.dev/markdown/docs/docs/sdks/nextjs.md</loc>
135-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
135+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
136136
<priority>0.7</priority>
137137
</url>
138138

139139
<url>
140140
<loc>https://www.hello.dev/markdown/docs/docs/sdks/quickstart.md</loc>
141-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
141+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
142142
<priority>0.7</priority>
143143
</url>
144144

145145
<url>
146146
<loc>https://www.hello.dev/markdown/docs/docs/sdks/react.md</loc>
147-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
147+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
148148
<priority>0.7</priority>
149149
</url>
150150

151151
<url>
152152
<loc>https://www.hello.dev/markdown/docs/docs/sdks/svelte.md</loc>
153-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
153+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
154154
<priority>0.7</priority>
155155
</url>
156156

157157
<url>
158158
<loc>https://www.hello.dev/markdown/docs/docs/sdks/vue.md</loc>
159-
<lastmod>2025-08-15T09:26:48.888Z</lastmod>
159+
<lastmod>2025-09-08T17:02:12.505Z</lastmod>
160160
<priority>0.7</priority>
161161
</url>
162162

0 commit comments

Comments
 (0)