Hoja de ruta de desarrollo

Sigue nuestro progreso y las funciones próximas. Estamos en constante evolución para ofrecerte la mejor experiencia de desarrollo.

Compatibilidad y generación con .NET 10

Planeado

Esta actualización garantizará soporte completo para la generación de proyectos basados en .NET 10, tan pronto como Microsoft lance oficialmente la nueva versión.

Actualmente, Lino genera proyectos basados en .NET 9, aprovechando todos los recursos disponibles de la plataforma, incluidas mejoras de rendimiento, características avanzadas de C# 13 e integración moderna con ASP.NET Core.

El objetivo de esta futura versión es ofrecer soporte inmediato para .NET 10 con plantillas actualizadas, configuraciones adecuadas de Target Framework y scaffolding preparado para las nuevas características del lenguaje y del runtime.

Mejora
noviembre de 2025 v1.0.0-rc

Generación de pruebas automatizadas

Planeado

Generación automatizada de pruebas con soporte para dos niveles principales:

Pruebas Unitarias:
Creación de pruebas para clases y métodos individuales, enfocándose en la lógica de negocio.

Pruebas de Integración:
Creación de pruebas para verificar la integración entre componentes, simulando interacciones con bases de datos y servicios externos.

Funcionalidad
octubre de 2025 v1.0.0-preview

Generación de archivos .http

Planeado

Implementación de la generación automática de archivos .http, con el objetivo de facilitar las pruebas y la documentación de endpoints REST en entornos de desarrollo.

Funcionalidad
septiembre de 2025 v1.0.0-preview

Control de acceso mediante Políticas

Completado

Sistema de control de acceso basado en permisos (PBAC) utilizando Policies de ASP.NET Core.
Los permisos se crean automáticamente mediante Source Generators y se registran como Policies en .NET.
Cada servicio que utiliza estos permisos genera eventos que alimentan y actualizan automáticamente la base de permisos del sistema.

Principales características:
_ Generación automática de permisos mediante Source Generators
_ Registro automático de Policies en ASP.NET Core
_ Actualización dinámica de la base de permisos mediante eventos/mensajería
_ Soporte para RBAC híbrido, combinando la simplicidad de los roles con la granularidad de los permisos

Beneficios:
_ Máximo rendimiento y escalabilidad
_ Gestión automatizada y mantenimiento simplificado
_ Flexibilidad para diferentes escenarios de seguridad

Funcionalidad
agosto de 2025 v1.0.0-beta

Soporte para carga de archivos

Completado

Implementación de soporte nativo para el tipo IFormFile en endpoints creados con Minimal APIs. Esta funcionalidad permitirá la generación automatizada de rutas con carga de archivos, incluyendo:

_ Definición de endpoints que admiten cargas mediante multipart/form-data;
_ Validación automática de tipos MIME y tamaños máximos permitidos;
_ Soporte para almacenamiento local e integración con servicios en la nube como Azure Blob Storage y AWS S3;

Ideal para aplicaciones que requieren cargas seguras y de alto rendimiento de archivos como imágenes, documentos y medios en general.

Funcionalidad
agosto de 2025 v1.0.0-beta

Fusión inteligente de archivos

Completado

A partir de esta versión, Lino CLI realiza un merge automático inteligente de archivos generados. Antes, los archivos creados por Lino reemplazaban directamente a los existentes, pudiendo sobrescribir cambios manuales realizados por el desarrollador.

Ahora, con la nueva estrategia de 3-way merge (archivo original generado, versión editada por el usuario y nuevo archivo generado), Lino puede preservar las personalizaciones y aplicar actualizaciones estructurales del template.

Beneficios de este enfoque:
_ Evita sobrescrituras accidentales de código manual.
_ Facilita la evolución continua de proyectos basados en templates.
_ Reduce los conflictos manuales durante las actualizaciones.
_ Mejora la integración entre personalizaciones locales y evolución del framework.

Mejora
julio de 2025 v1.0.0-beta

Registro de Minimal APIs con Source Generators

Completado

Ahora los proyectos generados por Lino CLI pueden registrar Minimal APIs automáticamente usando la biblioteca Tolitech.Presentation.API.Generators, basada en Source Generators.

