Skip to content
Hatef Firoozian
← Back to work

Frontend Developer & Product Designer

Jan 2026 – Present

Macro Maxxer

Find restaurant menu items that fit your macros, without digging through the entire menu.

Macro Maxxer application preview

Project Overview

Macro Maxxer is a fast-food macro tracker that helps users see the calories and macronutrients in their order before they buy it. It makes it easier to compare menu items, customize an order, and build the best option around highest protein or lowest calorie items, or simply eating more intentionally without having to give up eating out.

Core Features:

  • Searchable restaurant menus
  • Macro-based sorting and filtering
  • Standard and build-your-own ordering flows
  • Live nutrition calculations
  • Responsive desktop and mobile interface

The Problem

Fast-food nutrition information is harder to use than it should be. Finding a meal that fits a specific calorie or macro goal can turn into a long, inconsistent process with no simple way to compare everything in one place.

  • Information is difficult to scan

    Nutrition details are often buried in crowded PDFs, inconsistent layouts, and poorly organized documents.

  • Comparing options takes too much effort

    Users have to move between websites and inspect menu items individually instead of comparing the full menu in one place.

  • The final nutrition can still be unclear

    Important macro details may be missing, and customizations can make the final totals difficult to predict.

Customization makes the process even harder. Removing an ingredient, changing a sauce, or adding a topping can significantly change the final calories and macros, but most restaurant websites do not make those changes easy to understand before ordering.

How It Works

Macro Maxxer simplifies eating out into four steps: search for a meal, build its structure, customize the details, and review the final results.

01

Search

Find restaurants, menu items, or meals through search and browsing.

02

Build

Choose the main item or meal structure to start your order.

03

Customize

Adjust ingredients, portions, variants, and add-ons to fit your meal.

04

Results

Review live nutrition updates and final calories and macros.

My Role & Responsibilities

As the sole designer and developer of Macro Maxxer, I was responsible for every stage of the project, from defining the product concept to designing the interface and building the application.

01/04 · PLAN

Product & Planning

Defined the product vision and user experience, identified real nutrition-tracking needs from personal use, and scoped features around what mattered most for launch.

02/04 · DESIGN

UX/UI Design

Designed the core user flows, organized nutrition information into a clear hierarchy, and refined interactions to keep the experience intuitive.

03/04 · BUILD

Front-End Development

Built the application using Next.js, React, TypeScript, and Tailwind CSS, and developed responsive layouts and interactions for browsing and customizing meals.

04/04 · SCALE

Architecture & Systems

Designed a scalable data structure supporting standard and build-your-own menus, built reusable systems for adding new restaurants, and balanced flexibility with maintainability.

Target User

Macro Maxxer is designed for people who want to eat out while staying aligned with their nutrition goals. They may be tracking calories, prioritizing protein, losing weight, gaining muscle, or simply trying to make more intentional choices—but they want the process to be fast, clear, and practical.

Target User Profile

Current frustrations

  • Nutrition information varies across restaurants.
  • Comparing options requires too many steps.
  • Final nutrition totals can be unclear after customization.

What they're trying to accomplish

  • Build meals that fit their calorie and macro goals.
  • Find high-protein options quickly.
  • Understand how customizations affect nutrition.

Success looks like

“I found a meal I'm excited to eat, I know it fits my nutrition goals, and it only took me a minute to build.”

Core User Flow

The overall experience was designed to help users move from choosing a restaurant to building a complete meal with as little friction as possible. The homepage focuses on getting users into the right restaurant quickly, while the restaurant page provides the tools needed to compare menu items, customize orders, and review nutrition before making a decision.

User Journey

Choose restaurant

Select a restaurant from the homepage.

Browse & compare

Explore the menu using categories, sorting, filters, and rankings.

Standard item

Open an item and customize portions, ingredients, or add-ons.

Build-your-own

Build a meal by selecting ingredients while nutrition updates.

Add to cart

Add the completed item or build to the meal.

Review meal

See the full order and combined nutrition totals.

The flow intentionally follows a familiar restaurant ordering experience while adding nutrition-focused tools that help users make informed decisions throughout the process instead of only after placing an order.

