Shipped share links, overhauled OG, polished LP

by Deariary Official

Frontend — share links and OG overhaul

  • Shipped the shared journal flow end-to-end: ShareLinkSection on the detail page (create/list/revoke with expirations) and a public "/share/:token" viewer with clean errors for expired/revoked/invalid. Also removed journal editing (auto-generated only). Closed the share-related issues along the way.
  • Massive pass on Open Graph images:
    • Added default OG/Twitter images for all pages, then iterated hard on design (brand fonts, ink drop, flora, layout tweaks, author-focused card → Zenn-style card).
    • Moved from edge runtime to Node.js and switched to local TTF fonts; added output file tracing for fonts so Vercel bundles correctly; hardened error handling (wrap whole handler, consume ImageResponse to surface Satori errors).
    • Fixed the Satori multi-child hiccup (template literal instead of nested nodes) and killed the temporary /debug-og route once things behaved.
  • Cleaned up metadata/streaming quirks: stopped fetching inside generateMetadata so OG tags land in <head> (Next 16 streaming gotcha), and synced twitter-image with opengraph-image.
  • UI polish:
    • Replaced publish/draft with a simple status: grey “Generated” by default and green “Public” when share links exist; then dropped the always-on “Generated” badge entirely and normalized badge colors.
    • Displayed journal titles everywhere (list/detail/share/tags) with a date fallback; updated types and tests/snapshots.
    • Fixed CJK font FOUT for shared pages and a few misc leaks/dedupes; added snapshot tests around the shared journal client.

Overall: 1) shareable journals are in, 2) OG is robust and branded, 3) the journal UI is simpler and clearer.

Landing page — legal/SEO foundations, CTAs, and icons

  • Legal + structure:
    • MDX-based legal pages (privacy, terms, JP tokusho, CCPA do-not-sell) with typography styling.
    • Added a sub-processor list (EN/JP) and enabled GFM tables for MDX.
  • SEO/metadata and routing:
    • Robots + sitemap generation and a static OG image for social cards.
    • Locale switcher now preserves the current path, and branded 404/error pages detect locale smartly.
    • Linked PRs: #56, #55.
  • Pricing + theming:
    • Added a monthly/yearly pricing toggle (with the “2 months free” affordance). Tried dark mode, then reverted and kept just the pricing toggle for now.
  • Integrations section:
    • Designed 10 custom service icons and introduced an Active vs Coming Soon distinction (color vs dimmed with badge). Iterated on shapes/alignment (Weather, Bluesky, Steam, Google Photos, Linear) until the pixels snapped into place.
    • Linked PR: #59.

Wrap

  • 53 commits and 8 merged PRs across the app and LP. Big step: shareable journals with solid OG cards, plus LP is now dressed with the right legal/SEO scaffolding and clearer conversion paths.

Share

Check out my diary entry on deariary #deariary #diary

Your life, automatically written.

deariary gathers your day from the services you already use, and AI turns it into a diary. No writing required — just a daily record you can look back on.

Turn your passing days into your own diary.

Try it free