Lord Ajax
i write software and shitty poetry
Home About Projects

Introducing IFeelGood: A Mobile-First Food & Calorie Tracker

text: In today’s fast-paced world, maintaining a healthy lifestyle can be challenging. With the rise of mobile technology, there’s a growing demand for apps that simplify health management. Enter IFeelGood, a minimal, mobile-first food tracking app designed to make calorie tracking as effortless as snapping a photo. Built with Next.js and Supabase, IFeelGood aims to provide a seamless user experience with a focus on simplicity and efficiency.

What is IFeelGood?

text: IFeelGood is a mobile-first application that allows users to track their food intake and calories with minimal effort. The app leverages AI-powered calorie estimation, enabling users to log their meals by simply taking a photo. This approach eliminates the need for manual entry, making it easier for users to maintain their dietary goals.

Core Philosophy

Technical Implementation

text: IFeelGood is built using a modern tech stack that includes Next.js for the frontend and Supabase for backend services. The app is designed to be highly responsive, ensuring a smooth user experience across different devices.

Key Features

Code Example

code: Below is a snippet demonstrating how the app handles food photo capture and analysis:

import { useState, useRef, useEffect } from "react";
    import { Camera } from "lucide-react";
    import { createClient } from "@/lib/supabase/client";
    import { useRouter } from "next/navigation";
    import { User } from "@supabase/supabase-js";
    import Image from "next/image";
    import { uploadFoodImage } from "@/lib/storage";
    
    export function FoodPhotoCapture({ onSuccess }) {
      const [isCapturing, setIsCapturing] = useState(false);
      const [capturedImage, setCapturedImage] = useState(null);
      const fileInputRef = useRef(null);
      const router = useRouter();
      const supabase = createClient();
    
      useEffect(() => {
        const getUser = async () => {
          const { data: { user } } = await supabase.auth.getUser();
          if (!user) {
            router.push("/auth/login");
          }
        };
        getUser();
      }, [supabase, router]);
    
      const handleCapture = () => {
        fileInputRef.current?.click();
      };
    
      const handleFileSelect = async (event) => {
        const file = event.target.files[0];
        if (file) {
          setCapturedImage(URL.createObjectURL(file));
          setIsCapturing(true);
          // Further processing and analysis logic here
        }
      };
    
      return (
        <div className="container">
          <button onClick={handleCapture} className="capture-button">
            <Camera className="icon" />
            Take Photo
          </button>
          <input
            ref={fileInputRef}
            type="file"
            accept="image/*"
            capture="environment"
            onChange={handleFileSelect}
            className="hidden"
          />
          {capturedImage && (
            <Image src={capturedImage} alt="Captured food" className="preview" />
          )}
        </div>
      );
    }
    

Installation and Usage

text: To get started with IFeelGood, clone the repository and install the dependencies:

git clone https://github.com/thomasdavis/ifeelgood.git
    cd ifeelgood
    npm install
    

Run the development server:

npm run dev
    

Visit http://localhost:3000 to view the app in your browser.

Architecture Decisions

text: The decision to use Next.js was driven by its ability to handle server-side rendering and static site generation, which are crucial for performance and SEO. Supabase was chosen for its real-time capabilities and ease of integration with authentication and database services.

Recent Improvements

text: Recent updates to IFeelGood include enhancements to the food logging feature, allowing users to edit notes associated with their entries. The app now also supports real-time updates using SWR, ensuring that users always have the most current data.

Future Roadmap

text: Future plans for IFeelGood include integrating more advanced AI features for calorie estimation and expanding the app’s capabilities to include exercise tracking and personalized health insights.

Conclusion

text: IFeelGood is a powerful tool for anyone looking to simplify their food tracking process. With its mobile-first design and AI-powered features, it offers a modern solution to an age-old problem. Whether you’re a health enthusiast or just starting your wellness journey, IFeelGood is designed to make tracking your nutrition as easy as taking a photo.

For more information, visit the GitHub repository and explore the live demo.