CountDown/CLAUDE.md

48 lines
2.1 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Development Commands
### Frontend Development
- `pnpm dev` - Start the frontend development server (runs Vite on localhost:1420)
- `pnpm build` - Build the frontend for production (TypeScript compilation + Vite build)
- `pnpm preview` - Preview the production build
### Tauri Development
- `pnpm tauri dev` - Start Tauri development mode (builds Rust backend + starts frontend)
- `pnpm tauri build` - Build the complete Tauri application for production
### Build Scripts
- `./build_desktop.sh` - Build desktop application
- `./build_android.sh` - Build Android application
## Architecture Overview
This is a **Tauri application** combining a Rust backend with a React/TypeScript frontend for building cross-platform desktop and mobile apps.
### Backend (Rust)
- **Database**: SQLite with rusqlite for storing anniversary records
- **Location**: Database stored in app data directory (`anniversaries.db`)
- **Schema**: `anniversaries` table with id, title, start_date, created_at
- **Core Commands**: All database operations exposed as Tauri commands in `src-tauri/src/lib.rs`
- `get_anniversaries` - Fetch all anniversaries with calculated days
- `get_anniversary_by_id` - Fetch single anniversary by ID
- `add_anniversary` - Add new anniversary
- `delete_anniversary` - Delete anniversary by ID
### Frontend (React + TypeScript)
- **Router**: React Router DOM with three main routes:
- `/` - HomePage (list all anniversaries)
- `/detail/:id` - DetailPage (view/delete specific anniversary)
- `/add` - AddPage (create new anniversary)
- **Data Flow**: Frontend calls Tauri commands to interact with Rust backend
- **Styling**: Component-specific CSS files for each page
### Key Dependencies
- **Frontend**: React 18, React Router DOM, Tauri API
- **Backend**: rusqlite (SQLite), chrono (date handling), serde (serialization)
- **Build**: Vite, TypeScript, Tauri CLI
### Package Manager
This project uses **pnpm** as specified in `tauri.conf.json` build commands.