Skip to content

feat(share): Instagram Story format export#3

Merged
Younesfdj merged 2 commits into
masterfrom
feat/instagram-story-export
Jun 30, 2026
Merged

feat(share): Instagram Story format export#3
Younesfdj merged 2 commits into
masterfrom
feat/instagram-story-export

Conversation

@Mawsis

@Mawsis Mawsis commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a 1080×1920 (9:16) Instagram Story format download/share, redesigned so a developer who has never seen GitFut instantly understands the concept and wants to make their own card.

A "Story format" button sits in the share actions under the card:

  • Mobile → native share sheet with the image attached (one tap into IG Stories).
  • Desktop → downloads {login}-gitfut-story.png.
  • A dismissed/failed mobile share falls back to download — the action never leaves the user empty-handed.

Design (cold-viewer conversion)

Optimized for the funnel "stranger-developer sees this in a story → gets it → makes their own":

  • Concept-first top: GITFUT + YOUR GITHUB, SCOUTED frames the card before the eye reaches it.
  • Active CTA: TRY YOUR CARD ON GITFUT.COM → in brand green (replaces the passive personal-URL dead-end). Bookends the green wordmark.
  • IG safe zones: wordmark + CTA pinned inside y:250–1670 so Instagram's own top/bottom chrome never occludes them; card ~606px, optically centered high.
  • Figure/ground: neutral near-black stage + a rim-glow / dark-moat / drop-shadow separator lifts the card off the background on every finish (red-on-red, grey-on-grey, navy-on-navy) instead of dissolving into a same-hue wash.
  • Archetype is the card's one-line caption (length-clamped, tier accent).

PlayerCard is untouched — the FUT homage stays intact; all changes are in StoryFrame.tsx + its capture path.

How it works

Reuses the existing html-to-image capture pipeline — no new API route or dependency. The hidden StoryFrame mounts off-screen in ResultView so its art/fonts decode for capture (same technique as lib/capture.ts); captured at pixelRatio: 1 (already native res).

Test plan

  • npm run build passes (TypeScript clean)
  • Real html-to-image export verified at exactly 1080×1920, no dev-mode artifacts
  • Rendered + reviewed across all 7 finishes + founder + long-archetype edge case
  • Adversarial multi-agent design review → figure/ground + tagline + balance fixes applied → re-verified "fixed-ship" on all previously-failing tiers
  • Desktop downloads directly; mobile share path falls back safely
  • Manual: native share sheet → Instagram Stories on a real device

Mawsis added 2 commits June 29, 2026 19:17
Add a 1080×1920 (9:16) story-format download/share so users can post
their card to Instagram Stories.

- StoryFrame.tsx: branded 1080×1920 canvas wrapping PlayerCard
  (GITFUT wordmark, tier glow, archetype + handle), theme-aware.
- ResultView.tsx: mount one hidden StoryFrame off-screen so its art
  and fonts paint/decode for capture (same technique as lib/capture.ts).
- CardActions.tsx: "Story format" action — captures the frame at
  pixelRatio 1 (already native res). On mobile it opens the native
  share sheet with the image attached (one tap into IG Stories); on
  desktop it downloads the PNG. A dismissed/failed share falls back to
  download so the action never leaves the user empty-handed.

Reuses the existing html-to-image capture pipeline — no new API route
or dependency.
Rework the Instagram-Story frame so a developer who has never seen GitFut
instantly gets the concept and wants their own card.

- Concept-first top stack: GITFUT + "YOUR GITHUB, SCOUTED" sets the frame
  before the eye reaches the card.
- Active CTA: "TRY YOUR CARD ON GITFUT.COM →" in brand green, one line,
  replacing the passive personal gitfut.com/{login} dead-end.
- IG safe zones: wordmark + CTA pinned inside y:250–1670 so Instagram's
  top/bottom chrome never occludes them; card ~606px, optically centred.
- Figure/ground fix: neutral near-black stage with only a faint tier
  room-tint + a rim-glow / dark-moat / drop-shadow separator around the
  card, so it lifts off the background on every finish (red-on-red,
  grey-on-grey, navy-on-navy) instead of dissolving into a same-hue wash.
- Archetype is the card's one-line caption (length-clamped, tier accent).

Verified across all 7 finishes + founder + a long-archetype edge case;
PlayerCard is untouched (the FUT homage stays intact).
@Younesfdj Younesfdj merged commit 433fec6 into master Jun 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants