From 2785ef04275e15a20b2caab68e6f6ac91ee093d4 Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Fri, 10 Oct 2025 20:01:12 -0500 Subject: [PATCH] adding claude file --- CLAUDE.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..3173843 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,58 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +BackSafe is a cross-platform desktop application for backing up data from mobile phones (primarily Android, with photos/videos support on iOS/iPadOS) using a user-provided API key. Built with Avalonia UI and .NET 8, targeting Windows, macOS, and Linux. + +## Development Commands + +### Build and Run +```bash +dotnet build # Build the project +dotnet run # Run the application +dotnet build -c Release # Build for release +``` + +### Debugging +- Avalonia diagnostics are enabled in Debug builds only (BackSafe.csproj:22-25) +- Use F12 or Ctrl+F12 within the running application to access DevTools in Debug mode + +## Architecture + +### UI Framework: Avalonia UI +- Uses AXAML (Avalonia XAML) for UI definitions +- Fluent theme is the default (App.axaml:13) +- Compiled bindings enabled by default (BackSafe.csproj:8) + +### MVVM Pattern +- **ViewModels**: Inherit from `ViewModelBase` (extends `ObservableObject` from CommunityToolkit.Mvvm) +- **Views**: Located in `Views/` directory, defined with `.axaml` files and code-behind `.axaml.cs` +- **ViewLocator**: Automatically maps ViewModels to Views by naming convention (ViewModel → View) + - Example: `MainWindowViewModel` → `MainWindow` + - Implementation in ViewLocator.cs:16 + +### Application Entry Point +- `Program.cs`: Standard .NET entry point + - Configures Avalonia with platform detection, Inter font, and trace logging +- `App.axaml.cs`: Avalonia initialization + - Disables Avalonia's DataAnnotation validation to avoid conflicts with CommunityToolkit (App.axaml.cs:35-46) + - Sets MainWindow with MainWindowViewModel as DataContext + +### Key Dependencies +- **Avalonia 11.3.6**: Cross-platform UI framework +- **CommunityToolkit.Mvvm 8.2.1**: MVVM helpers (ObservableObject, commands, etc.) +- **Avalonia.Fonts.Inter**: Default font package + +### Project Structure +- `ViewModels/`: Contains all ViewModel classes +- `Views/`: Contains AXAML view definitions and code-behind +- `Models/`: Placeholder directory for data models +- `Assets/`: Application resources (icons, etc.) +- `app.manifest`: Windows application manifest + +## MVVM Conventions +- ViewModels use partial classes to support MVVM Toolkit source generators +- Properties in ViewModels should use `[ObservableProperty]` attribute for automatic INotifyPropertyChanged implementation +- Views use `x:DataType` for compiled bindings (see MainWindow.axaml:8)