Main Product Features

Macro Maxxer is built around a set of features that make exploring restaurant menus, comparing meals, and building macro-friendly orders faster and more intuitive than traditional restaurant websites.

Fast restaurant discovery

Users can quickly find a restaurant through search, browse popular options, or choose from restaurants that are known for offering macro-friendly meals. The homepage is designed to minimize friction so users can reach the menu they want as quickly as possible.

  • Search
  • Popular restaurants
  • Restaurant recommendations
Macro Maxxer restaurant and menu-item search experience

Flexible menu exploration

Instead of forcing users to scroll through a long menu, Macro Maxxer provides multiple ways to find the right meal. Users can browse categories, switch between different menu views, sort items by nutrition, and apply filters based on their goals.

  • Category navigation
  • Protein sorting
  • Calorie filtering
  • Menu rankings
Macro Maxxer menu categories, sorting, and nutrition filters

Detailed meal customization

Every menu item can be explored in more detail through an expanded view that supports ingredient customization, combo creation, and nutrition updates. Users can understand exactly how each decision affects their meal before adding it to their order.

  • Ingredient controls
  • Portion variants
  • Add-on selection
Macro Maxxer detailed meal customization experience

Build-your-own restaurant support

Macro Maxxer supports both traditional restaurant menus and restaurants where meals are assembled from individual ingredients. Users can build their meal step by step while always seeing an updated summary of their current order.

  • Step-by-step builder
  • Ingredient-based nutrition
  • Sticky macro summary
Macro Maxxer build-your-own meal builder

Complete meal overview

Rather than showing nutrition one item at a time, Macro Maxxer lets users review their entire order before purchasing. The final cart combines all selected items into a single nutrition summary, making it easier to understand the complete meal.

  • Combined nutrition
  • Meal breakdown
  • Protein score
  • Cart summary
Macro Maxxer complete meal and nutrition overview

Important UX Decisions

Throughout the project, I focused on reducing cognitive load and making nutrition information easy to understand without overwhelming users. Rather than adding more features, many design decisions centered around presenting complex information in a way that felt familiar, predictable, and quick to scan.

01

Prioritizing the most important information

Restaurant items contain a lot of information, so I carefully structured the card hierarchy to guide the user's attention. Images provide quick visual recognition, the item name establishes context, calories set expectations, and the macronutrients are grouped together for easy comparison. Separating calories from the macro values makes both easier to scan without competing for attention.

Result

Users can compare meals quickly without feeling overwhelmed.

02

Showing the impact of customizations

Customizing a meal can dramatically change its nutrition, but many restaurant websites don't clearly show what changed. Instead of only updating the totals, Macro Maxxer highlights how each customization affects calories and macros by displaying the increase or decrease alongside the updated values.

Result

Users immediately understand how their changes affect the meal instead of guessing why the numbers changed.

03

Simplifying complex restaurant types

For build-your-own restaurants, users make many small decisions that gradually create a meal. Rather than forcing users to scroll back and forth to check their totals, I added a sticky nutrition summary that updates live as ingredients are added or removed.

Result

Users can continuously monitor their meal while building it, reducing unnecessary scrolling and making experimentation much easier.

Standard Menus vs Build-Your-Own Restaurants

One of the biggest design challenges in Macro Maxxer was supporting two fundamentally different types of restaurant experiences within the same application.

Traditional restaurants like Chick-fil-A or McDonald's are built around predefined menu items. Users simply choose an item, make a few optional customizations, and add it to their order.

Build-your-own restaurants, such as Chipotle or MOD Pizza, work very differently. Instead of selecting a finished item, users create their meal step by step by choosing ingredients from different categories like bases, proteins, toppings, and sauces. Because every combination is unique, a system based on predefined meals wouldn't provide the flexibility users expect.

UX Challenges

Standard menus

Large item cards work well because each card represents a complete meal.

Build-your-own menus

The same pattern becomes overwhelming when users must choose from many individual ingredients, so the interface needs a more compact builder.

Technical Approach

Shared system

