Files
flutter_server_box/CLAUDE.md
lollipopkit🏳️‍⚧️ efc0315c93 new: CLAUDE.md
2025-09-01 23:32:44 +08:00

3.6 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Commands

Development

  • flutter run - Run the app in development mode
  • flutter test - Run all tests
  • dart run fl_build -p PLATFORM - Build the app for specific platform (see fl_build package)

Code Generation

  • dart run build_runner build --delete-conflicting-outputs - Generate code for models with annotations (json_serializable, freezed, hive, riverpod)
    • Every time you change model files, run this command to regenerate code (Hive adapters, Riverpod providers, etc.)
    • Generated files include: *.g.dart, *.freezed.dart files

Testing

  • flutter test - Run unit tests
  • flutter test test/battery_test.dart - Run specific test file

Architecture

This is a Flutter application for managing Linux servers with the following key architectural components:

Project Structure

  • lib/core/ - Core utilities, extensions, and routing
  • lib/data/ - Data layer with models, providers, and storage
    • model/ - Data models organized by feature (server, container, ssh, etc.)
    • provider/ - Riverpod providers for state management
    • store/ - Local storage implementations using Hive
  • lib/view/ - UI layer with pages and widgets
  • lib/generated/ - Generated localization files
  • lib/hive/ - Hive adapters for local storage

Key Technologies

  • State Management: Riverpod with code generation (riverpod_annotation)
  • Local Storage: Hive for persistent data with generated adapters
  • SSH/SFTP: Custom dartssh2 fork for server connections
  • Terminal: Custom xterm.dart fork for SSH terminal interface
  • Networking: dio for HTTP requests
  • Charts: fl_chart for server status visualization
  • Localization: Flutter's built-in i18n with ARB files
  • Code Generation: Uses build_runner with json_serializable, freezed, hive_generator, riverpod_generator

Data Models

  • Server management models in lib/data/model/server/
  • Container/Docker models in lib/data/model/container/
  • SSH and SFTP models in respective directories
  • Most models use freezed for immutability and json_annotation for serialization

Features

  • Server status monitoring (CPU, memory, disk, network)
  • SSH terminal with virtual keyboard
  • SFTP file browser
  • Docker container management
  • Process and systemd service management
  • Server snippets and custom commands
  • Multi-language support (12+ languages)
  • Cross-platform support (iOS, Android, macOS, Linux, Windows)

State Management Pattern

  • Uses Riverpod providers for dependency injection and state management
  • Uses Freezed for immutable state models
  • Providers are organized by feature in lib/data/provider/
  • State is often persisted using Hive stores in lib/data/store/

Build System

  • Uses custom fl_build package for cross-platform building
  • make.dart script handles pre/post build tasks (metadata generation)
  • Supports building for multiple platforms with platform-specific configurations
  • Many dependencies are custom forks hosted on GitHub (dartssh2, xterm, fl_lib, etc.)

Important Notes

  • Never run code formatting commands - The codebase has specific formatting that should not be changed
  • Always run code generation after modifying models with annotations (freezed, json_serializable, hive, riverpod)
  • Generated files (*.g.dart, *.freezed.dart) should not be manually edited
  • AGAIN, NEVER run code formatting commands.
  • USE dependency injection via GetIt for services like Stores, Services and etc.
  • Generate all l10n files using flutter gen-l10n command after modifying ARB files.