Skip to content

Commit 7155ef0

Browse files
committed
update frontendsupport domain from frontendrescue.scot to frontendrescue.com in meta tags, prerender script, and cutover documentation, remove SSR rendering from prerender script to generate static HTML with meta tags only
1 parent cc0e143 commit 7155ef0

3 files changed

Lines changed: 38 additions & 50 deletions

File tree

apps/frontendsupport/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
<meta property="twitter:card" content="summary_large_image" />
1414
<meta property="twitter:site" content="@dagda1" />
1515
<meta name="author" content="Paul Cowan" />
16-
<meta property="og:url" content="https://frontendrescue.scot" />
16+
<meta property="og:url" content="https://frontendrescue.com" />
1717
<meta property="og:description" content="Performance-first frontend." />
1818
<meta property="og:image" content="https://res.cloudinary.com/ddospxsc8/image/upload/w_1000,ar_16:9,c_fill,g_auto,e_sharpen/v1767264044/rescue_dieu8h.png" />
1919
<meta property="og:title" content="Frontend Rescue" />
2020
<meta property="og:image:alt" content="Frontend Rescue" />
2121
<meta name="twitter:title" content="Frontend Rescue" />
22-
<meta name="twitter:url" content="https://frontendrescue.scot" />
22+
<meta name="twitter:url" content="https://frontendrescue.com" />
2323
<meta name="twitter:description" content="Performance-first frontend." />
2424
<meta name="twitter:image:src" content="https://res.cloudinary.com/ddospxsc8/image/upload/w_1000,ar_16:9,c_fill,g_auto,e_sharpen/v1767264044/rescue_dieu8h.png" />
2525
<link

apps/frontendsupport/scripts/prerender.mts

Lines changed: 34 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { mkdir, readFile, writeFile } from 'fs/promises';
22
import { dirname, join } from 'path';
33
import { fileURLToPath } from 'url';
4-
import { createServer } from 'vite';
54

65
const __dirname = dirname(fileURLToPath(import.meta.url));
7-
const root = join(__dirname, '..');
8-
const clientDir = join(root, 'dist/client');
6+
const clientDir = join(__dirname, '../dist/client');
97

10-
const BASE_URL = 'https://frontendrescue.scot';
8+
const BASE_URL = 'https://frontendrescue.com';
119

1210
const DEFAULT_META = {
1311
title: 'Frontend Rescue',
@@ -37,52 +35,42 @@ function setMeta(html: string, key: string, value: string): string {
3735
}
3836

3937
async function prerender(): Promise<void> {
40-
const vite = await createServer({ root, appType: 'custom', server: { middlewareMode: true } });
41-
42-
try {
43-
const { render } = (await vite.ssrLoadModule('/src/entry-server.tsx')) as { render: (url: string) => string };
44-
const template = await readFile(join(clientDir, 'index.html'), 'utf-8');
45-
46-
const routeMeta = new Map<string, Meta>(STATIC_ROUTES.map((route) => [route, DEFAULT_META]));
47-
for (const post of await posts()) {
48-
routeMeta.set(`/posts/${post.slug}`, {
49-
title: post.title,
50-
description: post.description || DEFAULT_META.description,
51-
image: `${BASE_URL}/og/${post.slug}.png`,
52-
});
53-
}
54-
55-
for (const [route, meta] of routeMeta) {
56-
const appHtml = render(route);
57-
const values: Record<string, string> = {
58-
'og:url': `${BASE_URL}${route}`,
59-
'twitter:url': `${BASE_URL}${route}`,
60-
'og:title': meta.title,
61-
'og:image:alt': meta.title,
62-
'twitter:title': meta.title,
63-
'og:description': meta.description,
64-
'twitter:description': meta.description,
65-
'og:image': meta.image,
66-
'twitter:image:src': meta.image,
67-
};
68-
69-
let html = template;
70-
for (const [key, value] of Object.entries(values)) {
71-
html = setMeta(html, key, value);
72-
}
73-
html = html
74-
.replace(/<title>[^<]*<\/title>/, `<title>${meta.title}</title>`)
75-
.replace('<!--app-html-->', appHtml);
38+
const template = await readFile(join(clientDir, 'index.html'), 'utf-8');
39+
40+
const routeMeta = new Map<string, Meta>(STATIC_ROUTES.map((route) => [route, DEFAULT_META]));
41+
for (const post of await posts()) {
42+
routeMeta.set(`/posts/${post.slug}`, {
43+
title: post.title,
44+
description: post.description || DEFAULT_META.description,
45+
image: `${BASE_URL}/og/${post.slug}.png`,
46+
});
47+
}
7648

77-
const target = outputPath(route);
78-
await mkdir(dirname(target), { recursive: true });
79-
await writeFile(target, html, 'utf-8');
49+
for (const [route, meta] of routeMeta) {
50+
const values: Record<string, string> = {
51+
'og:url': `${BASE_URL}${route}`,
52+
'twitter:url': `${BASE_URL}${route}`,
53+
'og:title': meta.title,
54+
'og:image:alt': meta.title,
55+
'twitter:title': meta.title,
56+
'og:description': meta.description,
57+
'twitter:description': meta.description,
58+
'og:image': meta.image,
59+
'twitter:image:src': meta.image,
60+
};
61+
62+
let html = template;
63+
for (const [key, value] of Object.entries(values)) {
64+
html = setMeta(html, key, value);
8065
}
66+
html = html.replace(/<title>[^<]*<\/title>/, `<title>${meta.title}</title>`);
8167

82-
console.log(`Pre-rendered ${routeMeta.size} routes`);
83-
} finally {
84-
await vite.close();
68+
const target = outputPath(route);
69+
await mkdir(dirname(target), { recursive: true });
70+
await writeFile(target, html, 'utf-8');
8571
}
72+
73+
console.log(`Pre-rendered ${routeMeta.size} routes (head meta only)`);
8674
}
8775

8876
prerender().catch((error) => {

apps/frontendsupport/terraform/CUTOVER.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ Then the ALB, its listener and target group, and the two security groups (`front
6464
## 5. Verify
6565

6666
```
67-
curl -I https://frontendrescue.scot
68-
curl -s https://frontendrescue.scot/about | grep -o '<title>[^<]*</title>'
67+
curl -I https://frontendrescue.com
68+
curl -s https://frontendrescue.com/about | grep -o '<title>[^<]*</title>'
6969
```
7070

7171
Both should return 200 / the prerendered page.

0 commit comments

Comments
 (0)