All projects

FitUp

A fitness app for logging food intake, workouts and monthly progress. It connects a React Native and Expo mobile interface with a Laravel API backend.

FituUp Banner

Who it is for

People who want to log food and workouts and track their progress month by month.

Results & impact

  • One fitness application covers food logs, workouts and monthly progress tracking.

Daily logs and a monthly overview

FitUp connects three related areas: food, workouts and progress tracking. Beyond a list of technologies, the project presents a mobile solution for recording activities regularly and reviewing them over time.

The challenge

Bring food logging, workout tracking and monthly progress into a single mobile application.

The solution

The mobile application uses React Native and Expo and communicates with a Laravel API. Its technology stack also includes React Navigation, Axios, React Hook Form, Victory Native and NativeWind.

A mobile application and a separate API

React Native and Expo form the mobile application, while Laravel provides the backend API. The stack also includes React Navigation, Axios, React Hook Form, Victory Native and NativeWind. Exact data models and my personal scope will be added from the actual repository.

Summarising a month of workouts

The example calculates workout count and total duration for a selected month. It uses sample records and assumes dates in YYYY-MM-DD format. It does not implement nutrition advice or actual FitUp analytics.

illustrative-monthly-summary.ts
type Workout = { date: string; minutes: number };

function monthlySummary(workouts: Workout[], month: string) {
  if (!/^\d{4}-(0[1-9]|1[0-2])$/.test(month)) {
    throw new Error("Expected YYYY-MM");
  }
  const entries = workouts.filter(
    (workout) => workout.date.startsWith(`${month}-`),
  );
  return {
    workouts: entries.length,
    minutes: entries.reduce((sum, workout) => sum + workout.minutes, 0),
  };
}