All posts

, 1 min read

650 tests for a penguin

Penggi turns a photo of a shirt into a tagged item in your closet. Getting the AI part right was fun. Making sure it never broke was the real work.

  • React Native
  • AI
  • Testing

Penggi started with a question I ask every morning: what do I wear? It became a fashion assistant: a digital wardrobe, an outfit builder, AI outfit picks and a stylist you can chat with. The penguin walking around this site is its mascot.

The app is React Native with Expo on the front, and a Flask backend for the AI. Take a photo of a piece of clothing and YOLO finds it, then Gemini vision describes it: type, colour, style. One photo, one tagged item in your closet.

Where it got serious

People's closets, photos and messages are personal. There's a community feed too, with posts, comments and messaging, so the data rules had to be right. Supabase row-level security means every query only ever sees what its user is allowed to see, enforced by the database, not by hoping the app remembers.

And then the tests. Every time I fixed one screen, another one broke quietly. So I kept writing tests until the count passed 650. It's not a number I set out to hit. It's how many it took before I stopped being scared of my own changes.

Tests aren't for proving the code works. They're so I can keep changing it.