Hudson: Relationship Assistant hero image

Hudson: Relationship Assistant

Active
Started

Your secret weapon for being a thoughtful partner.

React NativeTypeScriptFirebaseExpo

Hudson started with a couple beers at the pool with my neighbor. He said, “Taylor, build my idea and we’ll make billions.”

Now, b/c of vibe coding, I couldn’t say no. Plus, it sounded fun to use a bunch of new technologies.

The Problem

It’s easy to forget the little things that matter. Birthdays, anniversaries, or that one-off comment your partner made that you swore you’d remember. Hudson is a second brain for your relationship so you don’t drop the ball.

What It Does

📅 Never Forget Again
Birthdays, anniversaries, random holidays — Hudson gives you a heads-up before you’re in the doghouse.

👗 Size Detective
Clothing, jewelry, ring sizes — saved once, ready forever. No more closet raids or panic texts.

📸 Gift Vault
Snap a photo when they say “I want that.” Six months later? Hero status unlocked.

📊 Date Night Scorecard
Keep track of what worked and what bombed. (Escape room disaster? Never again.)

💕 Love Language Decoder
Figure out what actually matters to them — words, time, acts — so you don’t miss the point.

🥊 Argument Scoreboard
A playful tally of who “won” your silly arguments.

Favorites
Coffee order, wine, pizza toppings, flowers — all the little things that show you’re paying attention.

📝 Quick Notes
Their boss’s name, their childhood dog, that random allergy — one place to keep it all straight.

How It’s Built

React Native + Expo. Firebase for anon user accounts but optional auth for cross device syncing. Lots of fun other little experiments inside.

Project Timeline

Follow the development journey

One-Shot Icon Comparison Tool

feature at 5:20 PM

What’s New: Icon Library Comparison In App

The app started with emoji for most of the icons. After staring at it for a long time, I realized I didn’t love it. So, we tore it out and put in Lucide. I felt much better about the UI, but still wasn’t 100% happy.

Part of that switch from emoji -> Lucide was to abstract all spots to one shared Icon.tsx component. B/c we had that, it was easy to make that component work with an Icon Registry that let me map multiple icons across different sets.

That led to this handy interface for checking out how they look in comparison. This was a one-shot Claude Code creation baesd on a very simple prompt.

My own lil Storybook without using Storybook(more on that eventually).

Icon compare screenshot

Tech Decisions for Hudson

📝 update at 5:02 PM

What Tech?

At Offline, we already use Flutter for our main apps, and our mobile dev Michael Jajou Bachuri is amazing. I could hvae vibe coded in Flutter too—but I wanted to try something different.

I picked React Native since we’re already deep into React at Offline for interanal admin projects. It feels like the go-to for vibe coding right now. The tools just know how to do this stuff with some medium-to light “but don’t make 1k line files.”

At first, I tried using CloudKit for local data sync. That turned into way more effort than it was worth. Switching to Firebase was a total unlock—Claude Code made the conversion in an almost one-shot, and suddenly everything just worked.

All I had to do was clean up the CloudKit remnants and layer in Firebase auth. The flow is simple: run the app as an anonymous user by default, delete your account if you want, or sign in with Google or Apple ID to sync across devices and keep data around longer.