HowlDev.Cli.TextDTO
0.4.0
Prefix Reserved
dotnet tool install --global HowlDev.Cli.TextDTO --version 0.4.0
dotnet new tool-manifest
dotnet tool install --local HowlDev.Cli.TextDTO --version 0.4.0
#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
- Creates a Type that has the provided properties
- 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 | Versions 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. |
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 |