qia-client/CLAUDE.md
ddshi 6fd1acc999 docs: 添加 CLAUDE.md 项目说明文档
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 11:11:31 +08:00

68 lines
2.0 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
"掐日子" (Qia Rizi) - A Chinese calendar reminder app with anniversaries, reminders, and notes. Built with React 19 + TypeScript + Supabase.
## Commands
```bash
# Install dependencies
pnpm install
# Start dev server
pnpm dev
# Build for production
pnpm build
# Run linting
pnpm lint
# Preview production build
pnpm preview
```
## Architecture
### Frontend (client/)
- **React 19 + TypeScript + Vite** - Core framework
- **Mantine UI v8** - Component library with custom Apple-inspired theme
- **Zustand** - State management with localStorage persistence
- **React Router v7** - Routing
- **Supabase** - Backend (auth, database)
### Key Directories
- `src/pages/` - Route pages (HomePage, LoginPage, RegisterPage, SettingsPage, ArchivePage)
- `src/components/` - Reusable components, organized by feature
- `src/stores/` - Zustand store (useAppStore for global state)
- `src/services/` - API layer (supabase.ts, api.ts)
- `src/types/` - TypeScript type definitions
- `src/utils/` - Business logic utilities (repeatCalculator, countdown)
### Data Model
- **Events**: Anniversary/Reminder items with repeat rules, lunar calendar support
- **Notes**: User's personal notes (HTML content)
- **AI Conversations**: Chat history with AI event parsing
## Key Patterns
### State Management
- Use `useAppStore` from `src/stores/index.ts` for global state (auth, events, notes)
- Store persists to localStorage via zustand/middleware
### API Calls
- Direct Supabase calls via `services/supabase.ts`
- Auth token handling with automatic refresh in store's `checkAuth`
### Components
- Custom date/time pickers in `src/components/common/` (FixedCalendar, WheelTimePicker)
- Event cards use context menus from `src/stores/contextMenu.ts`
## Chinese Localization
- App uses Simplified Chinese (zh-cn) throughout
- dayjs configured with Chinese locale
- Mantine DatesProvider set to Chinese