You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
22:38:43 [ERROR][astro-link-validator] ❌ Found 2 broken links:
127
-
\n📄 index.html:
128
-
🔗 /services/web-development
129
-
File not found: services/web-development
130
-
Text: "Improve Your Product"
131
-
🔗 /services/consulting
132
-
File not found: services/consulting
133
-
Text: "Start from scratch"
134
-
135
122
## Tags
136
123
137
124
Can we add a markdown page to explain what each tag is, and use those pages instead of src/content/_tagList.ts to define the tags available?
@@ -140,118 +127,44 @@ Can we add a markdown page to explain what each tag is, and use those pages inst
140
127
141
128
Looking at the social-card endpoint implementation, it's designed to work with third-party screenshot services, not the social networks themselves.
142
129
143
-
Here's how it works:
144
-
145
-
The Two Formats
146
-
HTML format (format=html or default): Returns a full HTML page with inline CSS styled as a 1200x630px card - the standard Open Graph image dimensions.
147
-
148
-
OG format (format=og): Returns JSON with Open Graph meta tags, where the og:image URL points back to the HTML version of the card.
149
-
150
-
How Social Networks Actually Work
151
-
Social networks like Twitter, Facebook, LinkedIn, etc. don't screenshot HTML pages. They expect:
152
-
153
-
- Direct image URLs (PNG, JPEG, etc.)
154
-
- Standard dimensions (1200x630px for most platforms)
155
-
156
-
**The Intended Workflow**
157
-
158
-
This endpoint is designed to integrate with screenshot services like:
159
-
160
-
- Puppeteer or Playwright - Run your own screenshot service
161
-
- Vercel OG Image Generation - Vercel's built-in service
162
-
- Cloudinary - Can fetch and screenshot URLs
163
-
- ScreenshotOne or ApiFlash - Dedicated screenshot APIs
164
-
- Satori - Convert HTML/CSS to SVG/PNG
165
-
166
-
**Current Limitation**
167
-
168
-
As implemented, this endpoint would need an additional step to be useful for social sharing:
169
-
170
-
Your endpoint → Screenshot service → Image file → Social networks
171
-
172
-
Better Approaches
173
-
174
-
For a production Astro site, you'd typically:
175
-
176
-
- Use @vercel/og or Satori to generate actual images server-side
177
-
- Pre-generate images at build time for static content
178
-
- Use a screenshot service that can be called from your endpoint to return actual images
179
-
180
-
**Social Media Preview Generators**
181
-
182
-
There are several integrations available that vary based on the library they use to create an image file to snapshot, whether they allow the template for generating the image to be modified, and what options they provide for output.
- Moderately popular option (~230 weekly d/l). Generates images at **run time**.
194
-
- Uses Vercel's **Satori** library for rendering (entirely done in JS with limitations on what CSS can be used). Satori is a library for generating SVG strings from pure HTML and CSS.
195
-
- Size of final card can be set.
196
-
- Seems opinionated, but it might be possible to have a lot of control (not sure).
- Uses **Satori**. Has dependencies on [`@resvg/resvg-wasm`](https://www.npmjs.com/package/@resvg/resvg-wasm) and Sharp. Middleware integration. Generates images at **run time**.
202
-
- Provides element to add OG tags in document `<head>`.
203
-
- Very flexible, you can provide the Astro template to generate the card.
204
-
205
-
[Astro Open Graph Image](https://www.npmjs.com/package/astro-og-image)
206
-
207
-
- Uses **Puppeteer**. Generates images at **build time**.
208
-
- You can provide the Astro template to generate the card.
209
-
- Requires providing a `baseHead` property in page templates.
210
-
211
-
[Astro Open Graph Image Generator](https://www.npmjs.com/package/@cyberkoalastudios/og-image-generator)
212
-
213
-
- Uses **Puppeteer**. Has dependencies on [`canvaskit-wasm`](https://www.npmjs.com/package/@resvg/resvg-wasm) and Sharp.
214
-
- You can set the background image. No option to set the size of the card.
215
-
- Manually add OF properties on `<head>` element. Flexible.
216
-
217
-
## @TODO: Use Confetti on CTA forms
130
+
## Use Confetti on CTA forms
218
131
219
132
`canvas-confetti`
220
133
`https://github.com/catdad/canvas-confetti`
221
134
`https://www.kirilv.com/canvas-confetti/`
222
135
223
-
## @TODO: Use the Page Visibility API to pause videos, image carousels, and animations
136
+
## Use the Page Visibility API to pause videos, image carousels, and animations
224
137
225
138
Stop unnecessary processes when the user doesn't see the page or inversely to perform background actions.
226
139
227
-
## @TODO: "Add to Calendar" button
140
+
## "Add to Calendar" button
228
141
229
142
Google Calendar, Apple Calendar, Yahoo Calender, Microsoft 365, Outlook, and Teams, and generate iCal/ics files (for all other calendars and cases).
## @TODO: SCSS Use clothoid corners with border-radius
151
+
## SCSS Use clothoid corners with border-radius
239
152
240
153
`https://onotakehiko.dev/clothoid/`
241
154
242
-
`@TODO: SCSS Make sure accent-color or styling for checkboxes/radio button groups is set up. Sets the colour used by checkboxes and radio buttons, as well as range fields and progress indicators. The accent colour is inherited`
155
+
`SCSS Make sure accent-color or styling for checkboxes/radio button groups is set up. Sets the colour used by checkboxes and radio buttons, as well as range fields and progress indicators. The accent colour is inherited`
243
156
244
157
```scss
245
158
:root{
246
159
accent-color : #696;
247
160
}
248
161
```
249
162
250
-
## @TODO: Refactor modals
163
+
## Refactor modals
251
164
252
165
Modals should be wrapped in the `<dialog>` element and use programmatic methods to display - `showModal()` to disable the area outside of the modal (handles `esc` keypress natively) and `show()` to allow interaction outside the modal, along with `close()`.
253
166
254
-
## @TODO: Add for iOS
167
+
## Add for iOS
255
168
256
169
Specifying a Launch Screen Image
257
170
@@ -383,33 +296,6 @@ Adds some custom directives:
383
296
384
297
Allows any Mastodon instance to discover your Mastodon profile directly from your own domain.
385
298
386
-
## Preload hero images, usually loaded after stylesheets and fonts
387
-
388
-
```font
389
-
<head>
390
-
<!-- Hey browser! Please preload this important responsive image -->
391
-
<link
392
-
rel="preload"
393
-
as="image"
394
-
imagesrcset="
395
-
image-400.jpg 400w,
396
-
image-800.jpg 800w,
397
-
image-1600.jpg 1600w"
398
-
imagesizes="100vw"
399
-
>
400
-
</head>
401
-
<body>
402
-
<img
403
-
srcset="
404
-
image-400.jpg 400w,
405
-
image-800.jpg 800w,
406
-
image-1600.jpg 1600w"
407
-
sizes="100vw"
408
-
alt="..."
409
-
>
410
-
</body>
411
-
```
412
-
413
299
## Refactor social neworks in Authors collection to Contact collection format
414
300
415
301
The contact data collection uses an array of social networks, with keys:
0 commit comments