Show HN: Nutrepedia – Nutrition info in 29 locales built with Clojure and Htmx

llovan 120 points 27 comments June 03, 2026
nutrepedia.com · View on Hacker News

Discussion Highlights (15 comments)

Kuyawa

Simple and beautiful, I love it.

recursivedoubts

awesome, very good looking and simple, useful functionality

cd4plus

I can't enter a serving size that's not a whole number on mobile because it automatically closes the keyboard when the text field is cleared

razorson

Nice great job, how do you handle multi languages?

llovan

Hi HN, I'm Jovan. I've been building Nutrepedia part-time from Monterrey, Mexico. It's a multilingual nutrition reference site: 1,635 foods rendered into 47,415 localized pages across 29 regional locales. Each page has nutrition facts, localized names, portion terms, regional routing, imagery, and short food context. The stack is Clojure, HTTP-Kit, Compojure, Hiccup, HTMX, and Postgres. Postgres handles the food data, localized content, admin workflow, task queues, search, and evaluation records. The search piece has been the most interesting technically. Latin-script fuzzy search uses pg_trgm and unaccent. CJK and other non-Latin scripts use PGroonga. Romanized aliases are indexed separately, so a query like "rasbhari" can find a Hindi food name like "rasbhari" / "रसभरी". I built this because most nutrition tools feel calorie-first, signup-first, and English focused. I wanted the reference layer to be free and useful before asking anyone to track meals or create an account. I'd especially appreciate feedback on search, localization mistakes, whether the pages are useful before tracking exists, and any obvious technical blind spots.

setnone

cool! i see at least two reasons in the title to upvote this

olarm

Very nice, what is the source of the data?

laurentlb

Is there a way to set the default unit? I'd prefer to see the information per 100g by default (instead using random units).

Finnucane

The search seems a bit weird. A search for salmon includes almonds in the results, and a search for spinach includes Tahitian taro.

torsianWorld

Great optimization!

simlan

Looks good. The quantities input box behaves strange on Firefox mobile. Can't seem to delete the input and type something new. Jumps to a default or any number before I get to type my grams.

yawaramin

Hello, nice work. I recommend running Chrome's built-in Lighthouse analysis tool specifically for accessibility. It will make some very helpful suggestions, like img alt text and colour contrast issues. One example that I eyeballed is the search bar–the background colour is pink and the text colour is yellow. Kinda hard to read :-)

voidnap

The search results aren't hyperlinks? So middle clicking to open in a new tab does nothing. Odd choice.

vivzkestrel

- we need an indian version of this website with all the 10000+ indian food items listed on it

Leptonmaniac

To be honest, there's still a long way to go. First, what is the benefit of using this over something established like fddb or any already existing nutritional app? Second, just translating the words for the units (like cup) doesn't work, because for example while "szklanka", the Polish word for glass, is indeed used in Polish recipes, there it means more something along the lines of "just grab whatever standard glass you have, it will be fine". It explicitly does not mean a unit of measurement of 236 ml. Third, since you are using a US source you fall into the trap of US defaultism here. The way carbohydrates are labeled is different around the world and I think only the US does this weird thing where you have to manually subtract the dietary fiber from the total carbohydrates. This matters because you essentially give non-US users (and definitely users from the EU) plainly incorrect amounts of labeled carbohydrates. All in all, cute project and good on you trying to tackle it. It looks okay though the AI smells bother me personally, but I don't think nutritional data is a great place to start for such a project and honestly I will not remember your site in a few days anymore.

Semantic search powered by Rivestack pgvector
10,324 stories · 97,050 chunks indexed