Cantara is a powerful song presentation software designed for churches and small groups. It allows you to quickly create beautiful presentations with song lyrics, chords, sheet music, and more. This repository contains version 3.0, a complete rewrite of the original Cantara in Rust using the Dioxus framework.
Work is currently in progress. Contributions are welcome!
- Song Lyrics Presentation: Display song lyrics with beautiful formatting
- Presentation Styling: Customize the appearance of your presentations
- Multi-platform: Works on Windows, macOS, and Linux. Android, iOS, and Web are going to be implemented soon.
- User-friendly Interface: Easy to use for both technical and non-technical users
- Repository Management: Organize songs from multiple sources
- Remote Repository Support: Download and use song collections from remote sources
- Rust (latest stable version)
- Dioxus CLI
If you don't have Rust installed, you can install it using rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
For Windows, download and run the installer from the rustup website.
Once Rust is installed, you can install the Dioxus CLI:
cargo install dioxus-cli
Clone the repository and build the application:
git clone https://github.com/CantaraProject/Cantara.git
cd Cantara
cargo build --release
The compiled binary will be available in the target/release
directory.
To develop the app locally, run the following command in the root of your project:
dx serve
This will start a development server with hot reloading.
The project is documented with Rust's documentation features.
Generate documentation with cargo doc
to explore the structure and the meaning of the modules and symbols.
As this is a rewrite, the implementation status is not directly comparable to the original Cantara repository. The following table shows the features that are currently implemented or planned for this version:
Feature | Status |
---|---|
Song Lyrics Presentation | ✅ Implemented |
Presentation Styling | Partially implemented |
Chord Presentation | ❌ Not Implemented, in Progress |
Image Presentation | ❌ Not Implemented, in Progress |
PDF Presentation | ❌ Not Implemented, in Progress |
Search Functionality | ✅ Implemented |
Import SongText Files | ❌ Not Implemented, in Progress |
Export SongText Files | ❌ Not Implemented, in Progress |
Export pptx Files | ❌ Not Implemented, in Progress |
Contributions are welcome! If you'd like to contribute to Cantara, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bugfix.
- Make your changes.
- Write tests for your changes if applicable.
- Run the existing tests to ensure your changes don't break anything.
- Submit a pull request.
If you would like additional features for Cantara, please feel free to open an issue or a pull request.
- Follow the Rust standard code style.
- Use meaningful variable and function names.
- Write clear and concise documentation comments.
- Avoid
unwrap
calls in production code, you can useùnwrap_or_else
orunwrap_or_default
instead.
This project is licensed under the terms of AGPL. See the COPYING file for details.