Likeability (Side Project)Product Design

Likeability: Anonymous Design Feedback, Built in 1 Hour

How I vibecoded an anonymous design feedback tool in 1 hour for a job interview—featuring drag-and-drop uploads, real-time voting, zone-pinned comments, auto-expiry, and an 8-bit arcade aesthetic. No login required.

1 hour

Time to Build

7 + URLs

File Types Supported

500 MB

Max File Size

Case study visual
Built withSide ProjectFull-Stack DevelopmentNext.jsSupabaseCloudflare R2Framer Motion8-bit DesignOpen SourceAnonymous FeedbackLive site

Context

The working context

Team

KV

DESIGNER, DEVELOPER (SOLO)

Koushik Venkatesan

Overview

May 2026 · 1 Hour (Built During Job Interview Prep) I needed to prove my design worked during a job interview. I had Reddit feedback in my DMs, but no way to organize it fast. So I built Likeability in 1 hour: • Upload your design (images, PDF, Lottie, Rive, video, or paste a Figma/YouTube/Drive link) • Share a link • Get anonymous votes and zone-pinned comments • Sessions auto-delete in 24 hours (max 7 days) • No login. No accounts. No noise. Tech stack: Next.js 16 (App Router) · React 19 + Tailwind CSS 4 · Framer Motion 12 · Supabase (Postgres + Realtime) · Cloudflare R2 (presigned URLs, up to 500 MB) · Howler 2 (arcade sound effects) 8-bit aesthetic: PressStart2P font · Pixel borders · Arcade sound effects (coin drops for upvotes, hit sounds for downvotes) · Framer Motion wipe transitions Live site: https://www.likeability.fyi

My expertise

Product design, full-stack development, rapid prototyping, 8-bit aesthetic, anonymous feedback tools

Problem

What needed to change

How do you get honest, organized feedback on your designs during a job interview—when feedback is scattered in Reddit DMs and you have 1 hour to prove your design works?

I was prepping for a job interview where I needed to prove a design concept worked. I had feedback from Reddit, but it was scattered in DMs—hard to organize, hard to share with the interviewer.

Existing tools didn't fit:
• Figma comments require a Figma account (interviewer might not have one)
• Loom/Jam are for async video feedback (too slow)
• Google Forms collect feedback, but don't show it in context
• UsabilityHub requires login and setup

What I needed: Upload a design · Share a link · Get anonymous votes and comments · Auto-delete after 24 hours · No login. No friction. No noise.

So I built Likeability in 1 hour.

Questions we had to answer

01

Why anonymous feedback?

02

Why 8-bit aesthetic?

03

Why auto-delete sessions?

04

How did you build this in 1 hour?

1 hour

Time to build

Vibecoded during job interview prep

7

File types supported

PNG, JPEG, WEBP, PDF, MP4, Lottie, Rive — plus Figma/YouTube/Drive/Dropbox links

500 MB

Max file size

Via Cloudflare R2 presigned URLs

24h default, max 7 days

Session auto-expiry

Files deleted from R2, rows deleted from DB, page returns 410

Next.js 16 + Supabase + R2 + Framer Motion

Tech stack

Full-stack, real-time, no login required

Yes

Open-source

MIT license

Alignment

What success had to look like

Success criteria

This was a personal need turned into a 1-hour side project, not a client deliverable.

I defined success as:
1. Ship in 1 hour (interview prep, not a long-term project)
2. Zero friction (no login, no account, no email—just upload and share)
3. Anonymous feedback (honest votes and comments, no social pressure)
4. Auto-delete (sessions expire in 24h—no clutter, no GDPR headaches)
5. 8-bit aesthetic (make it fun, not corporate)

I hit all of these. The tool worked for my interview, and I open-sourced it so others can use it.

Design themes

Zero Friction

No login, no account, no email. Just upload, share, and get feedback.

Anonymous by Default

Real feedback happens when people don't worry about social pressure or hurt feelings.

Auto-Expiry