Este enfoque reemplaza la necesidad de:
_ Registrar manualmente cada endpoint usando MapGet, MapPost, etc.
_ Usar Reflection para escanear y mapear rutas — algo costoso en términos de rendimiento.

Con Source Generators, el mapeo se realiza en tiempo de compilación, generando código optimizado, limpio y rastreable.

Beneficios principales:
_ Elimina la verbosidad y repetición del registro manual.
_ Evita el uso de Reflection, reduciendo el uso de CPU y memoria.
_ Mejora la organización del código y la separación de responsabilidades.
_ Generación automática y segura de rutas con validación en tiempo de compilación.
_ Facilita el mantenimiento y escalabilidad del proyecto.

Rendimiento
junio de 2025 v1.0.0-beta

Inyección de dependencias con generadores de código fuente

Completado

Ahora utilizamos la biblioteca Tolitech.DependencyInjection.Generators, que sustituye el enfoque basado en Reflection de Tolitech.DependencyInjection.Extensions.

Esta nueva biblioteca aprovecha la funcionalidad de los Source Generators de .NET para generar automáticamente los registros de dependencias en tiempo de compilación.

Esto ofrece varias ventajas:
_ Eliminación de Reflection en tiempo de ejecución, mejorando el rendimiento de la aplicación.
_ Generación de código más predecible y rastreable.
_ Compilación más segura, con detección anticipada de errores.
_ Integración nativa con el pipeline de compilación de .NET.

Rendimiento
junio de 2025 v1.0.0-beta

Adopción del Central Package Manager

Completado

Hemos comenzado a utilizar el Central Package Manager (CPM), un enfoque moderno para la gestión de paquetes NuGet en soluciones con múltiples proyectos. Con él, todas las versiones de los paquetes se definen centralmente en el archivo Directory.Packages.props, eliminando inconsistencias y facilitando actualizaciones seguras y coordinadas. Esto reduce errores por diferencias de versiones entre proyectos, mejora la trazabilidad y simplifica el proceso de actualización masiva de dependencias.

Mejora
mayo de 2025 v1.0.0-beta

Compatibilidad con el nuevo formato .SLNX

Completado

Lino ahora genera soluciones en el nuevo formato .slnx, una evolución moderna del tradicional .sln.
Basado en XML, el formato .slnx fue adoptado por su mayor legibilidad tanto para humanos como para herramientas, reduciendo la complejidad de integración con sistemas externos y pipelines de CI/CD.

Además, su estructura más limpia mejora significativamente el control de versiones: los cambios son más predecibles y fáciles de revisar.
Este cambio sigue la dirección futura del ecosistema .NET, promoviendo una mayor interoperabilidad, extensibilidad y automatización en el desarrollo de proyectos.

Mejora
mayo de 2025 v1.0.0-beta

Soporte para generación .NET / Aspire en la versión Community

Completado

La suscripción Community ahora ofrece soporte para la generación de proyectos basados en .NET 9 y Aspire 9.2.1, permitiendo a los usuarios explorar de forma gratuita y técnica las funcionalidades de la plataforma.

Esta versión incluye:
_ Creación de servicios y entidades con scaffolding automatizado;
_ Selección de la base de datos y configuración inicial completa;
_ Generación funcional hasta la etapa de EF Core Migrations.

Aunque funcionalidades avanzadas como microservicios y monolitos modulares están limitadas a planes de pago, esta versión ofrece una base sólida para evaluar la arquitectura generada, la calidad del código y la integración con el ecosistema .NET moderno.

Mejora
abril de 2025 v1.0.0-beta

Comando de migración de base de datos integrado en la CLI

Completado

La CLI ahora ofrece el comando lino database migrations add para facilitar la creación de migraciones para cualquier servicio o módulo del proyecto.

Esta función automatiza la generación de scripts de migración vinculados a la versión del build y permite la documentación consistente de los cambios.

Beneficios principales:
_ Creación rápida de migraciones por servicio o módulo, con comandos simples y directos.
_ Generación automática de scripts .sql compatibles con el versionado del proyecto.
_ Facilita el control de versiones de la base de datos incluso en arquitecturas distribuidas.
_ Estandariza y documenta los cambios estructurales de la base de datos de forma segura y auditable.
_ Integración natural con el flujo de build y despliegue de la aplicación.

