Thank you for your interest in contributing! Here's how to get started.
- Rust ≥ 1.75 (via rustup)
- Python ≥ 3.10
- espeak-ng (
brew install espeak-ngon macOS)
# Clone the repo
git clone https://github.com/MettaMazza/script-reader.git
cd script-reader
# Build
cargo build
# Set up Python TTS
python3 -m venv venv
source venv/bin/activate
pip install kokoro soundfile numpy
# Run tests
cargo test
# Start dev server
cargo run- Format: Run
cargo fmtbefore committing - Lint: Run
cargo clippy— fix all warnings - Test: All new code must include tests. Run
cargo testto verify - Docs: Add doc-comments (
///) to all public functions and types
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes with tests
- Run
cargo fmt && cargo clippy && cargo test - Commit with a descriptive message
- Push and open a PR
- Parser (
src/parser.rs): Handles all script/novel parsing. Add new format support here. - TTS Engines (
src/tts/): Each engine implements theTtsEnginetrait. Add new engines by creating a new module. - Audio Pipeline (
src/audio_pipeline.rs): Orchestrates chapter-by-chapter generation. - Routes (
src/routes.rs): API handlers. All state is inAppState.
- Unit tests: Place in the same file as the code (using
#[cfg(test)] mod tests) - E2E tests: Place in
tests/e2e.rs— test full API roundtrips - Integration tests: Place in
tests/— test with real file inputs
Open an issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Your OS and Rust version (
rustc --version)