Sessions delete after 24h (max 7 days). No clutter, no GDPR headaches, no long-term storage costs.

8-Bit Arcade Aesthetic

PressStart2P font, pixel borders, arcade sound effects. Design feedback should be fun, not stressful.

Process

01Define the Problem — Scattered Reddit feedback, need organized feedback fast
02Choose the Stack — Next.js, Supabase, R2, Framer Motion
03Design the UI — 8-bit aesthetic, drag-and-drop, device mockups
04Build Upload Flow — Drag-and-drop files, paste URLs, presigned R2 uploads
05Build Voting — Thumbs up/down, real-time via Supabase
06Build Zone Comments — Click anywhere to drop a pinned comment thread
07Build Auto-Expiry — Cron job deletes files from R2 + rows from DB after 24h
08Add Sound Effects — Howler via react-sounds CDN (coin drops, hit sounds)
09Deploy to Vercel — Done in 1 hour
10Share on Twitter — Open-sourced it after

Constraints

The tradeoffs we had to work inside

01

1-hour build time (job interview prep)

Had to ship fast. No time for over-engineering or feature creep.

02

Zero login (no auth, no accounts)

Anonymous sessions via UUID. No email, no password, no OAuth.

03

Auto-expiry (sessions delete after 24h)

Reduces storage costs, GDPR compliance, and clutter. Files deleted from R2, rows deleted from DB, page returns 410.

04

Up to 500 MB uploads (via Cloudflare R2)

Supports high-res images, PDFs, videos, Lottie, and Rive files.

Behaviors encouraged

  • Upload designs (drag-and-drop or paste URL)
  • Share feedback link with team, Reddit, or Twitter
  • Vote honestly (thumbs up/down, anonymous)
  • Drop zone comments (click anywhere to pin a comment)
  • Use for quick feedback — interview prep, design reviews, client approvals

Behaviors discouraged

  • Create an account (no login required)
  • Keep sessions forever (auto-delete after 24h)
  • Use for long-term storage (not a file host — sessions expire)

Process

How the work moved from messy to shipped

This was a 1-hour vibecode session — no PRD, no wireframes, just ship.

First 20 min: Define the Problem + Choose the Stack
Needed: fast upload (drag-and-drop + URL paste) · real-time voting (Supabase Realtime) · zone-pinned comments · auto-expiry · no login
Stack: Next.js 16 (App Router) · Supabase (Postgres + Realtime) · Cloudflare R2 (presigned URLs, 500 MB) · Framer Motion 12 · Howler 2 · Tailwind CSS 4

Next 30 min: Build Upload Flow + Device Mockups
Features: drag-and-drop upload (up to 5 files, 500 MB max) · paste URL (Figma, YouTube, Google Drive, Dropbox) · device mockups (preview inside Instagram Feed, Story, Reel, TikTok, LinkedIn, X post, mobile/tablet/desktop frames)

Next 20 min: Build Voting + Zone Comments
Real-time voting via Supabase Realtime (thumbs up/down per variant) · zone comments (click anywhere on design to drop a pinned comment thread)

Last 10 min: Build Auto-Expiry + Deploy
Cron job hits /api/cleanup daily → deletes files from R2 → deletes rows from Supabase → page returns 410 (Gone)
Deploy to Vercel: set env vars, deploy, done.

Post-launch: Shared it on Twitter, open-sourced it.

01

Ship the MVP in 1 Hour

Built the full core in 1 hour:

1. Upload: Drag-and-drop files (PNG, JPEG, WEBP, PDF, MP4, Lottie, Rive) or paste URLs (Figma, YouTube, Drive, Dropbox)
2. Device mockups: Preview designs inside Instagram Feed, Story, Reel, TikTok, LinkedIn, X post, mobile/tablet/desktop frames
3. Real-time voting: Thumbs up/down per variant (Supabase Realtime)
4. Zone comments: Click anywhere on the design to drop a pinned comment thread
5. Auto-expiry: Sessions delete after 24h (default) or max 7 days

