fretsome-cli
Command-line interface using Ratatui for rich terminal interactions
A decidedly nerdy tool to help study music - This project serves dual purposes: creating a powerful music practice application and providing a learning platform for modern Rust development.
Fretsome is a multi-platform music practice tool that combines structured learning with modern web technologies. It’s designed to help musicians practice more effectively through data-driven insights and structured exercises.
The project is built as a modular suite with multiple interfaces:
fretsome-cli
Command-line interface using Ratatui for rich terminal interactions
fretsome-tui
Text-based user interface for detailed practice sessions
fretsome-web
Web interface built with Axum and Leptos
fretsome-mobile
Mobile/desktop apps using Tauri
fretsome-api
REST API backend for data management
fretsome-core
Core business logic and data models
# Clone the repositorygit clone https://codeberg.org/RyanParsley/fretsome.gitcd fretsome
# Build all componentsjust build
# Run the CLI versionjust run-cli
# Start the web interfacejust run-webjust build # Build all componentsjust test # Run test suitejust lint # Code quality checksjust docs # Generate documentationjust run-cli # Start CLI interfacejust run-web # Start web serverjust run-tui # Start terminal UIfretsome/├── fretsome-core/ # Core business logic├── fretsome-api/ # REST API backend├── fretsome-cli/ # Command-line interface├── fretsome-tui/ # Terminal user interface├── fretsome-web/ # Web application├── fretsome-mobile/ # Mobile/desktop apps├── data/ # Sample music data├── music/ # Music notation files├── docs/ # Documentation├── book.toml # mdBook configuration└── justfile # Build recipesFretsome embodies the principle that learning should be practical and enjoyable. By building a real application with multiple interfaces, it provides hands-on experience with:
This project welcomes contributions! Whether you’re interested in: