feat: add CLAUDE.md file
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user