Skip to main content

Cómo contribuir

Guía breve para trabajar sobre el código de Crono de forma coherente con el resto del equipo.

Preparar el entorno

  1. Clona el repositorio y abre la solución principal Crono.sln (existen soluciones auxiliares por módulo, con sufijo -sym, para trabajar sobre un módulo aislado).
  2. Restaura y compila. Para una compilación de tipo release de la aplicación y sus módulos, usa los scripts de la raíz:
# Windows
build.cmd

# Linux / macOS
./build.sh

La salida queda en artifacts/ (ver Implementación y construcción).

Antes de escribir código

  • Ubica tu cambio en la capa correcta según la responsabilidad de cada proyecto (Crono, Crono.Datos, Crono.Nucleo, Crono.Web.Comun, Crono.Modulos, Crono.Web); ver Organización del código fuente.
  • Si la funcionalidad es opcional o específica de un cliente, hazla en un módulo en lugar del núcleo (ver Primeros pasos con módulos).
  • Sigue las convenciones del proyecto: nomenclatura en español, métodos Async con CancellationToken, servicios para la lógica y buscadores para las consultas (ver Estándares de código).

Al hacer el cambio

  • Datos: todo cambio de esquema va en una migración FluentMigrator con [MigracionVersion(...)], protegida con guardas de existencia (ver Migraciones de base de datos).
  • Seguridad: cada operación protegida declara su [Permiso(...)] (ver Seguridad).
  • Textos: nada de cadenas incrustadas de cara al usuario; usa recursos de idioma.
  • UI: usa los componentes y tag helpers propios de Crono; el SCSS de módulo va en wwwroot/admin.scss / publico.scss y no tiene recarga en caliente.
  • API: los endpoints nuevos heredan de CronoApiController, se agrupan con [WebApiGrupo(...)] y se versionan (ver La Web API en detalle).

Antes de subir

  • Compila en release y verifica que la aplicación arranca y aplica migraciones sin errores.
  • Revisa que no queden TODO sin resolver ni cadenas sin localizar en lo que tocaste.
  • Resume el cambio de cara al usuario para el registro de cambios cuando tenga impacto visible.
tip

Ante la duda sobre "dónde va esto" o "cómo se hace aquí", busca un caso equivalente ya resuelto en un módulo existente (por ejemplo, Crono.Facturacion para el patrón completo de módulo con datos, permisos, menú, localización y API) y sigue ese mismo patrón.