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.

An unhandled error has occurred. Reload πŸ—™