Funcionalidad
marzo de 2025 v1.0.0-beta

Gestión de versiones y builds con Docker

Completado

La nueva funcionalidad de versionado permite listar versiones existentes y realizar un bump de versión en servicios y aplicaciones web generadas por la herramienta, siguiendo la convención SemVer (Versionado Semántico). Esto proporciona mayor trazabilidad, estandarización y control en el ciclo de lanzamientos.

Con el comando version, se puede definir y actualizar fácilmente el número de versión de cada servicio o aplicación, facilitando auditorías e incorporando buenas prácticas en el flujo de desarrollo.

El comando build también se ha mejorado para generar imágenes Docker con la etiqueta de versión correspondiente, simplificando el empaquetado y preparando las aplicaciones para su publicación.

Estas mejoras aumentan la consistencia y previsibilidad en la gestión de versiones, ofreciendo mayor transparencia a los equipos de desarrollo y operaciones.

Mejora
febrero de 2025 v1.0.0-beta

Selección de propiedades en Commands y Queries

Completado

Personalizar qué propiedades serán consideradas en la generación de artefactos del tipo Command (Post, Put, Patch) y Query (Get).

Esta funcionalidad ofrece:
_ Interfaz interactiva en la CLI para la selección de propiedades durante el proceso de scaffolding de entidades;
_ Generación automática de objetos con solo los campos seleccionados para entrada/salida;
_ Soporte completo para la personalización de payloads en APIs REST, aumentando la flexibilidad y el control sobre los datos transferidos;
_ Integración con la validación y los contratos de datos generados, respetando reglas de obligatoriedad y consistencia.

Esta mejora busca ofrecer mayor granularidad en la modelación de artefactos, permitiendo al desarrollador controlar con precisión qué se expondrá, persistirá o consultará mediante la arquitectura generada por la CLI.

Mejora
enero de 2025 v1.0.0-beta

Mecanismo de copia de seguridad automática en el CLI

Completado

Se ha implementado un mecanismo automático de versionado y copia de seguridad de archivos en Lino CLI, con el objetivo de garantizar la seguridad y la trazabilidad en los procesos de generación y sobrescritura de archivos.

Todos los archivos generados se almacenan en la carpeta /.lino/files/.../received/, asegurando que cada archivo esté organizado temporalmente y sea fácilmente localizable.

Los archivos que son reemplazados permanecen almacenados en la carpeta /.lino/files/.../replaced/, lo que permite la recuperación de versiones anteriores cuando sea necesario. Esta estructura de respaldo proporciona mayor control y seguridad, permitiendo una auditoría completa de los archivos generados, especialmente en entornos de desarrollo colaborativo y automatizado.

Mejora
enero de 2025 v1.0.0-beta

Autenticación y autorización integradas con JWT

Completado

Implementación completa de autenticación y autorización para proyectos frontend y backend, basada en JWT (JSON Web Tokens) y control granular de permisos mediante Authorization Policies personalizadas de ASP.NET Core.

Aspectos destacados:
_ Inicio de sesión seguro con emisión y validación de JWT.
_ Autorización basada en políticas personalizadas (Claims y Roles).
_ Integración automática entre APIs y frontends (Blazor) generados.
_ Protección de rutas y componentes basada en los permisos del usuario.

Ventajas:
_ Seguridad robusta para aplicaciones modernas.
_ Estandarización del modelo de acceso por perfil y dominio.
_ Experiencia segura e integrada entre las capas de la aplicación.
_ Facilidad para extender o adaptar según el escenario empresarial.

Seguridad
diciembre de 2024 v1.0.0-alpha

Soporte para la generación de frontends integrados (Blazor Web Apps)

Completado

Ahora es posible añadir uno o más frontends a los proyectos generados, con soporte inicial para Blazor Web Apps — incluyendo los modelos Server y WebAssembly.

Estos frontends se integran automáticamente con las APIs generadas por la herramienta, permitiendo la creación de páginas CRUD completas con llamadas directas a los endpoints backend y persistencia en la base de datos.

Aspectos destacados:
_ Generación de UI basada en las entidades del dominio.
_ Comunicación nativa con las APIs generadas.
_ Funcionalidad de punta a punta: frontend, backend y base de datos funcionando juntos.
_ Posibilidad de múltiples frontends en el mismo proyecto (ej: admin, portal, público).

