Engineering Getter: A Solo Founder's Journey with AI

How thoughtful architecture, smart AI orchestration, and a privacy-first approach came together to build an intuitive meal logging experience.

Engineering a Soulful Logging Experience

Getter Club is designed to provide a meal logging experience that is private, intelligent, and genuinely effortless. The aim is an app that understands its users, respects their privacy, and works with elegant precision.

To achieve this, especially as a solo endeavor, Artificial Intelligence was instrumental in augmenting the development process. This approach allowed for a deep focus on user experience, while AI helped address complex engineering challenges. This page offers a glimpse into the technology that makes Getter possible—a blend of thoughtful architecture and the smart application of today's best tools, always in service of the user.

Foundation for Reliability: Domain-Driven Design

A robust architectural blueprint is essential for any application aspiring to be both maintainable and scalable. Domain-Driven Design (DDD) provides this clarity for Getter. By structuring the app into logical layers—Presentation, Application, Domain, and Data—each with clear responsibilities, Getter can manage complexity and evolve features with stability.

This architectural choice ensures the app is resilient and that features are built upon a solid, well-reasoned foundation, utilizing Flutter and Riverpod for a responsive and cleanly managed state. This translates to a more dependable and consistent user experience.

Presentation Layer (Flutter UI, Riverpod State)

  • Views, Widgets, State Notifiers
User Interactions, State Updates

Application Layer / Use Cases

  • e.g., AnalyzeMealUseCase, ManualBackupUseCase
  • Orchestrates Domain Layer and Repositories
Calls Domain Logic, Accesses Data via Repo Interfaces

Domain Layer (Core Business Logic & Entities)

  • Entities: UserProfile, MealEntry, ProgressEntry
  • Repository Interfaces: UserProfileRepository, etc.
Data Operations via Repo Implementations

Data Layer (Data Access & Persistence)

  • Repository Implementations: UserProfileRepoImpl
  • Data Models: UserProfileModel - Hive Adapters
  • Interacts with Local DB (Hive) & Network Service
External Services, Local Storage

Core Services / Infrastructure Components

  • EncryptionService, NetworkService, DeviceID, Hive
  • Cloudflare Worker for Backups
  • Cloudflare Worker for AI Service

Getter's architecture, inspired by Domain-Driven Design, promotes a clear separation of concerns for a robust and scalable application.

Privacy by Design: Your Data, Your Device

Privacy is a cornerstone of the Getter experience. User accounts are intentionally absent; a food diary is deeply personal, and Getter treats it that way. All user information—profile, preferences, meal entries, and progress—is stored locally on the device using Hive, a fast and reliable NoSQL database well-suited for Flutter applications.

For users who desire the convenience of syncing across devices, Getter offers optional, end-to-end encrypted cloud backups. Data is encrypted on-device using AES-256 GCM *before* transmission to the cloud. Encryption keys are securely managed within the user's iCloud Keychain, meaning only the user can decrypt their data. The Cloudflare-based backup service merely stores an opaque, encrypted blob, with no visibility into the actual content.

iOS Device

(Getter App)

Cloudflare Worker

(Backup Service)

Cloudflare R2

(getter bucket)

User Data Path (Local):

  • 1. Data Entered in UI
  • 2. Processed by Domain/App
  • 3. Encrypted (AES-GCM) - Key in iCloud Keychain
  • 4. Stored in Hive (Local DB)
  • Device UUID in iCloud Keychain

Backup Data Flow to Cloud:

  • App collects data (Profile, Meals, etc.) from Hive.
  • Data is Gzip compressed.
  • Compressed data is Encrypted (AES-GCM) on device.
  • Encrypted & compressed payload sent via HTTPS to Cloudflare Worker.
  • Worker authenticates & stores payload in Cloudflare R2 (e.g., users/[uuid_placeholder]/[backupName_placeholder]).
  • Encrypted metadata (latest backup filename, timestamp) also sent and stored via Worker.

Restore Data Flow from Cloud:

  • App requests metadata from Worker (gets encrypted, compressed metadata from R2).
  • App requests backup file from Worker (gets encrypted, compressed backup data from R2).
  • App decrypts and decompresses data locally.
  • Data is restored into local Hive database.

Getter's backup system: data is encrypted client-side, then securely transmitted and stored using Cloudflare, ensuring user control and privacy.

Effortless Logging Through AI Orchestration

Getter's intuitive meal logging is powered by intelligent AI orchestration. Users can describe what they ate in natural language—like '30 unsalted pistachio nuts' or 'grande café con leche de avena'—and Getter understands.

This is achieved not by building a new foundational AI model, but by employing a sophisticated AI orchestration service. This service, running on a Cloudflare Worker, acts as an intelligent intermediary. It processes natural language input and queries a suite of best-in-class AI models and specialized food databases. It then standardizes their responses, ensuring users receive accurate and comprehensive nutritional information. This allows Getter to leverage the latest AI advancements to make meal logging truly effortless, freeing users to focus on their wellness goals.

iOS Device

(Getter App)

Meal Text (e.g., '1 apple and 2 bananas')
Structured Nutritional Data

Cloudflare Worker

(getter-ai-service)

  • Authenticates request
  • Orchestrates AI queries
  • Standardizes & parses results
Queries
Nutritional Info

AI Providers

(e.g., OpenAI, Gemini, Anthropic, Food APIs)

The Getter AI service orchestrates requests to various AI providers, transforming natural language meal entries into structured nutritional data for the user.

Technology in Service of You

Getter Club reflects a commitment to combining clear user-focused vision with modern development tools. The aim is an app that is not only functional and powerful but also private, beautiful, and a joy to use.

Every technical decision—Flutter for a responsive UI, DDD for a clean architecture, Hive for local-first data, Cloudflare for secure services, and intelligent AI orchestration—is made to enhance the user experience, delivering a supportive companion for one's wellness journey.

Experience Getter Club

See how this technology translates into a meal logging experience designed around you.

Discover How It Works