HowlDev.Cli.TextDTO 0.4.0

Prefix Reserved
dotnet tool install --global HowlDev.Cli.TextDTO --version 0.4.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local HowlDev.Cli.TextDTO --version 0.4.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=HowlDev.Cli.TextDTO&version=0.4.0
                    
nuke :add-package HowlDev.Cli.TextDTO --version 0.4.0
                    

HowlDev.Cli

HowlDev.Cli.TextDTO

This is a command-line NuGet package that you can install with:

dotnet tool install --global HowlDev.Cli.TextDTO

# Or inside of your project
dotnet tool install HowlDev.Cli.TextDTO

Format (the ... is a repeat of tag and location):

textdto <dtopath> <tag> <exportLocation> ...

An example of usage:

textdto ./dtos cs ./api/dtos ts ./client/src/types ts-z ./client/src/zod

You can export a given file as a set of DTO's with any of the 3 following tags:

  • cs
    • Exports a C# file with an optional namespace in the format of a class with public get and set properties
  • ts
    • Creates a Type that has the provided properties
      • Ignores the Default property (impossible with type definitions)
      • Nullable means undefined, the default null state for things in JavaScript
  • ts-z
    • Creates a Zod object with the provided properties (you must install Zod yourself)
    • Names are appended with Schema for Zod parsing and Type for the type inference. Both are exported.
    • Nullable uses the Zod type .nullable() since .optional() does not do anything in the presence of .default()
    • Exports types using z.infer<>.

File structure

The files you pass in from the schemas folder needs to be parsable by the most recent version of the ConfigFileLibrary. Currently, that supports JSON and YAML files.

Here's the structure:

{
  "name": "IdAndTitleDTO", // Required
  "type": "Class", // Required (can be either [Class, Enum])
  "namespace": "ProjectTracker.Classes", // Required for C# classes only (only file-scoped is available)
  "ignoreWarnings": true, // Optional; uses the language-specific disable of warnings (default false)
  "properties": [ // Only needs to be present in if the type is Class
    {
      "name": "Id", // These two properties are required
      "type": "int",
      "default": "Unknown", // You can assign a default value here (optional param)
      "nullable": true // You can make a property optional (optional param)
    },
    ... // Add as many properties here as needed
  ], 
  "enumValues" : [ // Only needs to be present in if the type is Enum
    "Type1", "Type2", ...
  ]
}

The current list of types supported are C# primitives. They are all converted to a TS type when being added to a TS file.

  • string
    • string for JS, TS, Zod, and C#
  • int, uint, byte, long, double, etc.
    • ___ for C#, number for JS, TS, and Zod
  • bool
    • bool for C#, boolean for JS, TS, and Zod

Arrays are supported (but see known bug list). Just include [] at the end for the default value.

HowlDev.Cli.FullStackBuilder

This is a global tool that combines the Vite and Dotnet builder to quickly bootstrap full-stack apps. Install it with the below command:

dotnet tool install --global HowlDev.Cli.FullStackBuilder

Run the command with:

fsbuild

Provide it with file names for your two projects, then follow the steps in the console to scaffold your Vite project and your backend (do not install and build the frontend at the last step. I didn't find a flag to disable that feature, but it will break this app).

After that, it will ask if you want to configure more. In both projects, you can install some common packages (make an issue/pull request if you have more packages you'd like), and also adjust some files with common features, such as building your frontend directly to your API.

This is very much in it's early stages.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
0.4.0 126 2/27/2026
0.4.0-beta.1 64 2/27/2026
0.4.0-beta 106 2/20/2026
0.3.5 102 2/17/2026
0.3.4 102 2/17/2026
0.3.3 105 2/17/2026
0.3.2 104 2/17/2026
0.3.1 102 2/17/2026
0.3.0 111 2/17/2026
0.2.1 116 2/6/2026
0.2.0 110 2/4/2026
0.1.2 110 2/3/2026
0.1.1 125 1/8/2026
0.1.0 117 1/8/2026