Mobile app / Calorie tracking

QuickCal

QuickCal is a focused iOS and Android calorie counter built for speed. Users keep a personal food library on the device and log known meals in one tap or through a short portion step.

  • iOS
  • Android
  • Offline-first
  • Lifetime purchase
QuickCal home screen with quick log and today’s log

Overview

What QuickCal is about

What it is

QuickCal is a small iOS and Android calorie counter designed around fast repeat logging. There is no account and no shared online food database; foods, logs, settings, planner data, and images stay on the device.

Why it exists

Many calorie apps make repeat logging slow by forcing users through large shared food catalogs. QuickCal treats setup as a one-time cost: save the foods you actually eat, pin frequent items, then log them quickly from Home.

My role

I designed and built QuickCal as a solo project, including the native mobile UI, offline-first architecture, SQLite data layer, logging workflows, trial and lifetime purchase flow, backup tools, and iOS/Android release configuration.

QuickCal lifetime unlock purchase screen

Product focus

Fast logging, fully on-device

QuickCal keeps the experience small on purpose: a personal food library, one-tap Quick Log, portion multipliers when needed, and local SQLite storage — with a 14-day trial and a one-time lifetime unlock.

Core experience

What you can do

Quick Log

Log a saved food or meal in one tap.

Portion Logging

Use 1x, 1.5x, 2x, or a custom multiplier for portion-based items.

Personal Library

Maintain your own on-device food library with optional photos and pinned items.

Offline Reference Foods

Copy common USDA reference ingredients into your personal library without relying on an online food database.

Today & History

Review, edit, delete, and undo logged entries while browsing previous days.

Goals & Planner

Set calorie and optional macro goals, with a local calorie planner that can calculate recommended targets.

Local-First Data

SQLite storage, retention controls, ZIP backup/import, and no account or cloud sync required.

Contribution

What I built

Product architecture

Built QuickCal as an offline-first native mobile app with no application backend. SQLite is the source of truth for foods, logs, goals, settings, planner data, and entitlement state.

Mobile UI

Built a four-tab native interface for Home, Library, History, and Settings, including quick-entry controls, pinned foods, Today’s Log, themes, and mobile-safe navigation.

Logging & personal library

Implemented typed calorie logging, one-tap Quick Log, portion-based logging, user-owned library items, pinned foods, optional local images, and an offline reference-food copy workflow.

Local data

Implemented versioned SQLite migrations, snapshot-based log history, configurable retention, clear-history and erase-all flows, and local ZIP export/import.

Planner & settings

Implemented calorie and optional macro goals, day reset time, retention settings, themes, onboarding replay, and a local calorie planner.

Purchases & release

Implemented a 14-day trial, one-time lifetime unlock, purchase restore, local entitlement caching, and EAS configuration for iOS and Android store builds.

Technology

Stack

Mobile

  • Expo 54
  • React Native 0.81.5
  • React 19.1
  • expo-dev-client

Language

  • TypeScript

Database / Storage

  • SQLite / expo-sqlite
  • expo-file-system
  • Bundled JSON reference foods
  • fflate for ZIP backup

Navigation / UI

  • React Navigation 7
  • react-native-screens
  • react-native-safe-area-context
  • expo-linear-gradient
  • expo-font
  • expo-image-picker
  • expo-image-manipulator

Purchases

  • expo-iap
  • App-managed local trial/entitlement state

Tooling

  • TypeScript checks with tsc
  • EAS Build
  • Node smoke scripts

Get the app

Get QuickCal

Download QuickCal on iOS or Android — offline-first calorie tracking with a personal food library.