# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview Notify is a reminder/todo management application with multi-user reminders, recurring schedules, and push notifications via Bark. It has a Rust backend (primary) and Next.js frontend. ## Development Commands ```bash # Start development (Rust backend + frontend) make dev # Start development (Node.js backend - legacy) make dev-node # Stop all services make stop # Database migrations (Rust/SeaORM) make migrate # Run pending migrations make migrate-down # Rollback last migration make migrate-fresh # Reset database and re-run all migrations make generate-entities # Generate Rust entities from database # Build release make build ``` ## Architecture **Stack:** - Frontend: Next.js 14, React 18, Tailwind CSS 4, Radix UI (shadcn/ui) - Backend: Actix-web 4, SeaORM 2.0.0-rc (Rust) - primary - Database: PostgreSQL 16 **Key directories:** - `backend_rust/src/api/` - REST API endpoints - `backend_rust/src/timer/` - Background job scheduler (notifications, Bark delivery) - `backend_rust/src/entity/` - Auto-generated SeaORM models (DO NOT EDIT manually) - `backend_rust/migration/src/` - Database migrations - `frontend/src/app/` - Next.js pages (App Router) - `frontend/src/lib/api.ts` - Centralized API client **API endpoints (port 4000):** - `/api/auth` - Login, register - `/api/todos` - Personal todo CRUD with recurrence - `/api/reminder-tasks` - Multi-user reminder CRUD - `/api/notifications` - Notification center - `/api/me` - User profile/settings - `/api/invites` - Invite code management ## Database Migration Workflow Follow `.cursor/skills/database-migration/SKILL.md`: 1. Create migration file: `m{YYYYMMDD}_{sequence}_{description}.rs` in `backend_rust/migration/src/` 2. Register in `migration/src/lib.rs` 3. Run `make migrate` 4. Run `make generate-entities` 5. Never manually edit `backend_rust/src/entity/` files ## Key Patterns - **Notification generation**: Worker creates notification records for tasks due within N hours - **Bark delivery**: Retry with exponential backoff (1m/5m/15m/1h/4h) on failure - **Timezone handling**: All recurrence uses user's timezone; date alignment handles edge cases - **Multi-recipient**: Each reminder task creates separate notification per recipient ## Documentation - `docs/spec.md` - Product/technical spec (Chinese) with business rules, API definitions, UI requirements