Social MediaStable

Social Frame

Sourcecomponents/social/SocialFrame.astro

The export canvas

Every Alchemy social template sits on this frame — a real pixel box at the exact export size, so a screenshot of the canvas is the finished asset. Three formats cover the feed, stories and LinkedIn; five surfaces set the mood. Content lives inside a generous safe area so the platform UI never crops anything important.

Portrait · Feed & Carousel 1080 × 1350
Story · Full-screen 1080 × 1920
LinkedIn · Landscape link share 1200 × 627

Formats

  • Portrait — 1080 × 1350 (4:5) — the tallest a feed post can be, so it takes the most screen. The same size doubles as a carousel slide.
  • Story — 1080 × 1920 (9:16) — full-screen. Wider top and bottom margins keep content clear of the profile row, caption and reply bar.
  • LinkedIn — 1200 × 627 (~1.91:1) — the landscape link-share card. Short and wide, so keep copy to a headline and one line.

Surfaces

  • cream — the default warm Alchemy paper, dark text.
  • paper — plain white, dark text.
  • violet — brand violet, light text. For loud statements.
  • ink — near-black, light text. Quiet and premium.
  • image — a photo behind a dark wash, light text. For case shots and portraits.

Props

PropTypeDefaultNotes
format 'portrait' | 'story' | 'linkedin' 'portrait' portrait = 1080×1350 (feed + carousel). story = 1080×1920 (full-screen). linkedin = 1200×627 (landscape link share).
surface 'cream' | 'violet' | 'ink' | 'paper' | 'image' 'cream' The background. cream/paper carry dark text; violet/ink/image carry light text.
image string — Background photo. Only used with surface="image".
overlay number 0.42 Strength of the dark wash over the image (0–1), so text stays readable.
brand boolean true Show the small Alchemy logo + handle footer.
handle string 'alchemy.zuerich' The @handle shown next to the logo.

Usage

Wrap any template content in a frame. To export, open the frame route and screenshot the .sf box at 1× — you get a pixel-perfect 1080-wide asset.

<!-- Feed post / carousel slide -->
<SocialFrame format="portrait" surface="cream">
  ...template content...
</SocialFrame>

<!-- Full-screen story over a photo -->
<SocialFrame format="story" surface="image"
  image="/images/cases/tanner/hero.jpg" overlay={0.5}>
  ...template content...
</SocialFrame>

Rules

Do

Keep every word and logo inside the safe area.

Pick a surface with enough contrast for the text on top.

Don't

Resize the canvas. The pixel size is the export size.

Put light text on cream or paper.