Skip to content

Commit 9917cc4

Browse files
deocagunotclaude
andcommitted
docs(tasks): add missing OG image task for Raineer
Twelve public pages declare /og-image.jpg for OpenGraph and Twitter cards and the file has never existed, so every shared codebility.tech link previews as a blank card. profiles/[id] also falls back to it when a developer has no photo. The metadata is already correct across all twelve files, so this is one 1200x630 image dropped into public/ rather than a code change. Also updates the heading hygiene spec, which had been carrying this as an unowned note, to point at the new task instead. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent 3ce330f commit 9917cc4

2 files changed

Lines changed: 83 additions & 1 deletion

File tree

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Link Previews Are Blank — `og-image.jpg` Does Not Exist
2+
3+
## Summary
4+
5+
Every public page tells Facebook, LinkedIn, X, Slack and Discord to use `/og-image.jpg` as the preview image when someone shares a link. That file has never existed. Anyone sharing a codebility.tech link gets a blank card with just the title and description, no image.
6+
7+
Twelve files reference it, including the root layout, so this affects every public URL on the site. Nothing errors and nothing looks broken while browsing, which is why it has gone unnoticed.
8+
9+
The metadata is already correct. This is one image file dropped into `public/`.
10+
11+
## Background
12+
13+
The pages declaring the image:
14+
15+
```
16+
app/layout.tsx
17+
app/(marketing)/page.tsx
18+
app/(marketing)/services/page.tsx
19+
app/(marketing)/careers/page.tsx
20+
app/(marketing)/codevs/page.tsx
21+
app/(marketing)/profiles/page.tsx
22+
app/(marketing)/profiles/[id]/page.tsx
23+
app/(marketing)/hire-a-codev/page.tsx
24+
app/(marketing)/contact/page.tsx
25+
app/(marketing)/bookacall/page.tsx
26+
app/(marketing)/ai-integration/page.tsx
27+
app/(marketing)/privacy-policy/page.tsx
28+
```
29+
30+
Each declares it the same way:
31+
32+
```ts
33+
images: [{ url: "/og-image.jpg", width: 1200, height: 630, alt: "..." }]
34+
```
35+
36+
`profiles/[id]` is slightly different — it uses the developer's own photo when there is one and falls back to `/og-image.jpg` when there isn't, so developer profiles without a photo currently share as blank cards too.
37+
38+
`public/` holds only `assets/` and `site.webmanifest`. There is no `og-image.jpg` and no Next.js `opengraph-image` convention file anywhere in `app/`.
39+
40+
Worth knowing: the `metadataBase` fix earlier in the SEO work is what made these URLs resolve to full absolute addresses. Before that they were malformed relative paths. So the situation went from broken in a confusing way to cleanly pointing at a 404 — which is why this is now a simple drop-in rather than a metadata problem.
41+
42+
## Objectives
43+
44+
- Give every public page a working preview image when its link is shared.
45+
- Keep the existing metadata as-is; no code changes should be needed.
46+
47+
## Expected Behavior
48+
49+
- Sharing any codebility.tech URL on Facebook, LinkedIn, X, Slack or Discord shows a card with the Codebility image, not an empty space.
50+
- A developer profile with no uploaded photo falls back to the same image rather than a blank card.
51+
52+
## Acceptance Criteria
53+
54+
- [ ] `apps/codebility/public/og-image.jpg` exists at 1200x630.
55+
- [ ] Loading `https://www.codebility.tech/og-image.jpg` returns the image, not a 404.
56+
- [ ] The homepage passes a link preview check with the image showing.
57+
- [ ] At least one inner page (services or careers) also previews correctly.
58+
- [ ] A profile with no photo previews with the fallback image.
59+
- [ ] No changes to the metadata blocks in any of the twelve files.
60+
61+
## Solution Hint
62+
63+
Treat these as advisory, not prescriptive.
64+
65+
The image needs designing rather than coding — 1200x630 is the standard OpenGraph size and renders well across all the platforms above. Logo plus a short tagline on the brand background is the usual pattern. Keep important content away from the outer edges, since some platforms crop slightly.
66+
67+
Save as JPG at the exact path `apps/codebility/public/og-image.jpg`, since that is the filename the metadata already points at. Keep it under about 300KB so previews fetch quickly.
68+
69+
Once it is deployed, run the homepage through the Facebook Sharing Debugger and use its scrape-again option. Platforms cache preview data aggressively, so an old blank result can persist for a while after the file goes live — forcing a re-scrape is usually necessary to see the change.
70+
71+
If you would rather use the Next.js convention instead, an `opengraph-image.jpg` in `app/` works too, but then the explicit `/og-image.jpg` references should be removed so there is one source of truth. The simple drop-in is fine.
72+
73+
## Reminders
74+
75+
- The metadata is already right across all twelve files. Resist the urge to change any of it.
76+
- Check the profile fallback specifically. It is easy to test only the homepage and miss that `profiles/[id]` uses the same image.
77+
- Three other icons declared in `app/layout.tsx` are also absent, but they do not matter and are not part of this task. The browser tab icon works, since `app/favicon.ico` exists and Next serves it automatically.
78+
79+
## Instructions
80+
81+
- Branch naming: `fix/og-image/Raineer`.
82+
- PR should include a screenshot of the preview rendering from a link preview checker.

‎docs/tasks/Raineer-FE/Public-Pages-SEO-Heading-Hygiene-Cleanup.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
The public marketing pages still have more than one `<h1>` each, which is the last piece of the on-page SEO markup. A page should have exactly one `<h1>` describing what that page is, with everything below it stepping down through `<h2>` and `<h3>`. Right now the homepage has two and the services page can show three at once. There is also a group of unused files carrying `<h1>`s that keep turning up whenever anyone looks into this.
66

7-
Separate from the markup, the OpenGraph image every public page references does not exist yet, so link previews come up blank. It is covered at the bottom under Assets Still Missing. It is not part of this task and not frontend work, but it is the other half of what is still open on SEO, so it is recorded here rather than being forgotten.
7+
Separate from the markup, the OpenGraph image every public page references does not exist yet, so link previews come up blank. That now has its own task, Add Missing OG Image For Link Previews, and is not part of this one. The background at the bottom under Assets Still Missing is kept for context.
88

99
## Background
1010

0 commit comments

Comments
 (0)