Getting Started with Lino
Lino is a command-line tool developed to accelerate the creation of modern, scalable, and robust .NET applications. Aimed at developers seeking high productivity and advanced architectural standards, Lino generates complete projects β from independent microservices to modular monoliths β incorporating best practices from the .NET ecosystem.
Prerequisites
Before installing Lino, make sure your environment is properly set up:
- β .NET 9.0 SDK or higher is installed. Download .NET
- β
.NET CLI is available in the terminal. Verify with:
dotnet --version
- β Git is installed for version control. Download Git
- β
Entity Framework Core CLI is installed for migration support:
dotnet tool install --global dotnet-ef
- β OCI-compatible container environment, such as Docker Desktop or Podman.
Platform Compatibility
Lino is cross-platform and can be used on the major operating systems:
- β Windows
- β macOS
- β Linux
Installation
Lino is distributed as a global .NET tool. Before proceeding, make sure you have the .NET 9 SDK or higher installed.
To install the latest version, run:
dotnet tool install --global Tolitech.Lino --version 1.0.0-alpha.10
After installation, validate Linoβs operation by running:
lino --version
If the installation is successful, the installed version will be displayed in the terminal.
Authentication
After installing Lino, authentication is required to access all features.
If you already have an account, log in using the command:
lino auth login
You will be prompted to provide:
- Username: Previously registered email address.
- Password: Password associated with the account.
If you don't have an account yet, register directly via the CLI using:
lino user register
During registration, provide:
- First Name: User's first name.
- Last Name: User's last name.
- Email: Email address that will also be used as the login.
- Password: Secure password with at least 6 characters.
- Password Confirmation: Re-enter the password for validation.
Upon completing registration, the user will be automatically authenticated.
Language Preferences
By default, the Lino CLI is displayed in English en
, but you can change the language to your preference from the available options:
en | pt | es | de | fr | it | ja | ko | ru | zh
To set a new language, run the following command:
lino preferences culture set --name culture
Alternatively, you can select the language through an interactive list by running:
lino preferences culture set
UTF-8 Encoding Adjustment (Optional)
For correct display of languages with special characters (such as Japanese, Korean, Russian, or Chinese), ensure that your terminal is set to use UTF-8 encoding.
In Windows PowerShell, adjust the encoding by running the following commands:
[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
Note: On Linux, macOS, and Windows Terminal systems, UTF-8 support is typically native. However, it is recommended to verify the settings if you encounter any issues with character display.
Available Commands
Lino is constantly evolving, continuously receiving new commands and features to meet the demands of high-quality .NET projects.
To display the full list of available commands, run the following in the terminal:
lino
Or, alternatively:
lino --help
The terminal will display a list of main commands along with a brief description for each, as shown in the example below:
COMMANDS: project Command responsible for managing projects. service Command responsible for managing services. module Command responsible for managing modules. entity Command responsible for managing entities. enumeration Command responsible for managing enumerations. value-object Command responsible for managing value objects. query Command responsible for managing queries. command Command responsible for managing commands. api Command responsible for managing APIs. page Command responsible for managing pages. database Command responsible for managing database migrations. feature Command responsible for managing project features. user Command responsible for managing users. auth Command responsible for managing user authentication. preferences Command to manage user preferences.
To view the subcommands and specific options for any command, use:
lino command
Or:
lino command --help
For example, when consulting the project
command:
lino project --help
The following will be displayed:
DESCRIPTION: Command responsible for managing projects. EXAMPLES: lino project new --name MyProject lino project list COMMANDS: new Command used to create a new project. list Command used to list the created projects.
In the next section, we will see how to quickly create a new project using Lino.
Quick Start
Quickly create a modern, scalable .NET application ready for high-level projects with the following command:
lino project new --name MyApp
This command generates a .NET solution structured with a clear separation of responsibilities between layers, serving as the ideal foundation for robust and scalable enterprise applications.
MyApp/ βββ MyApp.sln βββ src/ β βββ Aspire/ β β βββ AppHost/ β β β βββ MyApp.AppHost.csproj β β βββ ServiceDefaults/ β β βββ MyApp.ServiceDefaults.csproj β βββ Services/ β βββ Shared/ β βββ API/ β β βββ MyApp.Shared.API.csproj β βββ Application/ β β βββ MyApp.Shared.Application.csproj β βββ Domain/ β β βββ MyApp.Shared.Domain.csproj β βββ Infrastructure/ β β βββ MyApp.Shared.Infrastructure.csproj β βββ Infrastructure.Persistence/ β βββ MyApp.Shared.Infrastructure.Persistence.csproj βββ tests/
Main Benefits:
- β Layered structure aligned with modern architectural best practices.
- π§ Flexibility to scale as a microservice, modular monolith, or traditional.
- π Ready-to-use features like caching, messaging, and task scheduling.
- π§± Solid foundation for applying patterns such as Domain-Driven Design (DDD), Event-Driven Architecture (EDA), and SOLID principles.
- β¨ Clean, opinionated, and highly productive code, ideal for accelerating sustainable development.
With Lino, you accelerate the creation of high-quality .NET projects, combining productivity, architectural excellence, and flexibility to keep up with the growth of your application.