Tech: Next.js 16 + React 19 + Tailwind CSS 4 + Framer Motion 12 + Supabase + Cloudflare R2 + Howler 2

8-bit aesthetic: PressStart2P font · Pixel borders · Arcade sound effects · Framer Motion wipe transitions

Figma assets may take 1–2 minutes to load from CDN. Please wait if you see a blank or loading frame.

Figma

Live now

Takeaways

What changed once the work met reality

What didn't go as planned

01

How do you build real-time voting without WebSockets?

Didn't have time to set up custom WebSockets or manage server state. Solution: Supabase Realtime — Postgres + real-time subscriptions abstracted away. Subscribe to table changes and React re-renders automatically. Lesson: Use the right tools and ship faster.

02

How do you handle file uploads (up to 500 MB) without server overhead?

Uploading large files to Next.js API routes would hit serverless function limits (max 50 MB on Vercel). Solution: Cloudflare R2 presigned URLs — client uploads directly to R2 (no server involved), then stores the R2 URL in Supabase. Lesson: Presigned URLs are a game-changer for large file uploads.

03

How do you auto-delete sessions without a persistent background job?

Sessions need to expire after 24h. Files deleted from R2, rows deleted from Supabase, page returns 410 (Gone). Solution: Vercel cron job hits /api/cleanup daily with a secret token. Lesson: Auto-expiry is critical for GDPR compliance and storage costs.

What shipped

Built an Anonymous Design Feedback Tool in 1 Hour

Shipped a full-stack product in 1 hour:

• Upload designs (drag-and-drop or paste URL)
• Real-time voting (thumbs up/down, Supabase Realtime)
• Zone-pinned comments (click anywhere to drop a comment)
• Auto-expiry (sessions delete after 24h)
• 8-bit arcade aesthetic (PressStart2P font, pixel borders, arcade sound effects)

1 hour (vibecoded during job interview prep)

Time to build

7 (PNG, JPEG, WEBP, PDF, MP4, Lottie, Rive) + Figma/YouTube/Drive/Dropbox links

File types supported

500 MB via Cloudflare R2 presigned URLs

Max file size

24 hours default, max 7 days

Session auto-expiry

Open-Sourced the Tool for Others to Use

After shipping, open-sourced the tool so others can use it for design feedback, client approvals, or interview prep.

Tech stack: Next.js 16 (App Router) · React 19 + Tailwind CSS 4 · Framer Motion 12 · Supabase (Postgres + Realtime) · Cloudflare R2 · Howler 2 (arcade sound effects)

MIT license — anyone can fork, modify, and deploy.

MIT license, full tech stack documented

Open-source

May 6, 2026

Posted on Twitter

Outcome

What shipped and what it proved

1 hour

Time to Build

Vibecoded during job interview prep

7 + URLs

File Types Supported

PNG, JPEG, WEBP, PDF, MP4, Lottie, Rive + Figma, YouTube, Google Drive, Dropbox

500 MB

Max File Size

Via Cloudflare R2 presigned URLs

24h default, max 7 days

Session Auto-Expiry

Files deleted from R2, rows deleted from DB, page returns 410

Yes (MIT license)

Open-Source

Full tech stack documented

May 6, 2026

Posted on Twitter

"i needed to prove my design worked during a job interview. I had reddit feedback in my DMs but no way to organize it fast. So I built Likeability in an hour."

What came next

This was a 1-hour vibecode session for a job interview, but it turned into a useful tool for design feedback, client approvals, and interview prep. Key learnings: 1. Ship fast, iterate later. Don't over-engineer — just ship. 2. Use the right tools. Supabase, R2, Vercel = fast to ship, cheap to run. 3. Anonymous feedback is honest feedback. No login = no social pressure. 4. Auto-expiry is critical. GDPR compliance + storage costs = delete sessions automatically. If I were to expand this: A/B testing (compare multiple variants side-by-side) · heatmaps · export (download feedback as CSV or PDF). Live site: https://www.likeability.fyi

2026 — Kelashik.