WasmAI.AutoGenerator 1.1.1

dotnet add package WasmAI.AutoGenerator --version 1.1.1
                    
NuGet\Install-Package WasmAI.AutoGenerator -Version 1.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="WasmAI.AutoGenerator" Version="1.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="WasmAI.AutoGenerator" Version="1.1.1" />
                    
Directory.Packages.props
<PackageReference Include="WasmAI.AutoGenerator" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add WasmAI.AutoGenerator --version 1.1.1
                    
#r "nuget: WasmAI.AutoGenerator, 1.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=WasmAI.AutoGenerator&version=1.1.1
                    
Install WasmAI.AutoGenerator as a Cake Addin
#tool nuget:?package=WasmAI.AutoGenerator&version=1.1.1
                    
Install WasmAI.AutoGenerator as a Cake Tool

πŸš€ WasmAI.AutoGenerator

WasmAI.AutoGenerator is a powerful code-generation library for .NET 8 that automates the scaffolding of backend components like models, services, controllers, and moreβ€”based on a flexible folder configuration.


✨ Features

  • βš™οΈ Automatic Generation of Backend Layers:

    • DTOs (Data Transfer Objects)
    • DSOs (Domain Service Objects)
    • Repositories
    • Services
    • Controllers
    • Validators
    • Schedulers
  • πŸ—‚οΈ Dynamic Folder and File Generation: Uses folderStructure.json to generate nested folders and files.

  • πŸ—οΈ Architecture Pattern Support: Built-in templates: Country, Plug, Share, Builder, Service, and Scope.

  • πŸ› οΈ Customizable & Modular: Easily adapt to any backend architecture style.

  • πŸ” Service Lifetime Support: Scoped, singleton, and transient services supported.

  • πŸ”” Built-in Notification Provider: Supports Email, SMS, Push, and In-App notifications.


🧱 Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Models    │──────▢│ Marker Interfaces  │──────▢│ AutoGenerator  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                        β–Ό
    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β”‚   DTOs     β”‚ Repositoriesβ”‚  Services    β”‚ Controllers β”‚  Validators  β”‚
    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“¦ Installation

dotnet add package WasmAI.AutoGenerator --version 1.1.0

πŸ‘‰ After installation, add the necessary namespace:

using AutoGenerator.ApiFolder;

πŸ“ Folder Structure Configuration (folderStructure.json)

Here's an example:

{
  "Controllers": [ "Api", "Auth", "Admin" ],
  "Repositories": [ "Base", "Builder", "Share" ],
  "Services": [ "Email", "Logging" ],
  "DyModels": [
    {
      "VM": [],
      "Dto": {
        "Build": [ "Request", "Response", "ResponseFilter" ],
        "Share": [ "Request", "Response", "ResponseFilter" ]
      },
      "Dso": [ "Request", "Response", "ResponseFilter" ]
    }
  ],
  "Config": [ "Mappers", "Scopes", "Singletons", "Transients" ],
  "Models": [],
  "Builders": [ "Db" ],
  "Helper": [],
  "Data": [],
  "Enums": [],
  "Validators": [ "Conditions" ],
  "Schedulers": []
}

πŸ—οΈ How to Generate Your Backend Architecture

βœ… Option 1: Programmatically

using AutoGenerator.ApiFolder;
using System;

class Program
{
    static void Main(string[] args)
    {
        string projectPath = "path_to_your_project";
        ApiFolderGenerator.Build(projectPath);
        Console.WriteLine("βœ… All folders have been created successfully!");
    }
}
dotnet run generate

This command reads the folderStructure.json and creates all required folders and files instantly.


Steps to Implement DataContext and CategoryModel with ITModel and ITAutoDbContext

1. Create Your DataContext

First, you need to make sure that DataContext inherits from AutoIdentityDataContext and implements ITAutoDbContext. This allows you to manage identity operations and database access in a simple and automated way.

Code:

public class DataContext : AutoIdentityDataContext<ApplicationUser, IdentityRole, string>, ITAutoDbContext
{
    // Add properties like DbSet for your models
    public DbSet<CategoryModel> Categories { get; set; }

    public DataContext(DbContextOptions<DataContext> options) : base(options)
    {
    }

    // You can add any custom functions for DbContext here
}

Explanation:

  • DataContext inherits from AutoIdentityDataContext<ApplicationUser, IdentityRole, string> because you need to work with identity management using ApplicationUser and IdentityRole.
  • ITAutoDbContext ensures that the DataContext can handle automatic operations.
  • DbSet<CategoryModel> is an example of adding a model to DataContext so it can be interacted with in the database.

2. Create CategoryModel and Implement ITModel

Now, you need to implement the ITModel interface in your models like CategoryModel to take advantage of automatic operations.

Code:

public class CategoryModel : ITModel
{
    [Key]
    public string? Id { get; set; } = $"catm_{Guid.NewGuid():N}";  // Automatically generates a unique value

    [Required]
    [ToTranslation]  // Mark to ensure the field is translated automatically
    public string? Name { get; set; }

    [ToTranslation]  // Mark to ensure the field is translated automatically
    public string? Description { get; set; }
}

Explanation:

  • The CategoryModel class implements ITModel, which means it includes an Id property that gets automatically generated using Guid.NewGuid().
  • The Name and Description properties have the [ToTranslation] attribute to indicate that they should be translated automatically.

πŸ”§ API Builder Configuration

Here’s how to configure it in your project:

builder.Services
    . AddAutoBuilderApiCore<DataContext,ApplicationUser>(new()
    {
        Arags = args,
        NameRootApi = "V1",
        IsMapper = true,
        Assembly = Assembly.GetExecutingAssembly(),
        DbConnectionString = builder.Configuration.GetConnectionString("DefaultConnection"),
        ProjectPath= "folderStructure.json"
    })
    .AddAutoValidator()
    .AddAutoConfigScheduler()
    .AddAutoNotifier(new()
    {
        MailConfiguration = new MailConfig()
        {
            SmtpUsername = "user@gmail.com",
            SmtpPassword = "your_smtp_password",  // πŸ”’ Secure this!
            SmtpHost = "smtp.gmail.com",
            SmtpPort = 587,
            FromEmail = "user@gmail.com",
            NameApp = "app"
        },
       // sms
      //  push web any platforms
    });

⚠️ Notes

  • πŸ”’ Secure Credentials: Store SMTP passwords and sensitive data in environment variables or a secrets vault.
  • πŸ“‚ Dynamic Architecture: Automatically generates structure, services, schedulers, and validators from the config file.
  • πŸ“§ Built-in Notifier: Easily enable Email/SMS/Push notifications for your app.

βœ… Conclusion

WasmAI.AutoGenerator supercharges your .NET development by reducing boilerplate and enforcing clean, modular architecture. Whether you're building an admin panel, a complex API, or a service-oriented backendβ€”this tool lets you build your project architecture in seconds with:

dotnet run generate
dotnet run generate  /bpr

Start building smarter. πŸ’‘


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.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.1 143 5/25/2025
1.1.0 9,760,679 5/17/2025
1.0.9 3,805,036 5/15/2025
1.0.8 212 5/15/2025
1.0.7 978,481 5/12/2025
1.0.6 225 5/12/2025
1.0.5 187 5/12/2025
1.0.4 181 5/12/2025
1.0.4-q 186 5/12/2025
1.0.3 143 5/8/2025
1.0.2 141 5/1/2025
1.0.2-q 136 5/1/2025
1.0.2-p 135 5/1/2025
1.0.1-e 146 4/27/2025
1.0.1-d 145 4/27/2025
1.0.1-c 121 4/27/2025
1.0.1-b 160 4/24/2025