Inspiration
Memes are how the Internet talks. They can move markets, shape elections, and turn unknowns into household names overnight. Yet the people creating that cultural force earn nothing, and the rest of us scroll endlessly to find the right memes to send. The problem: there's no infrastructure built for how memes actually work. MemeDay is the layer that's missing. Engagement becomes a value event where every like, comment, trade, and tip feeds a creator-fan flywheel. Discovery is built to be frictionless, and the hottest memes on any topic are one click from wherever you're posting next. Your likes are worth something now.
What it does
MemeDay is a social meme platform on Solana, built on AWS and Vercel and designed as a creator-fan economy flywheel: social engagement drives token and NFT value, that value rewards creators and fans, and rewards drive more engagement.
Live today:
- A meme feed with upload, voting, and comments, all persisted in DynamoDB
- Mint a meme NFT on Solana devnet (via Metaplex) with an optional resale listing
- Solana Pay QR tipping: scan to send SOL directly to the creator's wallet
- Creator leaderboard, trending page, and a daily featured meme
- Unified sign-in by email or Solana wallet through a single identity system
Two reward layers are designed and have their UI in place, with on-chain wiring planned post-hackathon:
- A platform token earned through engagement (logins, votes, referrals), stakeable for a share of trading fees
- Creator tokens, launched per creator via the Bags SDK, with price tied to organic popularity
Token creation is optional, keeping the barrier to posting and being discovered low. Token holders are designed to earn featured comment placement, creator badges, and revenue share scaled by holding. These features let creators turn their most viral content into transferable on-chain assets.
The market is every content creator and social user: a space that moves billions in value with no native infrastructure for monetizing social engagement. That gap is the opportunity.
How we built it
We rebuilt MemeDay from the ground up during the submission window, migrating off a Supabase/Postgres prototype onto a deliberately chosen AWS stack.
DynamoDB, single-table, designed around access patterns. MemeDay is write-heavy and access-pattern-driven: every like, vote, and comment is a small write, and reads are predictable lookups (a meme's votes, a creator's leaderboard, a user's feed). That is exactly DynamoDB's shape, so we modeled around known access patterns rather than ad-hoc queries. One table holds every entity type with overloaded PK/SK and three sparse GSIs. Scores are zero-padded so DynamoDB's lexicographic sort equals numeric sort. We chose DynamoDB over Aurora and Aurora DSQL because the workload is high-write and hot-item heavy (viral vote counts), where DSQL's optimistic concurrency is a poor fit, and because the single-table model is built to drop into Global Tables for active-active multi-region, which fits a million-scale narrative.
Event-driven materialized views (the core engineering work). The hardest and highest-leverage piece was a DynamoDB Streams consumer (AWS Lambda) that reacts to base-table writes and maintains read-optimized views. On meme insert/update/remove, it upserts a FEED#GLOBAL item and adjusts a LEADERBOARD#GLOBAL creator counter, so trending and leaderboard reads are served from precomputed views instead of being recomputed on every request.
Cognito as the only identity system. userId is the Cognito sub. Email login is standard Cognito; wallet login signs a server-issued nonce that a Vercel API route verifies before minting a Cognito session via admin-initiated auth. Sign-up needs email or wallet alone, with the other linkable later, so we never force both and never run a parallel session system.
Media via presigned direct-to-S3 upload. The browser requests a short-lived presigned URL and uploads images straight to S3, bypassing the Vercel server. Reads are S3-backed and CloudFront-ready, with a temporary image proxy in place while CloudFront configuration is finalized.
Infrastructure as code. A single AWS CDK stack provisions the DynamoDB table (three GSIs, Streams with new-and-old images), the Cognito user pool and client, and the Streams Lambda wired as a DynamoDB event source with batching and bisect-on-error.
Frontend on Vercel, UI upgraded with v0. Next.js 14 (App Router), TypeScript, Tailwind, deployed on Vercel. We used v0 to iterate the MemeCard component and trendingTokenCard, then merged only the clean styling changes back into the app.
Engineering discipline. Branch-per-feature with main protected, conventional commits, and a GitHub Actions CI gate that runs the test suite (covering the stream handler, vote enforcement, uploads, email login, and comments) on every pull request.
Challenges we ran into
The biggest challenge: the app had a blueprint describing how it should work, but none of the backend event processing was actually built. Everything was being done the slow, expensive way, like a restaurant re-counting its entire inventory every time a customer asks what's on the menu. We closed that gap by building the Streams-to-Lambda pipeline so trending and leaderboard are maintained incrementally as events happen.
Other notable challenges:
- Unifying two login paths without two session systems: To keep identity unified, we verify the wallet signature in a Vercel API route and mint a Cognito session via admin auth, so userId is always the Cognito sub. No duplicated auth logic.
- Single-table DynamoDB design is the opposite of how SQL databases are taught: One table holds users, memes, comments, and likes together, so modeling it correctly meant getting overloaded keys, sparse GSIs, and zero-padded sort keys right so range queries sort correctly.
- Three features designed but not yet shipped: (1) An S3 event-triggered Lambda to inspect uploads and reject anything that fails type or size checks before it can be served. (2) A nightly cron to lock the day's "Meme of the Day" and decay old meme scores by 10% on a schedule rather than live on every read. (3) An on-chain signing Lambda reading its key from Secrets Manager, so the platform NFT signer never touches user code. All three are designed and queued for post-hackathon.
Accomplishments that we're proud of
- A working MVP shipped inside the submission window: feed, upload, voting, comments, Solana Pay tipping, NFT minting, leaderboard, trending, and daily featured.
- Trending and leaderboard served from real Streams-driven materialized views, not live-computed on read.
- One identity system spanning both email and wallet users, with neither identifier mandatory.
- A clean, intentional architecture backed by a CI test gate and protected
main, rather than surface-level generation. - Real on-chain NFT minting on devnet via Metaplex, end-to-end from the post screen.
What we learned
- Design data around access patterns first. With DynamoDB, the question is "what reads do I need," not "what tables feel natural."
- At scale, event-driven materialized views beat recompute-on-read. Streams plus Lambda turned an expensive pattern into incremental updates.
- Unify identity early. A single Cognito flow for email and wallet is far simpler than two session systems trying to agree.
What's next for MemeDay
- DynamoDB Global Tables for true active-active multi-region, delivering the global-scale story end-to-end.
- CloudFront with Origin Access Control for media reads, retiring the temporary proxy.
- Real-time engagement at scale: write-sharded counters plus subscription-based live vote updates for hot, viral memes. Sharding will split the counter into N sub-items (likeCount_0…likeCount_9); each like increments a random shard, and the real total is the sum. Writes spread across partitions, so virality doesn't throttle. For subscription-based live updates, the server would push counts in real time (WebSockets / AppSync subscriptions / SSE), so viewers watch the number tick up live.
- Creator tokens via the Bags SDK and the platform engagement token, with vesting and anti-abuse (diminishing per-day returns, wallet-history requirements) before any mainnet, real-money path.
- NFT minting on mainnet (already live on devnet) once token economics ship.
- Least-privilege runtime IAM scoped to DynamoDB, Cognito, and S3 for production credentials.
- Social media sharing to platforms such as X, Facebook, Instagram, Tik Tok, etc.
Built With
- amazon-cognito
- amazon-dynamodb
- amazon-web-services
- aws-lambda
- lucide-react
- metaplex
- next.js-14
- qrcode.react
- react
- solana-pay
- solana-wallet-adapter
- solana/web3.js
- tailwind-css
- typescript
- v0
- vercel
- zustand

Log in or sign up for Devpost to join the conversation.