Beneficios:
_ Agilidad en el desarrollo de interfaces.
_ Menos retrabajo e integración manual.
_ Estándar unificado de navegación, estilo y acceso a datos.
_ Mayor productividad con generación automática de páginas CRUD.

Funcionalidad
noviembre de 2024 v1.0.0-alpha

Soporte para el estándar Transactional Outbox

Completado

Implementamos el patrón Transactional Outbox para garantizar la confiabilidad en el envío de eventos de integración. En lugar de publicar el evento directamente durante la transacción de la aplicación, ahora se registra en una tabla específica dentro de la misma transacción de la base de datos.

Posteriormente, un background job lee esta outbox y realiza el envío real del evento.

Ventajas de este enfoque:
_ Garantiza consistencia entre cambios en la base y publicación de eventos.
_ Evita la pérdida de mensajes en caso de fallas intermedias.
_ Permite control de reenvío y auditoría de eventos publicados.
_ Se alinea con las buenas prácticas de arquitectura orientada a eventos y microservicios.

Funcionalidad
octubre de 2024 v1.0.0-alpha

Soporte para trabajos en segundo plano con Hangfire

Completado

Se ha añadido la opción de incluir Background Jobs en los servicios generados — ya sean simples o modulares — utilizando la biblioteca Hangfire.

Con esto, los proyectos ahora cuentan con programación y ejecución de tareas en segundo plano de forma nativa, incluyendo:
_ Ejecución recurrente (cron), programada o inmediata.
_ Monitoreo mediante un panel de control integrado.
_ Persistencia y reprocesamiento seguro de jobs.

Este mecanismo también puede usarse junto con el Transactional Outbox Pattern, asegurando el envío confiable de eventos de integración incluso ante fallos parciales o en entornos distribuidos.

Principales ventajas:
_ Automatización de tareas recurrentes y lentas sin bloquear el flujo principal.
_ Alta resiliencia y persistencia de las tareas en segundo plano.
_ Integración lista con el patrón Outbox para eventos confiables.
_ Configuración y personalización sencilla de jobs por servicio.
_ Panel de control integrado para inspección y gestión de ejecuciones.

Funcionalidad
septiembre de 2024 v1.0.0-alpha

Mensajería con MassTransit y RabbitMQ

Completado

Se añadió la posibilidad de configurar soporte para mensajería asíncrona con RabbitMQ, utilizando la abstracción y las funciones avanzadas de MassTransit.

Con esto, los servicios generados pueden comunicarse de forma desacoplada y resiliente, utilizando eventos y comandos distribuidos.

Aspectos destacados de la integración:
_ Configuración automatizada del transporte con RabbitMQ.
_ Publicación y escucha de eventos vía MassTransit con inyección de dependencias nativa.
_ Compatible con el patrón Transactional Outbox para mayor confiabilidad.

Ventajas:
_ Alta escalabilidad con comunicación basada en eventos.
_ Desacoplamiento entre productores y consumidores.
_ Mayor tolerancia a fallos y reprocesamiento automático.
_ Facilidad de mantenimiento y extensión de flujos de negocio asíncronos.

Funcionalidad
septiembre de 2024 v1.0.0-alpha

Control transaccional avanzado con Unit of Work

Completado

Se ha implementado un mecanismo robusto de Unit of Work con control total de transacciones, gestión de eventos de dominio, publicación de eventos de integración (Outbox Pattern), rollback automático y soporte para el patrón Result para commit/rollback basado en el éxito o fallo de la operación.

Aspectos destacados:
_ Creación explícita de transacciones con control del nivel de aislamiento.
_ Publicación de Domain Events sincronizados con la persistencia de datos.
_ Publicación de Integration Events desacoplada mediante Outbox Pattern.
_ Rollback automático y manejo de excepciones con soporte para validación de restricciones.
_ Commit condicionado al Result de la operación.
_ Registro estructurado de eventos, transacciones y fallos.

Beneficios:
_ Consistencia transaccional entre las escrituras en la base de datos y los eventos generados.
_ Flexibilidad para usar SaveChanges estándar o control total del flujo.
_ Facilidad para pruebas unitarias y trazabilidad de errores.
_ Separación clara entre Dominio e Infraestructura, con soporte para MediatR.

