CountDown/CLAUDE.md

2.1 KiB

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.