diff --git a/appview/ogcard/client.go b/appview/ogcard/client.go
index 44f019cf..98d6ba69 100644
--- a/appview/ogcard/client.go
+++ b/appview/ogcard/client.go
@@ -41,7 +41,7 @@ type RepositoryCardPayload struct {
Stars int `json:"stars"`
Pulls int `json:"pulls"`
Issues int `json:"issues"`
- UpdatedAt string `json:"updatedAt"`
+ CreatedAt string `json:"createdAt"`
AvatarUrl string `json:"avatarUrl"`
Languages []LanguageData `json:"languages"`
}
diff --git a/appview/ogcard/src/__tests__/fixtures.ts b/appview/ogcard/src/__tests__/fixtures.ts
index c53fb02d..dce1f675 100644
--- a/appview/ogcard/src/__tests__/fixtures.ts
+++ b/appview/ogcard/src/__tests__/fixtures.ts
@@ -14,7 +14,7 @@ export const createRepoData = (avatarUrl: string): RepositoryCardData => ({
stars: 746,
pulls: 82,
issues: 176,
- updatedAt: "updated 2 hours ago",
+ createdAt: "2026-01-29T00:00:00Z",
avatarUrl,
languages: [
{ color: "#00ADD8", percentage: 50 },
@@ -43,7 +43,7 @@ export const createIssueData = (
],
commentCount: 12,
reactionCount: 5,
- createdAt: "29 jan 2026",
+ createdAt: "2026-01-29T00:00:00Z",
...overrides,
});
@@ -64,7 +64,7 @@ export const createPullRequestData = (
rounds: 3,
commentCount: 12,
reactionCount: 31,
- createdAt: "29 jan 2026",
+ createdAt: "2026-01-29T00:00:00Z",
...overrides,
});
diff --git a/appview/ogcard/src/components/cards/repository.tsx b/appview/ogcard/src/components/cards/repository.tsx
index 86810bc3..6459fff8 100644
--- a/appview/ogcard/src/components/cards/repository.tsx
+++ b/appview/ogcard/src/components/cards/repository.tsx
@@ -3,6 +3,7 @@ import { Avatar } from "../shared/avatar";
import { LanguageCircles } from "../shared/language-circles";
import { Metrics } from "../shared/metrics";
import { TangledLogo } from "../shared/logo";
+import { FooterStats } from "../shared/footer-stats";
import { TYPOGRAPHY } from "../shared/constants";
import type { RepositoryCardData } from "../../validation";
@@ -34,12 +35,10 @@ export function RepositoryCard(data: RepositoryCardData) {
justifyContent: "space-between",
flexGrow: 1,
}}>
-
- {data.updatedAt}
-
+
);
-}
\ No newline at end of file
+}
diff --git a/appview/ogcard/src/components/shared/footer-stats.tsx b/appview/ogcard/src/components/shared/footer-stats.tsx
index 6e74f1f8..793819c9 100644
--- a/appview/ogcard/src/components/shared/footer-stats.tsx
+++ b/appview/ogcard/src/components/shared/footer-stats.tsx
@@ -4,8 +4,8 @@ import { StatItem } from "./stat-item";
interface FooterStatsProps {
createdAt: string;
- reactionCount: number;
- commentCount: number;
+ reactionCount?: number;
+ commentCount?: number;
}
export function FooterStats({
@@ -13,9 +13,15 @@ export function FooterStats({
reactionCount,
commentCount,
}: FooterStatsProps) {
+ const formattedDate = new Intl.DateTimeFormat('en-GB', {
+ day: 'numeric',
+ month: 'short',
+ year: 'numeric',
+ }).format(new Date(createdAt));
+
return (
-
+
{reactionCount ? (
) : null}
diff --git a/appview/ogcard/src/validation.ts b/appview/ogcard/src/validation.ts
index 73f8b782..01f67f4e 100644
--- a/appview/ogcard/src/validation.ts
+++ b/appview/ogcard/src/validation.ts
@@ -14,7 +14,7 @@ export const repositoryCardSchema = z.object({
stars: z.number().int().min(0).max(1000000),
pulls: z.number().int().min(0).max(100000),
issues: z.number().int().min(0).max(100000),
- updatedAt: z.string().max(100),
+ createdAt: z.string().max(100),
avatarUrl: z.string().url(),
languages: z.array(languageSchema).max(5),
});
diff --git a/appview/repo/opengraph.go b/appview/repo/opengraph.go
index b5e2bf52..46c677a6 100644
--- a/appview/repo/opengraph.go
+++ b/appview/repo/opengraph.go
@@ -80,8 +80,6 @@ func (rp *Repo) Opengraph(w http.ResponseWriter, r *http.Request) {
})
}
- updatedAt := f.Created
-
payload := ogcard.RepositoryCardPayload{
Type: "repository",
RepoName: f.Name,
@@ -89,7 +87,7 @@ func (rp *Repo) Opengraph(w http.ResponseWriter, r *http.Request) {
Stars: f.RepoStats.StarCount,
Pulls: f.RepoStats.PullCount.Open,
Issues: f.RepoStats.IssueCount.Open,
- UpdatedAt: updatedAt.Format(time.RFC3339),
+ CreatedAt: f.Created.Format(time.RFC3339),
AvatarUrl: avatarUrl,
Languages: ogLanguages,
}