Mejora
agosto de 2024 v1.0.0-alpha

Base de datos por servicio con soporte para SQL Server y PostgreSQL

Completado

Ahora es posible definir, individualmente para cada servicio generado, la base de datos a utilizar — con soporte nativo para SQL Server y PostgreSQL.

Este enfoque permite que cada servicio tenga su base de datos exclusiva, garantizando un aislamiento total y facilitando prácticas de arquitectura orientadas a microservicios reales.

En el caso de los servicios modulares, la aplicación sigue utilizando una única base de datos por servicio, con separación de cada módulo mediante schema, manteniendo organización y cohesión.

Beneficios principales:
_ Aislamiento de datos entre servicios, aumentando la seguridad y la claridad de responsabilidades.
_ Posibilidad de adopción progresiva de microservicios con bases independientes.
_ Separación por schema en servicios modulares para facilitar el mantenimiento y la comprensión del dominio.
_ Flexibilidad total para elegir el SGBD más adecuado por servicio.
_ Facilidad para pruebas, despliegues aislados y escalabilidad horizontal.

Funcionalidad
julio de 2024 v1.0.0-alpha

Soporte para la creación de servicios simples y modulares

Completado

El CLI de Lino ahora permite que el desarrollador elija, durante la generación del proyecto, entre crear servicios simples (tradicionales) o servicios modulares, con total libertad para combinar ambos según las necesidades de la solución.

Este enfoque ofrece soporte directo a diferentes estilos arquitectónicos:
Servicios simples: ideales para componer soluciones basadas en microservicios o para construir aplicaciones monolíticas tradicionales de forma directa e independiente.
Servicios modulares: organizan el dominio de la aplicación en Bounded Contexts, facilitando la adopción de un Monolito Modular con separación clara de responsabilidades y mejor cohesión entre componentes.

Puedes añadir tantos servicios como desees — simples, modulares o ambos — según el escenario de la aplicación.

Ventajas de este enfoque:
_ Mayor flexibilidad en el modelado de la arquitectura.
_ Facilidad para escalar progresivamente de un monolito a microservicios.
_ Separación clara de responsabilidades por dominio o contexto.
_ Mejor organización del código y alineación con buenas prácticas de arquitectura moderna.
_ Reducción del acoplamiento y aumento de mantenibilidad.

Desarrolla con microservicios o adopta un monolito modular — tú eliges el camino ideal para tu aplicación.

Funcionalidad
junio de 2024 v1.0.0-alpha

Caché híbrido con Microsoft.Extensions.Caching.Hybrid

Completado

Se agregó soporte nativo para caché híbrida utilizando la biblioteca Microsoft.Extensions.Caching.Hybrid.

La implementación combina caché en memoria (MemoryCache) con caché distribuida (DistributedCache), ofreciendo lo mejor de ambos mundos.

Este enfoque permite respuestas extremadamente rápidas a solicitudes frecuentes, manteniendo sincronización y escalabilidad en entornos distribuidos.

Beneficios de la estrategia híbrida:
_ Alto rendimiento con lectura inmediata desde la memoria local.
_ Persistencia y compartición de datos entre instancias mediante caché distribuida.
_ Reducción de llamadas a bases de datos y APIs externas.
_ Mejor escalabilidad horizontal en aplicaciones con múltiples réplicas.
_ Sincronización inteligente entre los dos niveles de caché.

Ideal para escenarios que exigen rendimiento y consistencia sin sacrificar la flexibilidad arquitectónica.

Funcionalidad
mayo de 2024 v1.0.0-alpha

Soporte multilingüe en los proyectos generados

Completado

Lino CLI ahora genera proyectos con soporte integrado para múltiples idiomas, incluyendo traducción automática para las siguientes culturas:
en, pt-BR, es, fr, it, de, ja, ko, zh-Hans y ru.

Los archivos de recursos (resx) se generan automáticamente basándose en el idioma principal, y los contenidos se traducen automáticamente, listos para su uso inmediato en aplicaciones globales.

