This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm start- Start development servernpm run build- Build for productionnpm run watch- Build with watch mode for developmentnpm test- Run unit tests with Karma/Jasminenpm run lint- Run ESLint for code quality
npx cap build android- Build Android appnpx cap open android- Open Android project in Android Studionpx cap build ios- Build iOS appnpx cap open ios- Open iOS project in Xcodenpx cap sync- Sync web assets and plugins to native platforms
- Angular 15 with Ionic 6 for cross-platform mobile development
- Capacitor for native mobile functionality (replaces Cordova)
- Firebase integration for potential cloud features
- ECharts (via ngx-echarts) for data visualization and charting
- Ionic Storage with SQLite driver for local data persistence
Main Entry Points:
src/main.ts- Angular bootstrapsrc/app/app.module.ts- Root module with storage and Firebase configurationsrc/app/app-routing.module.ts- Top-level routing with user setup guard
Tab-Based Navigation:
- Dashboard (tab1) - Main overview and charts
- Weight Log (tab2) - Weight entry and history
- Achievements - Progress tracking
- Settings - User preferences and configuration
Data Architecture:
- Models:
src/models/contains TypeScript interfaces for WeightLog and MacroLog - Services:
src/services/contains business logic:ionic-storage.service.ts- Main data persistence layer using Ionic Storage with SQLiteweight-log.service.ts- Weight logging operationsmoving-average.service.ts- Calculations for trend analysisunit-conversion.service.ts- Weight unit conversions (lbs/kg)
Component Organization:
- Pages:
src/app/pages/- Route-level components for each tab - Components:
src/app/components/- Reusable UI components:- Chart components (trend-chart-echarts, trend-charts)
- Data entry (weight-entry-modal, macro-tracker)
- Progress tracking (week-progress)
- Shared:
src/app/shared/- Common utilities like intro swiper
- Uses Ionic Storage with SQLite as primary driver for offline-first architecture
- Falls back to IndexedDB and LocalStorage on web platforms
- Storage keys defined in WeightLogStorage enum: 'settings', 'weightLog', 'macroLog'
- Moving averages calculated client-side for trend analysis
- Weight Tracking: Supports both pounds and kilograms with automatic conversion
- Body Composition: Optional muscle and fat percentage tracking
- Macro Tracking: Precision Nutrition-style portion tracking (pnProtein, pnFat, etc.)
- User Setup Flow: Guard-protected onboarding with intro swiper
- Moving Averages: 7-day rolling averages for trend smoothing
- Unit Tests: Jasmine/Karma setup for component and service testing
- Linting: ESLint with Angular-specific rules and TypeScript support
- TypeScript: Configured with strict mode disabled but other strict options enabled
- Android: Builds to
android/directory, uses Gradle build system - iOS: Builds to
ios/directory, uses Xcode project - Web Output: Builds to
www/directory for web deployment or Capacitor packaging