A big problem with building 4 products in the first 4 months of self-employment, on a then-new-to-me tech stack (Next + React + Tailwind) is how much I wince when revisiting the earlier work. So much low-hanging fruit crying out to be tidied up. Must... resist...

Accidentally shipped some experimental Friday night changes last night. Found myself tinkering with the ‘90-day recoveries’ status bar, got carried away, reflexively committed & pushed… so instead of one status bar, have five instead… 🫣

🚀Shipped some small but significant improvements to charts:

1. Y-axis ticks are now labelled properly with the appropriate unit
2. Ditto for tooltip values
3. Removed a lot of horizontal padding on small screens to maximize chart width↔️

I used this approach for, and Are the favicons perfect? No. But for ~60 seconds of effort, they're a *lot* better than no favicon at all:

Your site DOES need a favicon✋

But you DON'T need to spend ages making it ⏱

1. Visit…
2. Add 1-3 letters relating to your product name (for I went for 'fIQ')
3. Choose brand font/bg colours
4. Download
5. Done ✅

Suffice it to say last week was a busy one in terms of fitIQ development, but I'm over the moon to have WHOOP API integration sorted 🤩🥰

Recap courtesy of

Not sure when my heart rate was higher: during this morning’s @GoZwift workout or clicking the ‘Send now’ button on an announcement email to all registered users 🥵

It's my 1,000th birthday!*  🥳

* Okay, not exactly. But this morning I recorded my 1,000th @WHOOP recovery, and earned a shiny new badge as a result 🏅 (no: I didn't just add it in so I could earn it myself 😅)

@Fer_MOMENTO I think I started following you a day or two before launch via #buildinpublic - the journey has been awesome to see! Well deserved success: great product, great execution 👏
Just shipped a WHOOP recovery distribution chart for Pro members 🤓

You can toggle whether the buckets are inclusive or exclusive - check the video 👇

One gripe: the icons are naff. Any React icon pack recommendations? Paid-for is fine 🙏

One mobile UX fail was how many clicks it took to sync with WHOOP (open menu -> scroll down -> click link to sync page -> click sync). A friend (and pro member 🤗) gave me great feedback. So now there's a big CTA in the middle of the previously empty nav bar 👇

Lots of UX work needed on the API flow to make it more seamless, esp. on mobile. Automatic sync for Pro members is coming shortly. Today is mostly about picking the off low-hanging fruit after rolling out API access yesterday. Grateful as always for feedback 🙏

@websla_sh Honestly, I don't know. I follow the #buildinpublic hash tag, but aside from a few sticky faces I don't feel like I'm on the "inside" of the community or know anyone's ups and downs particularly well. Interested to hear what others have to say!
If you're already a (pro) member, log in and head over to If you're not, feel free to check out the demo instead (which uses my metrics):

Feedback always welcome 🤗

NEW on - Seasonal Resting Heart Rate viz 📈

- First ever 'pro only' graph: free users are limited to 6 months of historical data anyway 💰
- Proves a hunch on *my* data at least: my RHR is a lot lower during winter months Vs summer 🥵

5. Poor conversion from votes -> visits -> users -> $$$

Takeaway: not sure. I really believe in the core product (and I use it myself), but either it doesn't sell itself, it's too niche, or people just want to talk to their PDFs 😀

BUT: lots learned. Next time 🥳#buildinpublic
A quick teardown of yesterday's impromptu PH launch:

* Upvotes: 58
* Final position: #26
* Visits: 79
* New users: 3
* Revenue: $0

Four word recap: disappointing but probably expected

Some more thoughts below 👇

The good: granted access to Garmin's Developer API program 🥳

The bad: the Garmin API uses OAuth 1.0a 😱

(If you've only ever dealt with OAuth 2.0, you really don't know how lucky you are!)

I've launched Digest Diff on Product Hunt today:… - if you want to take a look and think it's worthy of an upvote I'd hugely appreciate it 🥹

It's still a rough & ready MVP but I'm trying to validate the core ideas, hence the YOLO launch 🚀

Switched to gpt-4-0613 which "types" its responses a lot faster than the previous version ⚡️

Refining a few tweaks to select appropriate models (e.g. 3.5 with 16k context window) based on commit history length - watch this space 🚧