Ventajas del soporte multilingüe:
_ Facilita la creación de aplicaciones dirigidas a diferentes regiones y culturas.
_ Reduce el tiempo necesario para la internacionalización.
_ Integración nativa con el sistema de localización de .NET.
_ Mejora la experiencia del usuario final en aplicaciones multilingües.
_ Permite escalar soluciones rápidamente para el mercado global.

Funcionalidad
abril de 2024 v1.0.0-alpha

Registro de alto rendimiento

Completado

Los códigos generados por Lino CLI ahora utilizan LoggerMessage para registrar logs de forma más eficiente y con mejor rendimiento.

A diferencia de los métodos de extensión convencionales de ILogger, que generan boxing de tipos valor y tienen impacto en la asignación de memoria en tiempo de ejecución, el patrón LoggerMessage crea Actions fuertemente tipadas y estáticas para cada mensaje de log.

Ventajas de este enfoque:
_ Reducción significativa de asignaciones de memoria.
_ Evita boxing de tipos valor como int, Guid, DateTime, etc.
_ Mejor rendimiento en escenarios con alto volumen de logs.
_ Estandarización y centralización de mensajes de log.
_ Más claridad en auditoría, diagnóstico y monitoreo.

Esta mejora es especialmente relevante en APIs y servicios backend donde el rendimiento y la trazabilidad son fundamentales.

Funcionalidad
abril de 2024 v1.0.0-alpha

Soporte opcional para Strongly Typed Id

Completado

Lino CLI ahora ofrece soporte opcional para Strongly Typed Ids, permitiendo representar los identificadores de entidades mediante tipos específicos fuertemente tipados en lugar de tipos genéricos como Guid o int.

Esta funcionalidad ayuda a evitar errores comunes como asignar un identificador de una entidad a otra incorrectamente, además de hacer el código más expresivo y alineado con el dominio de la aplicación.

Ventajas de usar Strongly Typed Ids:
_ Mayor seguridad de tipos en tiempo de compilación.
_ Evita asignaciones accidentales entre distintas entidades.
_ Mejora la legibilidad y claridad de intención del código.
_ Facilita el rastreo y depuración de identificadores en el dominio.
_ Integración con EF Core, serialización JSON y validación.

La activación de esta función es opcional y se puede definir al generar el proyecto.

Funcionalidad
marzo de 2024 v1.0.0-alpha

Análisis de código estático integrado en los proyectos

Completado

Los proyectos generados ahora pueden configurarse con soporte para análisis estático de código, utilizando los principales analizadores del ecosistema .NET. Estas herramientas están integradas directamente en la compilación y ayudan a identificar problemas de formato, estilo, arquitectura y posibles fallos lógicos aún en tiempo de desarrollo.

Ventajas:
_ Promueve la consistencia y estandarización del código desde el principio.
_ Detecta errores y malas prácticas anticipadamente.
_ Facilita las revisiones de código y las incorporaciones técnicas.
_ Mejora la calidad y mantenibilidad de la base de código.
_ Evita errores comunes y mejora la adherencia a las buenas prácticas de .NET.

La configuración puede personalizarse por proyecto, permitiendo mayor flexibilidad en el nivel de rigor deseado.

Funcionalidad
febrero de 2024 v1.0.0-alpha

Estandarización con Result Pattern

Completado

Creación de la biblioteca Tolitech.Results, que implementa el Result Pattern de forma completa y fluida en .NET.

Esta biblioteca encapsula el resultado de las operaciones — ya sean exitosas o con fallas — en objetos estructurados que contienen estado HTTP, mensajes, errores, títulos, detalles y datos opcionales (con soporte para Result<T>).

Beneficios del uso del Result Pattern:
_ Estandarización en el retorno de operaciones en toda la aplicación.
_ Reducción de excepciones como control de flujo.
_ Facilidad en la composición y encadenamiento de operaciones.
_ Mejor soporte a la comunicación entre capas y servicios.
_ Integración fluida con APIs HTTP, validaciones y mensajes de error.
_ Mejor experiencia de depuración y registro estructurado.

Además, extensiones como Tolitech.Results.Http y Tolitech.Results.Guards amplían la integración con APIs REST y validaciones defensivas.

Funcionalidad
enero de 2024 v1.0.0-alpha
Se ha producido un error no controlado. Recargar 🗙