Engineering
đź”§

Engineering

Technology we use

Mobile app

  • Expo/React Native/Typescript - Our mobile app is written in Typescript, leveraging the Expo framework. We use SQLite with the Drizzle ORM to persist user data. Very occasionally, we might need to write small amounts of Objective-C, Swift or Java.

Front-end

  • React/Typescript - Our website is built with React (Razzle) and Typescript, and serves both long-form content as well as interactive content like our calorie calculators and macro calculators. Our website is a product in its own right, and we regularly A/B test new UI/UX to improve user engagement and conversion to our mobile app.
  • Tailwind - We use Tailwind rather than pure CSS to style all of our webpages.
  • Headless Wordpress/PHP - We use Wordpress as our content management system, although Wordpress does not directly serve to users. Instead, our React project uses Wordpress as a “headless” CMS, fetching content and metadata from the Wordpress API. We write only tiny amounts of PHP.

Back-end

  • Node.js/GraphQL - A single GraphQL server is the back-end for both our mobile app and website, serving CMS content and metadata, food database search results and remote configuration for our app.
  • AI - embeddings + chat completions - We use OpenAI models in a few places to improve the UX of our app. We use text vector embeddings to improve the quality of our food search results, as well as the chat completions API (i.e. “chat model”) to interpret complex descriptions of meals or recipes.
  • Search - Sqlite/FTS5/Information Retrieval/Rankings - We built a bespoke search retrieval and ranking method to deliver the most relevant food database results in our app.

Infrastructure

  • Kubernetes
  • Docker
  • Nginx

What we’re working on

  • Apple Health integration
  • User authentication
  • Food database imports/search
  • AI insights