tuimail/CLAUDE.md
2026-02-17 17:24:35 +01:00

1.7 KiB

CLAUDE.md

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

Project Overview

This is a Rust terminal user interface (TUI) application built with Ratatui. It will evolve to become a tui mail client

Build and Run Commands

# Build the project
cargo build

# Run the application
cargo run

# Build optimized release version
cargo build --release

# Check code without building
cargo check

# Format code
cargo fmt

# Run clippy linter
cargo clippy

Test Mail Server

A Docker-based IMAP mail server is available for testing:

# Start the mail server
docker-compose up -d

# Create a test user
docker exec -it mailserver setup email add test@example.com password123

# Stop the mail server
docker-compose down

Connection details: localhost:143 (IMAP) or localhost:993 (IMAPS). See MAIL_SERVER_SETUP.md for detailed usage.

Architecture

This is a single-file application (src/main.rs) following the standard terminal application lifecycle:

  1. Terminal Setup: Enable raw mode and enter alternate screen
  2. Event Loop:
    • Render UI using Ratatui's declarative widget system
    • Poll for keyboard events (200ms timeout)
    • Exit on 'q' or Escape key
  3. Cleanup: Disable raw mode, leave alternate screen, restore cursor

Key Dependencies

  • ratatui (0.29): TUI framework providing widgets, layouts, and rendering
  • crossterm (0.28): Cross-platform terminal manipulation (raw mode, events, alternate screen)

Development Notes

  • Uses Rust edition 2024
  • The application uses a constraint-based layout system to center content
  • Terminal is set to raw mode to capture individual key presses
  • The alternate screen prevents terminal history pollution