Both restaurant types use the same overall architecture and reusable components.

Restaurant-specific behavior

Required ingredients, category limits, included items, and customization rules are controlled through structured restaurant data rather than duplicated code.

Reusable Components and Data Structure

Macro Maxxer is built around reusable components and a data-driven architecture, so the same interface can adapt to very different restaurant types without duplicating work.

Reusable components

Menu cards, nutrition summaries, filters, and the cart are shared across every restaurant, keeping the experience consistent.

Data-driven restaurant behavior

Each restaurant's menu, ingredients, and rules come from its own data, which determines whether it uses a standard menu or a build-your-own experience.

Easier expansion

Adding a new restaurant is mostly a matter of adding its data instead of rebuilding the interface from scratch.

Reusable component and restaurant data architecture

Restaurant Data

Shared Components

Menu Cards

Filters

Nutrition Summaries

Cart

Standard Menus + Build-Your-Own Menus

Responsive Design

Macro Maxxer was designed to work across desktop and mobile without removing any core functionality. Rather than creating two different experiences, the goal was to adapt the layout so it stayed clear, usable, and easy to navigate on smaller screens.

Desktop · 1440px
Macro Maxxer desktop restaurant menu at a 1440 pixel viewport
Mobile · 390px
Macro Maxxer mobile restaurant menu at a 390 pixel viewport

01Navigation

Desktop keeps sorting, filters, and view controls visible, while mobile groups them into a compact menu to save space.

02Category browsing

The desktop category sidebar is replaced on mobile with a horizontally scrollable navigation so users can jump between sections without losing screen space.

03Complex screens

Detailed item views and build-your-own flows are reorganized vertically on smaller screens so nutrition, customization, and review panels remain readable and easy to use.

Result

The full product experience stays available across screen sizes without making mobile feel crowded.

Main Challenges and Solutions

Macro Maxxer taught me a lot beyond just writing code. Looking back, most of the biggest lessons came from mistakes I made early in the project.

01

Designing for scalability

Challenge

Early in the project, I was mainly focused on getting features working. As the app grew, I realized some of those early decisions did not scale well and made future changes harder than they needed to be.

Solution

That experience pushed me to think more carefully about the system before implementation. I started planning shared structures earlier, especially for features I knew would expand over time.

02

Using AI effectively

Challenge

Another challenge was learning how to use AI effectively during development. At first, I leaned on it too heavily, which sometimes produced code that worked but did not fit the structure of the project.

Solution

Over time, I learned that AI is most valuable as a tool for speeding up development and brainstorming, not as something that should make every decision for me. I became more intentional about reviewing, adapting, and guiding what it produced.

Lessons Learned

01

Complete feature development lifecycle

I learned that adding a feature involves much more than writing code. A stronger process starts by defining the problem clearly, planning the experience and technical impact, building within the existing system, and then validating the work before release and iteration.

1

Define

Problem · Requirements · Criteria

2

Design

Flow · UI states · Data · State

3

Build

Logic · Components · Implementation

4

Validate

Testing · Edge cases · Review

5

Ship

Pull request · Release · Iterate

02

Solve real problems

I stopped judging features by whether they were interesting to build and started asking whether they genuinely improved the user experience.

03

Plan the system earlier

More upfront thinking around architecture, scalability, and documentation would have made later development smoother.

04

Build for the user

The biggest lesson was that strong software is not just about adding features—it is about building the right features clearly and intentionally.

Future Improvements

Macro Maxxer already covers the main experience of finding, comparing, customizing, and building meals, but there are still several ways I would like to expand it.

User accounts

Users could favorite menu items, save completed meals, and access a personal dashboard with previous orders and saved combinations.

Map and nearby restaurants

Users could find nearby restaurants and compare options based on what is actually available around them.

Stronger data validation

A more reliable process for checking nutrition data, filling in missing public information, and keeping restaurant menus accurate over time.

These additions would make Macro Maxxer feel more personal, more useful in everyday situations, and easier to rely on long term.

Keep exploring

Explore More Work

Continue with another project and see how each challenge shaped a different solution.