This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
HackathonTUI is a Rust-based Terminal User Interface application for managing hackathons. It provides tools for participant registration, team formation, project submissions, judging, sponsorships, prizes, scheduling, and analytics.
cargo build # Build debug version
cargo run # Run in debug mode
cargo build --release # Build optimized release version
cargo test # Run tests
cargo check # Check for compilation errors
cargo fmt # Format code
cargo clippy # Run linter- main.rs: Entry point with event loop, polls keyboard input every 100ms via crossterm
- app.rs: Central state container (
Appstruct) holding navigation state, data, UI state, and form state
Input is processed in this priority order:
- Modal handling (forms, confirmations)
- Search mode
- Editing mode
- Screen-specific handlers
- Global shortcuts (
q=quit,?=help,/=search,Esc=back)
- models/: Domain entities (Hackathon, Participant, Team, Project, Judge, Score, Sponsor, Prize, ScheduleEvent)
- storage/json_store.rs: JSON file persistence at
~/.hackathontui/data/hackathons/{id}/{entity}.json - HackathonData: Container struct that bundles all related entities for a hackathon with
load()/save()methods
- ui/: Ratatui-based rendering with constraint-based layouts
- ui/components/: Reusable components (table, form, modal, tabs, charts)
- Screen views: dashboard.rs, hackathons.rs, participants.rs, teams.rs, projects.rs, judges.rs, judging.rs, sponsors.rs, prizes.rs, schedule.rs, analytics.rs
- Tab Navigation: 10 tabs per hackathon detail view, switchable via Tab/Shift+Tab or numeric keys (1-0)
- List Navigation: Vi-style (j/k) or arrow keys, Enter to select
- Common Actions:
n=new,e=edit,d=delete,c=check-in,s=submit/score - Status Messages: Auto-clear after 3 seconds
- UUIDs: All entities use UUID v4 for identification
- ratatui (0.29): TUI framework
- crossterm (0.28): Terminal manipulation
- serde/serde_json: JSON serialization
- chrono: Date/time handling
- uuid: Unique ID generation
- dirs: Cross-platform home directory detection
- thiserror: Error handling