Un reproductor de música moderno y multiplataforma
Cismu es un reproductor de música diseñado con una filosofía de modularidad, portabilidad y precisión. El proyecto se basa en principios fundamentales que priorizan la integridad de los datos musicales y la flexibilidad de implementación.
- Arquitectura Modular: El proyecto está estructurado en crates independientes que manejan responsabilidades específicas
- Portabilidad: Soporta tanto despliegue estándar como modo portable mediante la variable de entorno
CISMU_BASE_DIR - Análisis Avanzado: Integra análisis de características musicales avanzado usando
bliss-audiopara recomendaciones y similitud
Cismu está construido como una aplicación híbrida usando Tauri con un backend en Rust y frontend web:
- Backend: Rust nativo que maneja el procesamiento de música y datos
- Frontend: Interfaz web usando Astro
- IPC: Comunicación asíncrona entre frontend y backend via comandos Tauri
| Crate | Propósito |
|---|---|
cismu-core |
Modelos de datos fundamentales y contratos de tipos |
cismu-local-library |
Implementación de biblioteca local y procesamiento |
cismu-paths |
Gestión centralizada de rutas y utilidades del sistema de archivos |
Cismu soporta una amplia gama de formatos de audio con configuraciones específicas de tamaño mínimo y duración:
- MP3: Archivo mínimo 500KB, duración mínima 30s
- AAC: Archivo mínimo 500KB, duración mínima 30s
- FLAC: Archivo mínimo 2MB, duración mínima 30s
- WAV: Archivo mínimo 5MB, duración mínima 30s
- OGG/OPUS: Archivo mínimo 500KB, duración mínima 30s
- MP4/M4A: Archivo mínimo 1MB, duración mínima 30s
- Rust: Versión estable más reciente
- Node.js: Para el frontend Astro
- Dependencias del Sistema:
- SQLite3 para la base de datos
- FFmpeg para análisis de audio
# Clonar el repositorio
git clone https://github.com/Cismu/Cismu.git
cd Cismu
# Compilar el backend
cd desktop-app/backend
cargo build
# Ejecutar la aplicación de escritorio
cargo run# Compilación optimizada para tamaño
cargo build --releaseEl perfil de release está optimizado para binarios compactos con LTO habilitado
# Ejecutar tests
cargo test
# Ejecutar con logs detallados
RUST_LOG=debug cargo run
# Verificar código
cargo clippy
cargo fmtPara ejecutar en modo portable:
# Establecer directorio base personalizado
export CISMU_BASE_DIR=/ruta/a/directorio/portable
cargo runCismu/
├── crates/ # Bibliotecas Rust modulares
│ ├── cismu-core/ # Modelos de datos fundamentales
│ ├── cismu-local-library/ # Implementación de biblioteca local
│ └── cismu-paths/ # Gestión de rutas del sistema
├── desktop-app/ # Aplicación de escritorio Tauri
│ ├── backend/ # Backend en Rust
│ └── isolation/ # Configuración de aislamiento
├── docs/ # Documentación del proyecto
└── packages/ # Paquetes adicionales
- Fork el repositorio en GitHub
- Clona tu fork localmente
- Crea una rama para tu característica:
git checkout -b mi-nueva-caracteristica
- Rust: Seguir las convenciones estándar de Rust (
cargo fmt,cargo clippy) - Commits: Usa mensajes descriptivos en español o inglés
- Tests: Incluye tests para nueva funcionalidad
- Documentación: Documenta APIs públicas
- Asegúrate de que todos los tests pasan:
cargo test - Verifica que el código compila sin warnings:
cargo clippy - Formatea el código:
cargo fmt - Crea un pull request con descripción detallada
Cismu utiliza SQLite con migraciones manejadas por Refinery
El sistema de caché utiliza una jerarquía de directorios optimizada para el rendimiento del sistema de archivos 20
| Variable | Propósito |
|---|---|
CISMU_BASE_DIR |
Habilita modo portable especificando directorio base |
RUST_LOG |
Controla nivel de logging (debug, info, warn, error) |
El sistema crea automáticamente la estructura de directorios necesaria al primer arranque
Para información más detallada sobre componentes específicos, consulta:
- Arquitectura del Core - Modelos de datos y arquitectura interna
- API Reference - Documentación de APIs
- Guía de Desarrollo - Guías detalladas para desarrolladores
Este proyecto está licenciado bajo los términos especificados en el archivo LICENSE del repositorio.
¡Contribuciones bienvenidas! Si encuentras bugs o tienes ideas para mejoras, no dudes en abrir un issue o enviar un pull request.