Files
calories-tracker/CLAUDE.md
2025-10-27 12:52:04 -03:00

2.9 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Development Commands

  • npm run dev - Start development server (Vite)
  • npm run build - Build for production
  • npm run preview - Preview production build

Environment Setup

Requires environment variables in .env:

  • VITE_APPWRITE_ENDPOINT - Appwrite server endpoint
  • VITE_APPWRITE_DBID - Database ID
  • VITE_APPWRITE_FOODENTRIESID - Food entries collection ID
  • VITE_APPWRITE_USERSETTINGSID - User settings collection ID
  • VITE_APPWRITE_MONTLYCALORIESID - Monthly calories collection ID

Architecture Overview

This is a TypeScript/Vite-based calories tracking application with Appwrite backend integration. Key architectural patterns:

Core Structure

  • Entry Point: src/index.ts - Main application logic and DOM manipulation
  • State Management: src/state.ts - Centralized application state
  • Backend Integration: src/appwrite.ts - Appwrite client and database operations
  • Type Definitions: src/types.ts - TypeScript interfaces for data models

Data Flow

  • User authentication managed through AppwriteAuth class
  • Food entries stored via AppwriteDB class with real-time Appwrite sync
  • Local food database in src/foodDatabase.ts for searching
  • Calendar view tracks daily calorie totals separately from individual entries

Key Components

  • Authentication: Login/register forms with session management
  • Food Search: Real-time search with keyboard navigation and debouncing
  • Food Entry: Add/edit/delete food items with nutritional calculations
  • Calendar: Monthly calendar view with daily calorie totals
  • Settings: User-configurable nutritional goals

State Management Patterns

  • Global app state in appState object
  • Date-based data loading (selectedDate/currentViewDate)
  • Monthly calorie aggregation separate from individual food entries
  • Real-time UI updates after database operations

DOM Manipulation

  • Utility functions in src/DomUtils.ts for type-safe DOM access
  • Event listeners centralized in setupEventListeners()
  • Dynamic card creation for food entries with collapsible details

Backend Integration

  • All data operations use Appwrite SDK
  • User-scoped queries with proper authentication
  • Concurrent operations for bulk deletions
  • Timezone-aware date handling for cross-timezone consistency

Code Patterns

Data Calculations

  • All nutrition values calculated from 100g base values in food database
  • Proportional scaling based on user-entered grams
  • Real-time preview updates during food entry

Error Handling

  • Try-catch blocks with user-friendly SweetAlert notifications
  • Loading states during async operations
  • Graceful fallbacks for missing data

Event Management

  • Event listener cleanup and re-attachment for dynamic content
  • Keyboard navigation support (arrows, enter, escape)
  • Click-outside handlers for dropdowns and modals