From 62c724a9e0cd20bc74a322e6bc0cdbf9770273a3 Mon Sep 17 00:00:00 2001 From: 0xkkonrad Date: Tue, 26 May 2026 23:38:40 +0000 Subject: [PATCH 01/15] chore(content): bump submodule to mono@6389688 mirror Picks up the four content additions from peanutprotocol/mono#24: - iso2 field on every country entity + locale frontmatter - content/team/en.md singleton - content/landing/en.md singleton - generated/testimonials.json --- src/content | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content b/src/content index fd82a94fe..65a18b81d 160000 --- a/src/content +++ b/src/content @@ -1 +1 @@ -Subproject commit fd82a94fe5c174849e2c30ace83a1a19bc3281dc +Subproject commit 65a18b81d369cb5bd19f916d0d80d900968b70ee From 7ccd7e5f720cd0ae88e090a86af39d3e2852b244 Mon Sep 17 00:00:00 2001 From: 0xkkonrad Date: Tue, 26 May 2026 23:38:57 +0000 Subject: [PATCH 02/15] =?UTF-8?q?refactor(seo):=20read=20iso2=20from=20cou?= =?UTF-8?q?ntry=20frontmatter,=20drop=20slug=E2=86=92iso2=20map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DestinationGrid kept a hardcoded 27-entry slug→ISO-3166 alpha-2 map for flag rendering. mono now denormalizes iso2: into every country page's frontmatter, so the loader exposes it on CountrySEO and the grid reads seo.iso2 directly. New mono countries get flags automatically. --- src/components/Marketing/DestinationGrid.tsx | 32 +------------------- src/data/seo/corridors.ts | 12 ++++++-- 2 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/components/Marketing/DestinationGrid.tsx b/src/components/Marketing/DestinationGrid.tsx index 3f84b6e16..45dfc6b19 100644 --- a/src/components/Marketing/DestinationGrid.tsx +++ b/src/components/Marketing/DestinationGrid.tsx @@ -6,36 +6,6 @@ import { localizedPath } from '@/i18n/config' import { CARD_HOVER } from '@/components/Marketing/mdx/constants' import type { Locale } from '@/i18n/types' -const SLUG_TO_ISO2: Record = { - argentina: 'ar', - australia: 'au', - brazil: 'br', - canada: 'ca', - colombia: 'co', - 'costa-rica': 'cr', - indonesia: 'id', - japan: 'jp', - kenya: 'ke', - malaysia: 'my', - mexico: 'mx', - pakistan: 'pk', - peru: 'pe', - philippines: 'ph', - poland: 'pl', - portugal: 'pt', - singapore: 'sg', - 'south-africa': 'za', - spain: 'es', - sweden: 'se', - tanzania: 'tz', - thailand: 'th', - turkey: 'tr', - 'united-arab-emirates': 'ae', - 'united-kingdom': 'gb', - 'united-states': 'us', - vietnam: 'vn', -} - interface DestinationGridProps { /** If provided, only show these country slugs */ countries?: string[] @@ -58,7 +28,7 @@ export function DestinationGrid({ countries, exclude, title = 'Send money to', l if (!seo) return null const countryName = getCountryName(slug, locale) - const flagCode = SLUG_TO_ISO2[slug] + const flagCode = seo.iso2 return ( diff --git a/src/data/seo/corridors.ts b/src/data/seo/corridors.ts index b40a3f2fe..104ed13a6 100644 --- a/src/data/seo/corridors.ts +++ b/src/data/seo/corridors.ts @@ -22,6 +22,9 @@ import { displayNameFromContent } from './utils' export interface CountrySEO { name: string + /** ISO 3166-1 alpha-2 code, denormalized from the country entity into + * generated frontmatter. Drives flag rendering in DestinationGrid. */ + iso2?: string } export interface Corridor { @@ -32,9 +35,14 @@ export interface Corridor { function loadCountries(): Record { const result: Record = {} for (const slug of listContentSlugs('countries')) { - const content = readPageContent<{ name?: unknown; published?: boolean }>('countries', slug, 'en') + const content = readPageContent<{ name?: unknown; iso2?: unknown; published?: boolean }>( + 'countries', + slug, + 'en' + ) if (content && content.frontmatter.published === false) continue - result[slug] = { name: displayNameFromContent(slug, content?.frontmatter) } + const iso2 = typeof content?.frontmatter.iso2 === 'string' ? content.frontmatter.iso2 : undefined + result[slug] = { name: displayNameFromContent(slug, content?.frontmatter), iso2 } } return result } From 7ee0796bd7c33688085568ddd20cc99479734650 Mon Sep 17 00:00:00 2001 From: 0xkkonrad Date: Tue, 26 May 2026 23:38:57 +0000 Subject: [PATCH 03/15] refactor(team): read members from singleton content, delete src/data/team.ts Team bios + roles are content owned by marketing/leadership; lived in peanut-ui as a static TS export. mono now ships content/team/{lang}.md as singleton frontmatter (members: array, same shape). team/page.tsx reads via readSingletonContentLocalized and adopts locale fallback. --- src/app/[locale]/(marketing)/team/page.tsx | 27 +++++++++++-- src/data/team.ts | 45 ---------------------- 2 files changed, 24 insertions(+), 48 deletions(-) delete mode 100644 src/data/team.ts diff --git a/src/app/[locale]/(marketing)/team/page.tsx b/src/app/[locale]/(marketing)/team/page.tsx index 5f523c846..09790782f 100644 --- a/src/app/[locale]/(marketing)/team/page.tsx +++ b/src/app/[locale]/(marketing)/team/page.tsx @@ -1,7 +1,6 @@ import { notFound } from 'next/navigation' import { type Metadata } from 'next' import { generateMetadata as metadataHelper } from '@/app/metadata' -import { TEAM_MEMBERS } from '@/data/team' import { MarketingHero } from '@/components/Marketing/MarketingHero' import { MarketingShell } from '@/components/Marketing/MarketingShell' import { JsonLd } from '@/components/Marketing/JsonLd' @@ -9,6 +8,26 @@ import { Card } from '@/components/0_Bruddle/Card' import { SUPPORTED_LOCALES, getAlternates, isValidLocale } from '@/i18n/config' import type { Locale } from '@/i18n/types' import { getTranslations } from '@/i18n' +import { readSingletonContentLocalized } from '@/lib/content' + +// Team data lives in mono at content/team/{lang}.md frontmatter — singleton +// content authored by marketing/leadership, shipped via the mirror. +interface TeamMember { + slug: string + name: string + role: string + bio: string + image?: string + social?: { + linkedin?: string + twitter?: string + github?: string + } +} + +interface TeamFrontmatter { + members?: TeamMember[] +} interface PageProps { params: Promise<{ locale: string }> @@ -43,13 +62,15 @@ export default async function TeamPage({ params }: PageProps) { if (!isValidLocale(locale)) notFound() const i18n = getTranslations(locale as Locale) + const team = readSingletonContentLocalized('team', locale) + const members = team?.frontmatter.members ?? [] const orgSchema = { '@context': 'https://schema.org', '@type': 'Organization', name: 'Peanut', url: 'https://peanut.me', - member: TEAM_MEMBERS.map((m) => ({ + member: members.map((m) => ({ '@type': 'Person', name: m.name, jobTitle: m.role, @@ -65,7 +86,7 @@ export default async function TeamPage({ params }: PageProps) {
- {TEAM_MEMBERS.map((member) => ( + {members.map((member) => ( {member.image ? ( Date: Tue, 26 May 2026 23:38:57 +0000 Subject: [PATCH 04/15] refactor(tweets): import testimonials manifest from peanut-content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1,400 lines of curated tweets moved out of src/constants/tweets.json into mono's content/_system/generated/testimonials.json (same shape). tweets.consts.ts now imports from @/content/generated/testimonials.json β€” filter + sort + cap logic unchanged. Marketing can refresh quarterly via a mono PR instead of a peanut-ui code change. --- src/constants/tweets.consts.ts | 5 +- src/constants/tweets.json | 1403 -------------------------------- 2 files changed, 3 insertions(+), 1405 deletions(-) delete mode 100644 src/constants/tweets.json diff --git a/src/constants/tweets.consts.ts b/src/constants/tweets.consts.ts index 88ce29500..7fd8d5839 100644 --- a/src/constants/tweets.consts.ts +++ b/src/constants/tweets.consts.ts @@ -61,8 +61,9 @@ interface TweetsData { tweets: Tweet[] } -// Load tweets from tweets.json (same folder) -import tweetsJson from './tweets.json' +// Tweets manifest is authored in mono at content/_system/generated/testimonials.json +// and ships to peanut-ui through the peanut-content mirror. Same shape as before. +import tweetsJson from '@/content/generated/testimonials.json' const MAX_TWEETS = 100 const MAX_PER_AUTHOR = 3 diff --git a/src/constants/tweets.json b/src/constants/tweets.json deleted file mode 100644 index 6127059f9..000000000 --- a/src/constants/tweets.json +++ /dev/null @@ -1,1403 +0,0 @@ -{ - "total_positive_mentions": 17, - "date_range": "2025-10-01 to 2025-11-26", - "scoring": "60% text enthusiasm + 30% user influence + 10% engagement | bots/shills capped | builders/VCs/EF boosted", - "note": "Curated shortlist per LP audit (Mar 2026). Prioritises concrete savings, real-world use cases, and genuine delight.", - "tweets": [ - { - "url": "https://x.com/arbitrum/status/1985785756930187576", - "author": "Arbitrum", - "handle": "@arbitrum", - "content": "Heading to Buenos Aires for Devconnect? πŸ‡¦πŸ‡· You’ll want @joinpeanut payments app! - send/receive USD payments to frens - instantly convert it into Argentine peso - spend it locally at stores and restaurants - earn rewards and repeat Peanut Everywhere. Arbitrum Everywhere", - "timestamp": "2025-11-04T19:06:33.000Z", - "verified": true, - "followers_count": 508127, - "avatar": "https://pbs.twimg.com/profile_images/1952411676621295616/KUOmiy3l.jpg", - "impact_score": 0.99, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G47qQ4mXsAAUdFH.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/arbitrum/status/1992999478295502877", - "author": "Arbitrum", - "handle": "@arbitrum", - "content": "crypto payments up and to the right much higher @joinpeanut πŸ₯œ", - "timestamp": "2025-11-24T16:51:18.000Z", - "verified": true, - "followers_count": 508127, - "avatar": "https://pbs.twimg.com/profile_images/1952411676621295616/KUOmiy3l.jpg", - "impact_score": 0.99, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/diego_defi/status/1993341996627267698", - "author": "Diego DeFi πŸ‡¦πŸ‡·", - "handle": "@diego_defi", - "content": "Cuando conocΓ­ @joinpeanut lo probé… y como vi lo ΓΊtil que era, lo compartΓ­ como siempre hago. Nunca imaginΓ© que tantas personas usarΓ­an mi invitaciΓ³n. Y ahora: $500 USD para gastar gracias a ustedes πŸ₯œπŸ’Έ", - "timestamp": "2025-11-25T15:32:21.000Z", - "verified": true, - "followers_count": 34827, - "avatar": "https://pbs.twimg.com/profile_images/1905627028155502592/TezgRBC_.jpg", - "impact_score": 0.98, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1993340416100323328/vid/avc1/352x270/1YCZYGDXTzixcfq3.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/0xPumbi/status/1992624069657649220", - "author": "pumbi.eth | devconnect πŸ‡¦πŸ‡·", - "handle": "@0xPumbi", - "content": "Sunday morning. I head to a toy store to pick up some gifts for my kids. I pay with @joinpeanut. I get 20% cashback!! I fkin love Peanut, man.", - "timestamp": "2025-11-23T15:59:34.000Z", - "verified": false, - "followers_count": 18742, - "avatar": "https://pbs.twimg.com/profile_images/1808180527733620754/R19TequE.jpg", - "impact_score": 0.97, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6c5B6FWkAAqost.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/tkstanczak/status/1987523341134016699", - "author": "Tomasz K. StaΕ„czak", - "handle": "@tkstanczak", - "content": "peanut points to charity, I guess, works Pix, Mercado Pago, ACH, SEPA it does not offer privacy yet, runs on Arbitrum I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border.", - "timestamp": "2025-11-09T14:11:05.000Z", - "verified": true, - "followers_count": 112400, - "avatar": "https://pbs.twimg.com/profile_images/1085263128521293827/yA7Jc_5u.jpg", - "impact_score": 0.97, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/coinempress/status/1993349992669434169", - "author": "vana πŸ”œ devconnect πŸ‡¦πŸ‡·", - "handle": "@coinempress", - "content": "28 people joined @joinpeanut with my invite after one genuine post. real adoption > forced marketing", - "timestamp": "2025-11-25T16:04:07.000Z", - "verified": true, - "followers_count": 52319, - "avatar": "https://pbs.twimg.com/profile_images/1905260917056589824/mAqMCh1h.jpg", - "impact_score": 0.96, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1993349938105790464/vid/avc1/320x692/idZNNMyP4Dz9J5co.mp4" - } - ], - "visible": true - }, - { - "url": "https://x.com/on_datawarlock/status/1992974740689158301", - "author": "Datawarlock πŸͺ“", - "handle": "@on_datawarlock", - "content": "@joinpeanut just blasted past a quarter MILLION dollars in @USDC spent through QR payments on @arbitrum. This is what real world crypto payments look like", - "timestamp": "2025-11-24T15:13:00.000Z", - "verified": true, - "followers_count": 29841, - "avatar": "https://pbs.twimg.com/profile_images/1680218739143507969/5DfVVSvx.jpg", - "impact_score": 0.95, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6h3RyeaUAAi8UV.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/cxqmaggie/status/1993393875059441999", - "author": "maggie", - "handle": "@cxqmaggie", - "content": "bought the coolest cowgirl boots from arandu talabateria in recoleta using @joinpeanut – i’m ready for patagonia πŸŽπŸ”οΈ", - "timestamp": "2025-11-25T18:58:29.000Z", - "verified": true, - "followers_count": 41289, - "avatar": "https://pbs.twimg.com/profile_images/1818038467776917504/Gj8mUdB8.jpg", - "impact_score": 0.94, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6n1JroWgAATraN.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6n1JroWEAAHzss.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/hummusonrails/status/1993351948372754451", - "author": "Ben Greenberg", - "handle": "@hummusonrails", - "content": "Privacy is rising, real PMF is here, and apps like @joinpeanut on @arbitrum prove it", - "timestamp": "2025-11-25T16:11:53.000Z", - "verified": true, - "followers_count": 28567, - "avatar": "https://pbs.twimg.com/profile_images/1940377733504094208/-iKSY-FV.jpg", - "impact_score": 0.93, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1993351337963048960/vid/avc1/480x270/YkRo7tDTCl54DRE7.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/0xSuperKalo/status/1991674399234175167", - "author": "superKalo.eth", - "handle": "@0xSuperKalo", - "content": "I tested Peanut myself this week and got ~7% better ARS rate compared to Revolut βœ… ... Shout-out to @joinpeanut for making something meaningful πŸ‘", - "timestamp": "2025-11-21T01:05:54.000Z", - "verified": false, - "followers_count": 22189, - "avatar": "https://pbs.twimg.com/profile_images/1869852109824299008/L1ow2MKZ.jpg", - "impact_score": 0.92, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6PYiQ4XkAA-A0U.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/on_datawarlock/status/1989885400387870990", - "author": "Datawarlock πŸͺ“", - "handle": "@on_datawarlock", - "content": "Hockey stick growth for @joinpeanut's QR fiat spend feature in Argentina @joinpeanut have now processed over USD $100K on @arbitrum", - "timestamp": "2025-11-16T02:37:04.000Z", - "verified": true, - "followers_count": 29841, - "avatar": "https://pbs.twimg.com/profile_images/1680218739143507969/5DfVVSvx.jpg", - "impact_score": 0.92, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5197XWbIAAeUN-.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/kushagrasarathe/status/1991642890607685779", - "author": "kushagra.eth | Devconnect πŸ‡¦πŸ‡·", - "handle": "@kushagrasarathe", - "content": "if you are still sleeping on @joinpeanut whats the point of your existence? we shipped the best app for you to pay anywhere", - "timestamp": "2025-11-20T23:00:42.000Z", - "verified": false, - "followers_count": 19233, - "avatar": "https://pbs.twimg.com/profile_images/1867450825167224832/8bXUNWHwZ.jpg", - "impact_score": 0.91, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6O8pqsWoAEK6_w.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/on_datawarlock/status/1988300376878293106", - "author": "Datawarlock πŸͺ“", - "handle": "@on_datawarlock", - "content": "πŸ₯œ @joinpeanut just wrapped an impressive week on @arbitrum β†’ $19.8K in new payment volume via @zerodev_app smart accounts β†’ Total payments now at $49K, and climbing πŸš€ That’s roughly 20,000 @Uber rides in Argentina.", - "timestamp": "2025-11-11T17:38:45.000Z", - "verified": true, - "followers_count": 29841, - "avatar": "https://pbs.twimg.com/profile_images/1680218739143507969/5DfVVSvx.jpg", - "impact_score": 0.91, - "is_reply": true, - "reply_to_url": "https://x.com/BFreshHB/status/1987912195489878346", - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5fajdkaMAAqTP9.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5far_obcAIVrOQ.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/leeederek/status/1986916400653607231", - "author": "Derek Lee", - "handle": "@leeederek", - "content": "first of many purchases with @joinpeanut for a ChoripΓ‘n! βœ… took 5s βœ… better rate than Dollar Blue βœ… 10% cash back βœ… cute UX βœ… delicious", - "timestamp": "2025-11-07T21:59:19.000Z", - "verified": false, - "followers_count": 18412, - "avatar": "https://pbs.twimg.com/profile_images/1948370491212775424/nMrSzewC.jpg", - "impact_score": 0.9, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5LxHmlWUAAI2On.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5LxHnEWEAAkGaK.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5LxHmlWsAAK3nU.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/stutireal/status/1993417479448936657", - "author": "Stuti", - "handle": "@stutireal", - "content": "Payments β†’ LatAm apps everywhere… @joinpeanut was crushing it on mindshare and app experience (loved the pink too)", - "timestamp": "2025-11-25T20:32:17.000Z", - "verified": true, - "followers_count": 25891, - "avatar": "https://pbs.twimg.com/profile_images/1980999778231058432/MtO6NX39.jpg", - "impact_score": 0.89, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": true - }, - { - "url": "https://x.com/Emmy_Wilz_01/status/1993198570225238514", - "author": "Emmy Wilz (πŸ’™,🧑)", - "handle": "@Emmy_Wilz_01", - "content": "@joinpeanut is too easy. Too smooth. Too convenient. Too… right. And it blows my mind that more people aren’t screaming about this.", - "timestamp": "2025-11-25T06:02:25.000Z", - "verified": true, - "followers_count": 22018, - "avatar": "https://pbs.twimg.com/profile_images/1949406151906312192/3aIUcXqB.jpg", - "impact_score": 0.88, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6lDiA1XUAA7qRL.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/Emmy_Wilz_01/status/1988569730118983756", - "author": "Emmy Wilz (πŸ’™,🧑)", - "handle": "@Emmy_Wilz_01", - "content": "You ever see a product so smooth that you start wondering… why didn’t this exist sooner? 😭 That’s exactly how I felt when I came across @joinpeanut, an invite-only app that makes payments feel effortless. Here’s the crazy part β€” it runs on @Arbitrum.", - "timestamp": "2025-11-12T11:29:04.000Z", - "verified": true, - "followers_count": 22018, - "avatar": "https://pbs.twimg.com/profile_images/1949406151906312192/3aIUcXqB.jpg", - "impact_score": 0.88, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5jRoD1XwAA0Is-.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/timokonkwo_/status/1993438728761885106", - "author": "Tim | Luxen Labs", - "handle": "@timokonkwo_", - "content": "Peanut @joinpeanut needs to give me an OG badge for the kind of volume I did on the app in BA πŸ‡¦πŸ‡· gud tek", - "timestamp": "2025-11-25T21:56:43.000Z", - "verified": false, - "followers_count": 14012, - "avatar": "https://pbs.twimg.com/profile_images/1756479429289639936/kveuJ4km.jpg", - "impact_score": 0.87, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": true - }, - { - "url": "https://x.com/Emmy_Wilz_01/status/1993233039208395149", - "author": "Emmy Wilz (πŸ’™,🧑)", - "handle": "@Emmy_Wilz_01", - "content": "Peanut Shows How Crypto Payments Actually Workβ€”$250,000+ Spent on @arbitrum Crypto adoption isn’t just about speculation or trading. It’s about real people using crypto in real-world scenariosβ€”and @joinpeanut just proved it.", - "timestamp": "2025-11-25T08:19:23.000Z", - "verified": true, - "followers_count": 22018, - "avatar": "https://pbs.twimg.com/profile_images/1949406151906312192/3aIUcXqB.jpg", - "impact_score": 0.87, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6li4p2WAAAnCdS.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/0xmelch/status/1989765566219821300", - "author": "Melch", - "handle": "@0xmelch", - "content": "Big congratulations to the @joinpeanut team. In less than 2 min I made and funded an account and paid for gelato via mercadopago at a 20% savings to what my credit card would have charged me. It has been a while since I’ve felt this kind of magic in crypto.", - "timestamp": "2025-11-15T18:40:53.000Z", - "verified": false, - "followers_count": 15123, - "avatar": "https://pbs.twimg.com/profile_images/1433234608330526749/q4uMEa8h.jpg", - "impact_score": 0.87, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G50ROikWYAAodJi.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/DAppaDanDev/status/1992935274523840902", - "author": "DappaDan", - "handle": "@DAppaDanDev", - "content": "convincing locals that I actually want to pay with Mercado Pago and seeing their mind blown when it works @joinpeanut", - "timestamp": "2025-11-24T12:36:11.000Z", - "verified": false, - "followers_count": 16800, - "avatar": "https://pbs.twimg.com/profile_images/1455825670102212608/lK4aLXrW.jpg", - "impact_score": 0.86, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6hUEYEWoAALAAz.jpg" - } - ], - "visible": true - }, - { - "url": "https://x.com/cyberdrk/status/1992044070802497691", - "author": "π’Ÿπ‘’π“‡π‘’π“€ ✨", - "handle": "@cyberdrk", - "content": "I went from 0 crypto payments at DevCon last year to 100% this year: @SimpleFi_tech for @WalletConnect payments at DevConnect, @joinpeanut for MercadoPago, and @EtherFi Cash for card payments", - "timestamp": "2025-11-22T01:34:51.000Z", - "verified": false, - "followers_count": 25000, - "avatar": "https://pbs.twimg.com/profile_images/1334815316245929984/r65uf0Av.jpg", - "impact_score": 0.86, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": true - }, - { - "url": "https://x.com/candicekteo/status/1993420115509956930", - "author": "Candice", - "handle": "@candicekteo", - "content": "Each time I go \"pagar con mercado pago\" to pay with Peanut... I feel so smooth like a local. Ahora soy latina!! Gracias @uwwgo 😁", - "timestamp": "2025-11-25T20:42:46.000Z", - "verified": true, - "followers_count": 21200, - "avatar": "https://pbs.twimg.com/profile_images/1974482470180691968/PGZylzgs.jpg", - "impact_score": 0.85, - "is_reply": true, - "reply_to_url": "https://x.com/DAppaDanDev/status/1992935274523840902", - "media": [], - "visible": true - }, - { - "url": "https://x.com/BFreshHB/status/1987912195489878346", - "author": "π—΅π˜‚π—»π˜π—²π—Ώ", - "handle": "@BFreshHB", - "content": "my @EFDevcon devconnect survival guide πŸ‡¦πŸ‡· ... local payments app (crypto -> pesos) ... cc: @session_app @joinpeanut", - "timestamp": "2025-11-10T15:56:15.000Z", - "verified": false, - "followers_count": 20000, - "avatar": "https://pbs.twimg.com/profile_images/1815563709164535809/8S-oEs8W.jpg", - "impact_score": 0.85, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1987910823243595776/vid/avc1/480x270/9ya2Bv7IuwD92lmS.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/cxqmaggie/status/1993394627148497206", - "author": "maggie", - "handle": "@cxqmaggie", - "content": "you guys have the best payment experience i cannot believe I just did that", - "timestamp": "2025-11-25T19:01:29.000Z", - "verified": true, - "followers_count": 41289, - "avatar": "https://pbs.twimg.com/profile_images/1818038467776917504/Gj8mUdB8.jpg", - "impact_score": 0.85, - "is_reply": true, - "reply_to_url": "https://x.com/joinpeanut/status/1993394429261234640", - "media": [], - "visible": false - }, - { - "url": "https://x.com/yssf_io/status/1993363153611374973", - "author": "yssf", - "handle": "@yssf_io", - "content": "the look of confusion when i barely speak spanish to a merchant but still pay with mercado pago @joinpeanut", - "timestamp": "2025-11-25T16:56:25.000Z", - "verified": false, - "followers_count": 13200, - "avatar": "https://pbs.twimg.com/profile_images/1990116476225720320/ipFdMuEi.jpg", - "impact_score": 0.84, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1993363153611374973/vid/avc1/320x568/1ePUdTUJWR-tXv2k.mp4" - } - ], - "visible": true - }, - { - "url": "https://x.com/andxqueen/status/1980274681040310657", - "author": "Andreina", - "handle": "@andxqueen", - "content": "I use Peanut in my everyday payments, but this morning I paid at a government office and got this feeling of like, wow this is really happening Yes, I paid for my DNI using usdc", - "timestamp": "2025-10-20T14:07:30.000Z", - "verified": false, - "followers_count": 20000, - "avatar": "https://pbs.twimg.com/profile_images/1985527806839738368/YFVdBTVY.jpg", - "impact_score": 0.84, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G3tZU7FXkAEyn4D.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/0xJim/status/1991138208906703041", - "author": "Jim", - "handle": "@0xJim", - "content": "ngl using @joinpeanut to pay merchants with crypto to Mercado Pago has been the SINGLE time that crypto has materially improved my irl life payments really is *the* use case", - "timestamp": "2025-11-19T13:35:17.000Z", - "verified": false, - "followers_count": 13000, - "avatar": "https://pbs.twimg.com/profile_images/1879211761724768256/hQl-5Yfu.jpg", - "impact_score": 0.84, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/Estheroche1/status/1993695756273012766", - "author": "Ego (πŸ’™, 🧑)", - "handle": "@Estheroche1", - "content": "Onchain payment is becoming more easy and efficient on daily via @arbitrum . Guess what? @joinpeanut is doing the magic on Arbitrum. If you are in USA and UK join now to make your payment smooth.", - "timestamp": "2025-11-26T14:58:04.000Z", - "verified": true, - "followers_count": 15000, - "avatar": "https://pbs.twimg.com/profile_images/1759326116819378176/Fi-e_2QN.jpg", - "impact_score": 0.83, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6sHtqpWMAA2-Nr.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/kalashnikovapv/status/1991179700564341201", - "author": "Polina Kalashnikova", - "handle": "@kalashnikovapv", - "content": "One crypto app i’m excited about is @joinpeanut here's why I think they're crushing it. 1️⃣ product that just works... 2️⃣ Branding. I freaking love this branding... 3️⃣ @0xkkonrad building in public...", - "timestamp": "2025-11-19T16:20:09.000Z", - "verified": false, - "followers_count": 16000, - "avatar": "https://pbs.twimg.com/profile_images/1838540515362357248/JAZ8L7HJ.jpg", - "impact_score": 0.83, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6IXYRPbcAAVO8v.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/korneltrg/status/1990097531859239294", - "author": "Kornel β‚Ώ (πŸ’™,🧑)", - "handle": "@korneltrg", - "content": "The best payments app for Devconnect is built on @arbitrum. Heading to Buenos Aires? πŸ‡¦πŸ‡· Don't get wrecked by bad FX rates. Use @joinpeanut, powered by Arbitrum's low-fee infrastructure.", - "timestamp": "2025-11-16T16:40:00.000Z", - "verified": false, - "followers_count": 16000, - "avatar": "https://pbs.twimg.com/profile_images/1963272705781964800/qDKtwBw8.jpg", - "impact_score": 0.83, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G54-_00bwAIhiX4.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/zkLumi/status/1988983944335724602", - "author": "Lumi", - "handle": "@zkLumi", - "content": "Payments for @EFDevcon powered by @joinpeanut 🀝 @arbitrum Decentralization is the way πŸ§‘β€πŸš€", - "timestamp": "2025-11-13T14:55:00.000Z", - "verified": false, - "followers_count": 18000, - "avatar": "https://pbs.twimg.com/profile_images/1954296897595703297/yKZPrjqh.jpg", - "impact_score": 0.83, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5l4InfXEAAJqaX.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/korneltrg/status/1989080195522081271", - "author": "Kornel β‚Ώ (πŸ’™,🧑)", - "handle": "@korneltrg", - "content": "The best payments app for Devconnect is built on @arbitrum. Heading to Buenos Aires? πŸ‡¦πŸ‡· Don't get wrecked by bad FX rates. Use @joinpeanut, powered by Arbitrum's low-fee infrastructure. It's your financial cheat code for Argentina.", - "timestamp": "2025-11-13T21:17:28.000Z", - "verified": false, - "followers_count": 16000, - "avatar": "https://pbs.twimg.com/profile_images/1963272705781964800/qDKtwBw8.jpg", - "impact_score": 0.83, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5qdgM2aAAEU_ZB.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/bonis_crypto/status/1992237891783639051", - "author": "Bonis πŸ”² (πŸ’™,🧑)", - "handle": "@bonis_crypto", - "content": "Perguntei ao @BFreshHB qual projeto mais estΓ‘ chamando sua atenΓ§Γ£o na @arbitrum Ele citou a @joinpeanut, por estar na LATAM e ver, especialmente na Argentina, como as pessoas conseguem pagar, receber e se proteger da inflaΓ§Γ£o usando a moeda local πŸ₯œ", - "timestamp": "2025-11-22T14:25:02.000Z", - "verified": true, - "followers_count": 18000, - "avatar": "https://pbs.twimg.com/profile_images/1905314380012515328/ihw7mqcb.jpg", - "impact_score": 0.82, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1992233946516455424/vid/avc1/320x568/JgI9D9m2jqjm9cBx.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/Churro808/status/1986509791636955382", - "author": "Churro", - "handle": "@Churro808", - "content": "The Arbitrum Devconnect starter pack πŸ‘‡ - get @joinpeanut payments app - pay with crypto at stores and restaurants in Argentina and get rewards", - "timestamp": "2025-11-06T19:03:36.000Z", - "verified": false, - "followers_count": 15000, - "avatar": "https://pbs.twimg.com/profile_images/1961116561869004800/AtKNRuzq.jpg", - "impact_score": 0.82, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5F_PcNXkAAL3FF.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/stoczek_eth/status/1989728703245385791", - "author": "Lukasz", - "handle": "@stoczek_eth", - "content": "I officially got @joinpeanut -pilled Not only I got a great rate for my USDC, they also gave me $5 cashback on my lunch and some magic internet points", - "timestamp": "2025-11-15T16:14:24.000Z", - "verified": false, - "followers_count": 13000, - "avatar": "https://pbs.twimg.com/profile_images/1892245368496070656/GDCIBLhs.jpg", - "impact_score": 0.82, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5zvtPMXQAAylVB.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/rnaayem/status/1986836999219650810", - "author": "Ryan Naayem", - "handle": "@rnaayem", - "content": "Peanut is an awesome consumer use case onchain app, already helping many with their day to day payments in Buenos Aires for devconnect. Just @joinpeanut already πŸ‘€", - "timestamp": "2025-11-07T16:43:48.000Z", - "verified": false, - "followers_count": 20000, - "avatar": "https://pbs.twimg.com/profile_images/1796526599119966209/udefHuZu.jpg", - "impact_score": 0.82, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/pedro_breuer/status/1981707623255679118", - "author": "Pedro Breuer", - "handle": "@pedro_breuer", - "content": "Coming to @EFDevcon Buenos Aires and worried about payments? In Argentina, QR payments through Mercado Pago are very popular, but they require a local account. That’s why our friends at @joinpeanut integrated a feature into their app that lets you pay those same QRs directly with your crypto Plus, USDC deposits from @arbitrum are free!", - "timestamp": "2025-10-24T13:01:30.000Z", - "verified": false, - "followers_count": 15000, - "avatar": "https://pbs.twimg.com/profile_images/1882043184626237440/EsdBZuRm.jpg", - "impact_score": 0.82, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/theZeugh/status/1993446136867393834", - "author": "zeugh is in Buenos Aires πŸ‡¦πŸ‡·", - "handle": "@theZeugh", - "content": "I have definitely used @joinpeanut more than my wallet + credit card combined while in BA", - "timestamp": "2025-11-25T22:26:10.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1945485194175119360/-oioFRN5.jpg", - "impact_score": 0.81, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": true - }, - { - "url": "https://x.com/Dablendo01/status/1986750858323783928", - "author": "Dablendo (πŸ’™πŸ§‘)", - "handle": "@Dablendo01", - "content": "Heading to Buenos Aires for Devconnect? πŸ‡¦πŸ‡· Then you’ll want to pack more than just your passport you’ll want @joinpeanut, the payments app that’s quietly redefining how crypto moves across borders. Built on @arbitrum...", - "timestamp": "2025-11-07T11:01:31.000Z", - "verified": false, - "followers_count": 13000, - "avatar": "https://pbs.twimg.com/profile_images/1889198323866730496/ybqWCqHD.jpg", - "impact_score": 0.81, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5JbYCRWwAAFkjv.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/yssf_io/status/1991964675307937824", - "author": "yssf", - "handle": "@yssf_io", - "content": "@joinpeanut might be the first wallet i can recommend to my non-tech friends", - "timestamp": "2025-11-21T20:19:22.000Z", - "verified": false, - "followers_count": 13200, - "avatar": "https://pbs.twimg.com/profile_images/1990116476225720320/ipFdMuEi.jpg", - "impact_score": 0.81, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/gabipuricelli/status/1981205768595788271", - "author": "gabipuricelli.btc.⭐️⭐️⭐️", - "handle": "@gabipuricelli", - "content": "Otro buen producto para pagos y depΓ³sito @joinpeanut I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=TAXGABINVITESYOU731", - "timestamp": "2025-10-23T03:47:18.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1613636482886996004/Pn0iOyuO.jpg", - "impact_score": 0.68, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/imgacevi/status/1992320489759662200", - "author": "lΓ­a βœ¨πŸ¦„πŸŒΈ Devconnect πŸ‡¦πŸ‡·", - "handle": "@imgacevi", - "content": "I'm using @joinpeanut, an invite-only app for easy payments... pay friends, use merchants, even cross-border🫑", - "timestamp": "2025-11-22T19:53:14.000Z", - "verified": false, - "followers_count": 8000, - "avatar": "https://pbs.twimg.com/profile_images/1986541338842497025/a61M32LU.jpg", - "impact_score": 0.67, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/AnInternetter/status/1993404987452670098", - "author": "Tulezao", - "handle": "@AnInternetter", - "content": "amazing ux is something not common enough in this industry", - "timestamp": "2025-11-25T19:42:39.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1742640279209861120/xKNRi6eY.jpg", - "impact_score": 0.67, - "is_reply": true, - "reply_to_url": "https://x.com/AnInternetter/status/1993349829888540978", - "media": [], - "visible": false - }, - { - "url": "https://x.com/not_qz/status/1993077330895052982", - "author": "fishbiscuit at Devconnect", - "handle": "@not_qz", - "content": "Met @andxqueen and learned about @joinpeanut Time to save on them credit card fees", - "timestamp": "2025-11-24T18:43:20.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1951267086488977411/Dok6DaYM.jpg", - "impact_score": 0.67, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/loemrzva/status/1990850591980208148", - "author": "lucy πŸ₯¨", - "handle": "@loemrzva", - "content": ".@EFDevcon day 1 mini vlogπŸͺ© so many favorite moments: β€’ @joinpeanut tees you can design yourself", - "timestamp": "2025-11-18T18:32:24.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1938364586845237248/zVdM5u8S.jpg", - "impact_score": 0.67, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1990850284713660417/vid/avc1/320x568/NIFcx2qvtpcYRGjR.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/goyabean/status/1989752309057032505", - "author": "goyabean.base.ethβŒβ—¨-β—¨", - "handle": "@goyabean", - "content": "Heading to Argentina and I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=GOYABEANINVITESYOU938", - "timestamp": "2025-11-15T17:48:12.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1993337131356295168/3Ys0xO9Z.jpg", - "impact_score": 0.67, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/Leoninweb3/status/1993394963615564084", - "author": "0xLeon @ Hubble.xyz", - "handle": "@Leoninweb3", - "content": "I am a user of peanut me as well!", - "timestamp": "2025-11-25T19:02:49.000Z", - "verified": false, - "followers_count": 7000, - "avatar": "https://pbs.twimg.com/profile_images/1937804470676869120/OAdMIzMa.jpg", - "impact_score": 0.66, - "is_reply": true, - "reply_to_url": "https://x.com/cxqmaggie/status/1993393875059441999", - "media": [], - "visible": false - }, - { - "url": "https://x.com/nick_hollins/status/1991869587504451710", - "author": "Nick Hollins", - "handle": "@nick_hollins", - "content": "Rocking the morning coffee in Buenos Aires with @0xcr33pt0 on @joinpeanut", - "timestamp": "2025-11-21T14:01:31.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1882463602050818049/Ic9Vpz67.jpg", - "impact_score": 0.66, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1991869426149265408/vid/avc1/320x568/1ePUdTUJWR-tXv2k.mp4" - } - ], - "visible": false - }, - { - "url": "https://x.com/fakundirekt/status/1992479033091912117", - "author": "direkt", - "handle": "@fakundirekt", - "content": "NEET WORLD ORDER Usen mi link de Peanut @joinpeanut #manicero", - "timestamp": "2025-11-23T06:23:14.000Z", - "verified": false, - "followers_count": 8000, - "avatar": "https://pbs.twimg.com/profile_images/1991264968302280704/oPlXpQ3g.jpg", - "impact_score": 0.65, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6a1HgxWQAAbVEa.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/jnptzl/status/1990821927137452166", - "author": "0xjean.eth @ πŸ‡¦πŸ‡·β€΄", - "handle": "@jnptzl", - "content": "global cash local feel is a great tagline the guerrilla-est booth @joinpeanut", - "timestamp": "2025-11-18T16:38:29.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1881413529858650112/iciiaXZq.jpg", - "impact_score": 0.65, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "video", - "url": "https://video.twimg.com/amplify_video/1990821868912234496/vid/avc1/320x568/ZveJXhV7dswugPbO.mp4" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6DR8SGWsAEZHrU.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6DR8SHXMAAytOl.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/Ifee_lovee/status/1987260441567846816", - "author": "Ife_love", - "handle": "@Ifee_lovee", - "content": "10 ➞ Global Arbitrum Builder Meetups Arbitrum hosted builder meetups in Brazil and Jakarta continued to strengthen the developer base worldwide. https://t.co/NJrrjLCs8G These events keep the ecosystem open, collaborative, and fast-moving, connecting local talent with the global Arbitrum network.", - "timestamp": "2025-11-08T20:46:25.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1856221877842116610/NNpmvzQR.jpg", - "impact_score": 0.65, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5Qq1u5WwAAD0Ez.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/simoneDotDev/status/1993461126198096216", - "author": "simone.dev", - "handle": "@simoneDotDev", - "content": "peanut should have blessed you with a 20% cashback on that gringa price", - "timestamp": "2025-11-25T23:25:43.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1590681870605471744/7FLGZaay.png", - "impact_score": 0.64, - "is_reply": true, - "reply_to_url": "https://x.com/cxqmaggie/status/1993393875059441999", - "media": [], - "visible": false - }, - { - "url": "https://x.com/piggywallet_app/status/1991877872076877953", - "author": "Piggy Wallet", - "handle": "@piggywallet_app", - "content": "with @uwwgo, co-founder of @joinpeanut Congrats on the SWC! πŸ†", - "timestamp": "2025-11-21T14:34:26.000Z", - "verified": false, - "followers_count": 8000, - "avatar": "https://pbs.twimg.com/profile_images/1954012593632546816/pG_CrxY5.jpg", - "impact_score": 0.64, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6SSXLpWoAABovW.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/0xShayan/status/1993381760764117121", - "author": "Shayan", - "handle": "@0xShayan", - "content": "Latin America is the place to be for payments. Peanut (@joinpeanut) was absolutely everywhere", - "timestamp": "2025-11-25T18:10:21.000Z", - "verified": false, - "followers_count": 10000, - "avatar": "https://pbs.twimg.com/profile_images/1918199756041379840/09EKWMbo.jpg", - "impact_score": 0.63, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6npdtuW4AAjtyY.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6nphS1WMAEKMh_.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6npj0RWoAA0gNG.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6nqHncXEAAnyZm.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/mattff3/status/1993027674730852494", - "author": "Mati", - "handle": "@mattff3", - "content": "let’s try @gnosis_ wallet... what other crypto payment option am I missing? @joinpeanut", - "timestamp": "2025-11-24T18:43:20.000Z", - "verified": false, - "followers_count": 9500, - "avatar": "https://pbs.twimg.com/profile_images/1991680816326287360/J8JBIRNo.jpg", - "impact_score": 0.63, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6ioGsNX0AAboEK.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/zhiyangxyz/status/1993394901183348853", - "author": "Zhiyang", - "handle": "@zhiyangxyz", - "content": "Peanut is one of the amazing finds in this tripπŸ‘", - "timestamp": "2025-11-25T19:02:34.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1993430569489723392/vt7ksu7u.jpg", - "impact_score": 0.62, - "is_reply": true, - "reply_to_url": "https://x.com/AriEiberman/status/1992945656944828667", - "media": [], - "visible": false - }, - { - "url": "https://x.com/notAlddo/status/1993380368825925809", - "author": "alddo 🫢 lives/acc", - "handle": "@notAlddo", - "content": "ux fragmentation is tiresome... make crypto payments as simple as... (praising integration)", - "timestamp": "2025-11-25T18:04:49.000Z", - "verified": false, - "followers_count": 8500, - "avatar": "https://pbs.twimg.com/profile_images/1748126024488012288/JgroB6W1.jpg", - "impact_score": 0.62, - "is_reply": true, - "reply_to_url": "https://x.com/AnInternetter/status/1993349829888540978", - "media": [], - "visible": false - }, - { - "url": "https://x.com/stutireal/status/1993499051070025962", - "author": "Stuti", - "handle": "@stutireal", - "content": "I love these", - "timestamp": "2025-11-26T01:56:25.000Z", - "verified": true, - "followers_count": 25891, - "avatar": "https://pbs.twimg.com/profile_images/1980999778231058432/MtO6NX39.jpg", - "impact_score": 0.62, - "is_reply": true, - "reply_to_url": "https://x.com/cxqmaggie/status/1993393875059441999", - "media": [], - "visible": false - }, - { - "url": "https://x.com/Churro808/status/1993493484104564907", - "author": "Churro", - "handle": "@Churro808", - "content": "love the energy!", - "timestamp": "2025-11-26T01:34:18.000Z", - "verified": false, - "followers_count": 15000, - "avatar": "https://pbs.twimg.com/profile_images/1961116561869004800/AtKNRuzq.jpg", - "impact_score": 0.62, - "is_reply": true, - "reply_to_url": "https://x.com/hummusonrails/status/1993351948372754451", - "media": [], - "visible": false - }, - { - "url": "https://x.com/Real_sweetone/status/1989758885301796919", - "author": "Research is my Forte πŸ‡¦πŸ‡·πŸ‡¦πŸ‡·", - "handle": "@Real_sweetone", - "content": "Great ux from @joinpeanut Payment was seamless πŸ™", - "timestamp": "2025-11-15T18:14:20.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1880141867582357504/HGcS4zH7.jpg", - "impact_score": 0.62, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G50LJVTW0AAD_Tu.jpg" - }, - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G50LJVRXAAAXxa0.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/hummusonrails/status/1989373688685167011", - "author": "Ben Greenberg", - "handle": "@hummusonrails", - "content": "Thanks for the cashback @joinpeanut πŸ’Έ", - "timestamp": "2025-11-14T16:43:42.000Z", - "verified": true, - "followers_count": 28567, - "avatar": "https://pbs.twimg.com/profile_images/1940377733504094208/-iKSY-FV.jpg", - "impact_score": 0.62, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G5us0jFWAAEasmo.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/lucilajuliana/status/1992487381661110589", - "author": "Lucille @ Disconnect ARG", - "handle": "@lucilajuliana", - "content": "These two look cute together πŸ’›πŸ’œ @joinpeanut @phantom", - "timestamp": "2025-11-23T06:56:25.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1816263612412899328/ph-cK2n4.jpg", - "impact_score": 0.62, - "is_reply": false, - "reply_to_url": null, - "media": [ - { - "type": "photo", - "url": "https://pbs.twimg.com/media/G6a8tyLWQAAoO6I.jpg" - } - ], - "visible": false - }, - { - "url": "https://x.com/Churro808/status/1993491550836535519", - "author": "Churro", - "handle": "@Churro808", - "content": "love the energy! (replying to Ben's post praising Peanut)", - "timestamp": "2025-11-26T01:26:37.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1961116561869004800/AtKNRuzq.jpg", - "impact_score": 0.61, - "is_reply": true, - "reply_to_url": "https://x.com/hummusonrails/status/1993351948372754451", - "media": [], - "visible": false - }, - { - "url": "https://x.com/yotamha1/status/1993368603916485020", - "author": "yotam", - "handle": "@yotamha1", - "content": "Beautifully said it’s awesome to see the industry grow up", - "timestamp": "2025-11-25T17:18:04.000Z", - "verified": false, - "followers_count": 7000, - "avatar": "https://pbs.twimg.com/profile_images/1696536889212428289/s0eAJ3AM.png", - "impact_score": 0.61, - "is_reply": true, - "reply_to_url": "https://x.com/hummusonrails/status/1993351948372754451", - "media": [], - "visible": false - }, - { - "url": "https://x.com/BFreshHB/status/1993490982307090874", - "author": "π—΅π˜‚π—»π˜π—²π—Ώ", - "handle": "@BFreshHB", - "content": "gud content (replying to Ben's post praising Peanut)", - "timestamp": "2025-11-26T01:24:22.000Z", - "verified": false, - "followers_count": 20000, - "avatar": "https://pbs.twimg.com/profile_images/1815563709164535809/8S-oEs8W.jpg", - "impact_score": 0.6, - "is_reply": true, - "reply_to_url": "https://x.com/hummusonrails/status/1993351948372754451", - "media": [], - "visible": false - }, - { - "url": "https://x.com/Player1Taco/status/1988070662179864981", - "author": "(Taco) Player1Taco.eth/.sol", - "handle": "@Player1Taco", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=PLAYER1TACOINVITESYOU325", - "timestamp": "2025-11-11T20:46:25.000Z", - "verified": false, - "followers_count": 16000, - "avatar": "https://pbs.twimg.com/profile_images/1988764151166926848/i9Oxymza.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/simoneDotDev/status/1993461948416246275", - "author": "simone.dev", - "handle": "@simoneDotDev", - "content": "peanut should have blessed you with a 20% cashback on that gringa price", - "timestamp": "2025-11-25T23:28:59.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1590681870605471744/7FLGZaay.png", - "impact_score": 0.6, - "is_reply": true, - "reply_to_url": "https://x.com/cxqmaggie/status/1993393875059441999", - "media": [], - "visible": false - }, - { - "url": "https://x.com/JuanJoseBTC/status/1992054753778405664", - "author": "Jota πŸΆπŸ§™β€β™‚οΈπŸ₯œ", - "handle": "@JuanJoseBTC", - "content": "when you're being mean to me this is who you are being mean to", - "timestamp": "2025-11-22T02:45:41.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1738698311140294656/WIJ216vU.jpg", - "impact_score": 0.6, - "is_reply": true, - "reply_to_url": "https://x.com/0xPumbi/status/1992624069657649220", - "media": [], - "visible": false - }, - { - "url": "https://x.com/guillermdk/status/1981930130881626610", - "author": "guillermomdk", - "handle": "@guillermdk", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=GUILLERMOMDKINVITESYOU492", - "timestamp": "2025-10-25T14:13:13.000Z", - "verified": false, - "followers_count": 8500, - "avatar": "https://pbs.twimg.com/profile_images/1918823572715278336/zfxddyQT.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/linuxcity/status/1989229851622941155", - "author": "Zhe", - "handle": "@linuxcity", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=Z16ZINVITESYOU447", - "timestamp": "2025-11-14T16:43:42.000Z", - "verified": false, - "followers_count": 14000, - "avatar": "https://pbs.twimg.com/profile_images/1925796950244270080/bF9vUliz.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/Yosoyraymon/status/1988225946734694809", - "author": "π‘πšπ²γ€½οΈΡΊπ±π πŸ”Ίβš”οΈ W Effect", - "handle": "@Yosoyraymon", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=CRYPTORAYMONINVITESYOU535", - "timestamp": "2025-11-11T11:29:04.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1992839034108788736/0DKrOy5E.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/guillermdk/status/1981048731173638203", - "author": "guillermomdk", - "handle": "@guillermdk", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=GUILLERMOMDKINVITESYOU492", - "timestamp": "2025-10-22T14:13:13.000Z", - "verified": false, - "followers_count": 8500, - "avatar": "https://pbs.twimg.com/profile_images/1918823572715278336/zfxddyQT.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/paul_ironforce/status/1983907078541373827", - "author": "Paul Ironforce", - "handle": "@paul_ironforce", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=IRONPAULINVITESYOU974", - "timestamp": "2025-10-30T14:13:13.000Z", - "verified": false, - "followers_count": 10000, - "avatar": "https://pbs.twimg.com/profile_images/1335634917502414849/CkB6Kvms.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/0xMhiskall/status/1989225577233219874", - "author": "John Okyere πŸ“βœˆοΈ Devconnect πŸ‡¦πŸ‡·", - "handle": "@0xMhiskall", - "content": "I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=MHISKALLINVITESYOU953", - "timestamp": "2025-11-14T16:43:42.000Z", - "verified": false, - "followers_count": 12000, - "avatar": "https://pbs.twimg.com/profile_images/1962464365807853568/cyqIR8mA.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/AufDerSuche23/status/1987524924479590708", - "author": "JosΓ©", - "handle": "@AufDerSuche23", - "content": "slds I'm using Peanut, an invite-only app for easy payments. With it you can pay friends, use merchants, and move money in and out of your bank, even cross-border. Here's my invite: https://peanut.me/invite?code=JFDELASCAINVITESYOU125", - "timestamp": "2025-11-09T14:11:05.000Z", - "verified": false, - "followers_count": 9000, - "avatar": "https://pbs.twimg.com/profile_images/1692458201692643328/1gOByVzC.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - }, - { - "url": "https://x.com/ferminrp/status/1981044335459078643", - "author": "Fermin", - "handle": "@ferminrp", - "content": "Algun invite para @joinpeanut ?", - "timestamp": "2025-10-22T14:13:13.000Z", - "verified": false, - "followers_count": 11000, - "avatar": "https://pbs.twimg.com/profile_images/1523984386340831233/jSlYyvDj.jpg", - "impact_score": 0.6, - "is_reply": false, - "reply_to_url": null, - "media": [], - "visible": false - } - ] -} From 6c7b1900ebc78ebc637414f2e64db394c0973a3f Mon Sep 17 00:00:00 2001 From: 0xkkonrad Date: Wed, 27 May 2026 14:50:18 +0000 Subject: [PATCH 05/15] refactor(landing): read hero/marquee/FAQs from singleton content MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert / and /lp from 'use client' to server components so they can call readSingletonContentLocalized('landing', locale). Capacitor redirect logic moves into a small LandingPageCapacitorGate client wrapper around the children β€” server renders the landing, client shortcircuits to /home or /setup on native builds. Source of truth is mono/content/landing/en.md frontmatter (hero CTA, marquee, FAQs). landingContent.ts maps it into the LandingPageClient prop shapes with sensible fallbacks. landingPageData.ts deleted. --- src/app/lp/page.tsx | 6 +- src/app/page.tsx | 56 +++++++---------- .../LandingPage/LandingPageCapacitorGate.tsx | 27 ++++++++ src/components/LandingPage/landingPageData.ts | 63 ------------------- src/lib/landingContent.ts | 63 +++++++++++++++++++ 5 files changed, 114 insertions(+), 101 deletions(-) create mode 100644 src/components/LandingPage/LandingPageCapacitorGate.tsx delete mode 100644 src/components/LandingPage/landingPageData.ts create mode 100644 src/lib/landingContent.ts diff --git a/src/app/lp/page.tsx b/src/app/lp/page.tsx index fe98c7c1e..401a28e41 100644 --- a/src/app/lp/page.tsx +++ b/src/app/lp/page.tsx @@ -1,5 +1,3 @@ -'use client' - /** * /lp route - Landing page that is ALWAYS accessible regardless of auth state. * This allows logged-in users to view the marketing landing page. @@ -14,9 +12,11 @@ import { YourMoney } from '@/components/LandingPage/yourMoney' import { SecurityBuiltIn } from '@/components/LandingPage/securityBuiltIn' import { SendInSeconds } from '@/components/LandingPage/sendInSeconds' import Footer from '@/components/LandingPage/Footer' -import { heroConfig, faqData, marqueeMessages } from '@/components/LandingPage/landingPageData' +import { getLandingContent } from '@/lib/landingContent' export default function LPPage() { + const { heroConfig, faqData, marqueeMessages } = getLandingContent('en') + return ( { - // native app has no landing page β€” go straight to home or setup - if (isCapacitor()) { - const token = getAuthToken() - router.replace(token ? '/home' : '/setup') - } - }, [router]) - - // native app: render nothing while redirecting - if (isCapacitor()) return null - + const { heroConfig, faqData, marqueeMessages } = getLandingContent('en') const faqJsonLd = faqSchema(faqData.questions.map((q) => ({ question: q.question, answer: q.answer }))) return ( - - {faqJsonLd && } - - } - regulatedRailsSlot={} - yourMoneySlot={} - securitySlot={} - sendInSecondsSlot={} - footerSlot={