diff --git a/modules/Admin/src/SimpleModule.Admin/README.md b/modules/Admin/src/SimpleModule.Admin/README.md new file mode 100644 index 00000000..0c3987a5 --- /dev/null +++ b/modules/Admin/src/SimpleModule.Admin/README.md @@ -0,0 +1,30 @@ +# SimpleModule.Admin + +Administration module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- User management (list, create, edit, delete) +- Role management with permission assignment +- Admin dashboard with configurable menu items +- Built-in Inertia.js views for admin UI + +## Installation + +```bash +sm install SimpleModule.Admin +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Admin +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Once installed, it registers its endpoints and menu items automatically. + +## License + +MIT diff --git a/modules/Admin/src/SimpleModule.Admin/SimpleModule.Admin.csproj b/modules/Admin/src/SimpleModule.Admin/SimpleModule.Admin.csproj index e5d72443..152457ea 100644 --- a/modules/Admin/src/SimpleModule.Admin/SimpleModule.Admin.csproj +++ b/modules/Admin/src/SimpleModule.Admin/SimpleModule.Admin.csproj @@ -1,6 +1,7 @@  net10.0 + Administration module for SimpleModule. Provides user and role management with built-in admin UI. diff --git a/modules/Agents/src/SimpleModule.Agents.Module/README.md b/modules/Agents/src/SimpleModule.Agents.Module/README.md new file mode 100644 index 00000000..9b8939b7 --- /dev/null +++ b/modules/Agents/src/SimpleModule.Agents.Module/README.md @@ -0,0 +1,29 @@ +# SimpleModule.Agents.Module + +AI agent persistence module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Database-backed session and message persistence for AI agents +- EF Core integration for agent data storage +- Contract-based service interface for cross-module communication + +## Installation + +```bash +sm install SimpleModule.Agents.Module +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Agents.Module +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. It provides `IAgentsContracts` for other modules to interact with agent sessions and messages. + +## License + +MIT diff --git a/modules/AuditLogs/src/SimpleModule.AuditLogs/README.md b/modules/AuditLogs/src/SimpleModule.AuditLogs/README.md new file mode 100644 index 00000000..5e881bd3 --- /dev/null +++ b/modules/AuditLogs/src/SimpleModule.AuditLogs/README.md @@ -0,0 +1,31 @@ +# SimpleModule.AuditLogs + +Audit logging module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Captures HTTP request audit trails automatically via middleware +- Tracks domain events and entity changes +- Configurable retention policies +- Browse and search audit log entries via built-in UI +- Query parameters and request body tracking + +## Installation + +```bash +sm install SimpleModule.AuditLogs +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.AuditLogs +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Once installed, it begins capturing audit trails for all authenticated requests. + +## License + +MIT diff --git a/modules/AuditLogs/src/SimpleModule.AuditLogs/SimpleModule.AuditLogs.csproj b/modules/AuditLogs/src/SimpleModule.AuditLogs/SimpleModule.AuditLogs.csproj index dc7593d3..a3e6dafd 100644 --- a/modules/AuditLogs/src/SimpleModule.AuditLogs/SimpleModule.AuditLogs.csproj +++ b/modules/AuditLogs/src/SimpleModule.AuditLogs/SimpleModule.AuditLogs.csproj @@ -1,6 +1,7 @@  net10.0 + Audit logging module for SimpleModule. Captures HTTP requests, domain events, and entity changes with configurable retention. diff --git a/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/README.md b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/README.md new file mode 100644 index 00000000..72b12b09 --- /dev/null +++ b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/README.md @@ -0,0 +1,30 @@ +# SimpleModule.BackgroundJobs + +Background job management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Scheduled background job execution using TickerQ +- Support for time-based and cron job scheduling +- Job progress tracking and status monitoring +- Admin dashboard for job management + +## Installation + +```bash +sm install SimpleModule.BackgroundJobs +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.BackgroundJobs +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Register your background jobs using the provided job scheduling APIs. + +## License + +MIT diff --git a/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/SimpleModule.BackgroundJobs.csproj b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/SimpleModule.BackgroundJobs.csproj index d2faca7e..82f2e874 100644 --- a/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/SimpleModule.BackgroundJobs.csproj +++ b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/SimpleModule.BackgroundJobs.csproj @@ -1,6 +1,7 @@ net10.0 + Background job module for SimpleModule. Manages scheduled job execution with cron support and progress tracking. diff --git a/modules/Dashboard/src/SimpleModule.Dashboard/README.md b/modules/Dashboard/src/SimpleModule.Dashboard/README.md new file mode 100644 index 00000000..647c6754 --- /dev/null +++ b/modules/Dashboard/src/SimpleModule.Dashboard/README.md @@ -0,0 +1,29 @@ +# SimpleModule.Dashboard + +Dashboard module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Home landing page with aggregated data and insights +- Configurable dashboard widgets +- Cross-module data aggregation via contracts + +## Installation + +```bash +sm install SimpleModule.Dashboard +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Dashboard +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. It provides a default home page for authenticated users. + +## License + +MIT diff --git a/modules/Dashboard/src/SimpleModule.Dashboard/SimpleModule.Dashboard.csproj b/modules/Dashboard/src/SimpleModule.Dashboard/SimpleModule.Dashboard.csproj index 18abacbb..2458a1bd 100644 --- a/modules/Dashboard/src/SimpleModule.Dashboard/SimpleModule.Dashboard.csproj +++ b/modules/Dashboard/src/SimpleModule.Dashboard/SimpleModule.Dashboard.csproj @@ -1,6 +1,7 @@ net10.0 + Dashboard module for SimpleModule. Provides a home landing page with aggregated data and insights. diff --git a/modules/Directory.Build.props b/modules/Directory.Build.props index 1ee7c3ff..d20d12e1 100644 --- a/modules/Directory.Build.props +++ b/modules/Directory.Build.props @@ -2,5 +2,11 @@ true + $(PackageTags);simplemodule-module + README.md + + + + diff --git a/modules/Email/src/SimpleModule.Email/README.md b/modules/Email/src/SimpleModule.Email/README.md new file mode 100644 index 00000000..273294b0 --- /dev/null +++ b/modules/Email/src/SimpleModule.Email/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Email + +Email sending module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Configurable SMTP and log-based email providers +- Email template management +- Retry logic for failed deliveries +- Background job integration for async email sending +- Email history and tracking + +## Installation + +```bash +sm install SimpleModule.Email +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Email +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Configure your SMTP settings in module options and use `IEmailContracts` to send emails from other modules. + +## License + +MIT diff --git a/modules/Email/src/SimpleModule.Email/SimpleModule.Email.csproj b/modules/Email/src/SimpleModule.Email/SimpleModule.Email.csproj index 2f988e24..ea606224 100644 --- a/modules/Email/src/SimpleModule.Email/SimpleModule.Email.csproj +++ b/modules/Email/src/SimpleModule.Email/SimpleModule.Email.csproj @@ -1,6 +1,7 @@ net10.0 + Email module for SimpleModule. Handles email sending with configurable SMTP providers, templates, and retry logic. diff --git a/modules/FeatureFlags/src/SimpleModule.FeatureFlags/README.md b/modules/FeatureFlags/src/SimpleModule.FeatureFlags/README.md new file mode 100644 index 00000000..00c38b12 --- /dev/null +++ b/modules/FeatureFlags/src/SimpleModule.FeatureFlags/README.md @@ -0,0 +1,31 @@ +# SimpleModule.FeatureFlags + +Feature flag management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Create and manage feature flags with in-memory caching +- Toggle features without redeployment +- Sync capabilities across instances +- Middleware integration for flag evaluation +- API endpoints for flag management + +## Installation + +```bash +sm install SimpleModule.FeatureFlags +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.FeatureFlags +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `IFeatureFlagContracts` to check flag status from other modules. + +## License + +MIT diff --git a/modules/FeatureFlags/src/SimpleModule.FeatureFlags/SimpleModule.FeatureFlags.csproj b/modules/FeatureFlags/src/SimpleModule.FeatureFlags/SimpleModule.FeatureFlags.csproj index 34125f86..878b1196 100644 --- a/modules/FeatureFlags/src/SimpleModule.FeatureFlags/SimpleModule.FeatureFlags.csproj +++ b/modules/FeatureFlags/src/SimpleModule.FeatureFlags/SimpleModule.FeatureFlags.csproj @@ -1,6 +1,7 @@ net10.0 + Feature flag module for SimpleModule. Provides feature toggle management with in-memory caching. diff --git a/modules/FileStorage/src/SimpleModule.FileStorage/README.md b/modules/FileStorage/src/SimpleModule.FileStorage/README.md new file mode 100644 index 00000000..1447ba9c --- /dev/null +++ b/modules/FileStorage/src/SimpleModule.FileStorage/README.md @@ -0,0 +1,31 @@ +# SimpleModule.FileStorage + +File storage module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- File upload and download with configurable storage providers +- Configurable file size limits and allowed extensions +- Permission-based access control +- Folder organization and management +- Browse and manage files via built-in UI + +## Installation + +```bash +sm install SimpleModule.FileStorage +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.FileStorage +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Configure storage providers (local, S3, Azure) via module options. + +## License + +MIT diff --git a/modules/FileStorage/src/SimpleModule.FileStorage/SimpleModule.FileStorage.csproj b/modules/FileStorage/src/SimpleModule.FileStorage/SimpleModule.FileStorage.csproj index e0355133..c0b83b62 100644 --- a/modules/FileStorage/src/SimpleModule.FileStorage/SimpleModule.FileStorage.csproj +++ b/modules/FileStorage/src/SimpleModule.FileStorage/SimpleModule.FileStorage.csproj @@ -1,6 +1,7 @@  net10.0 + File storage module for SimpleModule. Manages file uploads and downloads with configurable storage providers. diff --git a/modules/Localization/src/SimpleModule.Localization/README.md b/modules/Localization/src/SimpleModule.Localization/README.md new file mode 100644 index 00000000..05fa2627 --- /dev/null +++ b/modules/Localization/src/SimpleModule.Localization/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Localization + +Localization module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Multi-language support with JSON-based translations +- Locale resolution middleware +- String localizer factory integration +- Per-module translation file loading +- Frontend translation support via Inertia.js props + +## Installation + +```bash +sm install SimpleModule.Localization +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Localization +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Add JSON translation files to your modules' `Locales/` directories. + +## License + +MIT diff --git a/modules/Localization/src/SimpleModule.Localization/SimpleModule.Localization.csproj b/modules/Localization/src/SimpleModule.Localization/SimpleModule.Localization.csproj index 66e67098..7b70dde1 100644 --- a/modules/Localization/src/SimpleModule.Localization/SimpleModule.Localization.csproj +++ b/modules/Localization/src/SimpleModule.Localization/SimpleModule.Localization.csproj @@ -1,6 +1,7 @@ net10.0 + Localization module for SimpleModule. Provides multi-language support with JSON-based translations. diff --git a/modules/Marketplace/src/SimpleModule.Marketplace.Contracts/MarketplacePackage.cs b/modules/Marketplace/src/SimpleModule.Marketplace.Contracts/MarketplacePackage.cs index 08722cb2..2e68bc27 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace.Contracts/MarketplacePackage.cs +++ b/modules/Marketplace/src/SimpleModule.Marketplace.Contracts/MarketplacePackage.cs @@ -16,4 +16,5 @@ public class MarketplacePackage public string ProjectLink { get; set; } = string.Empty; public MarketplaceCategory Category { get; set; } public bool IsInstalled { get; set; } + public bool IsVerified { get; set; } } diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/Locales/en.json b/modules/Marketplace/src/SimpleModule.Marketplace/Locales/en.json index c8ff137d..767d4802 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/Locales/en.json +++ b/modules/Marketplace/src/SimpleModule.Marketplace/Locales/en.json @@ -7,6 +7,7 @@ "Browse.SortDownloads": "Most Downloads", "Browse.SortAlphabetical": "A-Z", "Browse.BadgeInstalled": "Installed", + "Browse.BadgeVerified": "Verified author", "Browse.LoadMore": "Load more modules", "Browse.EmptyTitle": "No modules found", "Browse.EmptyBody": "Try adjusting your search or filters.", @@ -19,6 +20,7 @@ "Detail.LicenseLabel": "License", "Detail.LicenseView": "View", "Detail.BadgeInstalled": "Installed", + "Detail.BadgeVerified": "Verified author", "Detail.TabSmCli": "SM CLI", "Detail.TabDotnetCli": ".NET CLI", "Detail.PackageInfoTitle": "Package Info", diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/Locales/keys.ts b/modules/Marketplace/src/SimpleModule.Marketplace/Locales/keys.ts index 932ef650..a3163278 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/Locales/keys.ts +++ b/modules/Marketplace/src/SimpleModule.Marketplace/Locales/keys.ts @@ -1,6 +1,7 @@ export const MarketplaceKeys = { Browse: { BadgeInstalled: 'Browse.BadgeInstalled', + BadgeVerified: 'Browse.BadgeVerified', ClearFilters: 'Browse.ClearFilters', Description: 'Browse.Description', EmptyBody: 'Browse.EmptyBody', @@ -16,6 +17,7 @@ export const MarketplaceKeys = { Detail: { BackToMarketplace: 'Detail.BackToMarketplace', BadgeInstalled: 'Detail.BadgeInstalled', + BadgeVerified: 'Detail.BadgeVerified', BreadcrumbMarketplace: 'Detail.BreadcrumbMarketplace', CopiedButton: 'Detail.CopiedButton', CopyButton: 'Detail.CopyButton', diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/MarketplaceModuleOptions.cs b/modules/Marketplace/src/SimpleModule.Marketplace/MarketplaceModuleOptions.cs index 2c3d1e15..da8f1a84 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/MarketplaceModuleOptions.cs +++ b/modules/Marketplace/src/SimpleModule.Marketplace/MarketplaceModuleOptions.cs @@ -9,7 +9,7 @@ public class MarketplaceModuleOptions : IModuleOptions "https://api.nuget.org/v3/registration5-gz-semver2"; public string NuGetFlatContainerBaseAddress { get; set; } = "https://api.nuget.org/v3-flatcontainer"; - public string PackageTag { get; set; } = "simplemodule"; + public List VerifiedAuthors { get; set; } = ["antosubash"]; public int SearchCacheDurationMinutes { get; set; } = 5; public int DetailCacheDurationMinutes { get; set; } = 10; } diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/NuGetMarketplaceService.cs b/modules/Marketplace/src/SimpleModule.Marketplace/NuGetMarketplaceService.cs index ea66fd3a..dbda4f35 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/NuGetMarketplaceService.cs +++ b/modules/Marketplace/src/SimpleModule.Marketplace/NuGetMarketplaceService.cs @@ -16,7 +16,7 @@ IMemoryCache cache { public async Task SearchPackagesAsync(MarketplaceSearchRequest request) { - var cacheKey = $"Marketplace:Search:{request.Query}:{request.Skip}:{request.Take}"; + var cacheKey = $"Marketplace:Search:{request.Query}"; var cached = await cache.GetOrCreateAsync( cacheKey, @@ -25,7 +25,7 @@ public async Task SearchPackagesAsync(MarketplaceSearch entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes( options.Value.SearchCacheDurationMinutes ); - return await FetchSearchResultsAsync(request); + return await FetchAllPackagesAsync(request.Query); } ); @@ -48,7 +48,10 @@ .. packages.OrderByDescending(p => p.TotalDownloads), _ => packages, }; - return new MarketplaceSearchResult { TotalHits = result.TotalHits, Packages = packages }; + var totalHits = packages.Count; + packages = packages.Skip(request.Skip).Take(request.Take).ToList(); + + return new MarketplaceSearchResult { TotalHits = totalHits, Packages = packages }; } public async Task GetPackageDetailsAsync(string packageId) @@ -70,43 +73,30 @@ .. packages.OrderByDescending(p => p.TotalDownloads), public Task> GetInstalledPackageIdsAsync() => installedPackageDetector.GetInstalledPackageIdsAsync(); - private async Task FetchSearchResultsAsync( - MarketplaceSearchRequest request - ) + private async Task FetchAllPackagesAsync(string? searchQuery) { try { var client = httpClientFactory.CreateClient(MarketplaceConstants.ModuleName); - var tag = options.Value.PackageTag; - var query = string.IsNullOrWhiteSpace(request.Query) - ? $"tag:{tag}" - : $"tag:{tag} {request.Query}"; - - var url = - $"{options.Value.NuGetSearchBaseAddress}?q={Uri.EscapeDataString(query)}&skip={request.Skip}&take={request.Take}"; - - var response = await client.GetFromJsonAsync(url); - if (response is null) - { - return new MarketplaceSearchResult(); - } + var verifiedAuthors = options.Value.VerifiedAuthors; - var installedIds = await installedPackageDetector.GetInstalledPackageIdsAsync(); + var installedIdsTask = installedPackageDetector.GetInstalledPackageIdsAsync(); + var nugetTasks = verifiedAuthors.Select(author => + FetchPackagesForOwnerAsync(client, author, searchQuery) + ); + var results = await Task.WhenAll(nugetTasks); + var installedIds = await installedIdsTask; - var filtered = response - .Data.Where(d => + var packages = results + .SelectMany(r => r) + .DistinctBy(d => d.Id, StringComparer.OrdinalIgnoreCase) + .Where(d => d.Id?.EndsWith(".Contracts", StringComparison.OrdinalIgnoreCase) != true ) + .Select(d => MapToPackage(d, installedIds, verifiedAuthors)) .ToList(); - var contractsRemoved = response.Data.Count - filtered.Count; - var packages = filtered.Select(d => MapToPackage(d, installedIds)).ToList(); - - return new MarketplaceSearchResult - { - TotalHits = response.TotalHits - contractsRemoved, - Packages = packages, - }; + return new MarketplaceSearchResult { TotalHits = packages.Count, Packages = packages }; } catch (HttpRequestException) { @@ -114,17 +104,42 @@ MarketplaceSearchRequest request } } + private async Task> FetchPackagesForOwnerAsync( + HttpClient client, + string owner, + string? searchQuery + ) + { + var query = string.IsNullOrWhiteSpace(searchQuery) + ? $"owner:{owner}" + : $"owner:{owner} {searchQuery}"; + + var url = + $"{options.Value.NuGetSearchBaseAddress}?q={Uri.EscapeDataString(query)}&take=100"; + + var response = await client.GetFromJsonAsync(url); + return response?.Data ?? []; + } + private async Task FetchPackageDetailsAsync(string packageId) { try { var client = httpClientFactory.CreateClient(MarketplaceConstants.ModuleName); - var tag = options.Value.PackageTag; - var searchAddress = - $"{options.Value.NuGetSearchBaseAddress}?q=packageid:{Uri.EscapeDataString(packageId)} tag:{tag}&take=1"; + var verifiedAuthors = options.Value.VerifiedAuthors; + + var authorTasks = verifiedAuthors.Select(author => + { + var query = $"packageid:{packageId} owner:{author}"; + var url = + $"{options.Value.NuGetSearchBaseAddress}?q={Uri.EscapeDataString(query)}&take=1"; + return client.GetFromJsonAsync(url); + }); + var responses = await Task.WhenAll(authorTasks); + var packageData = responses + .Select(r => r?.Data.FirstOrDefault()) + .FirstOrDefault(d => d is not null); - var searchResponse = await client.GetFromJsonAsync(searchAddress); - var packageData = searchResponse?.Data.FirstOrDefault(); if (packageData is null) { return null; @@ -135,7 +150,7 @@ MarketplaceSearchRequest request await Task.WhenAll(installedIdsTask, readmeTask); var installedIds = await installedIdsTask; - var basePackage = MapToPackage(packageData, installedIds); + var basePackage = MapToPackage(packageData, installedIds, verifiedAuthors); var readme = await readmeTask; return new MarketplacePackageDetail @@ -151,6 +166,7 @@ MarketplaceSearchRequest request ProjectLink = basePackage.ProjectLink, Category = basePackage.Category, IsInstalled = basePackage.IsInstalled, + IsVerified = basePackage.IsVerified, LicenseLink = packageData.LicenseAddress ?? string.Empty, Versions = (packageData.Versions ?? []) .Select(v => new MarketplacePackageVersion @@ -209,15 +225,21 @@ private async Task FetchReadmeAsync( private static MarketplacePackage MapToPackage( NuGetPackageData data, - HashSet installedIds + HashSet installedIds, + List verifiedAuthors ) { + var authors = data.Authors ?? []; + var isVerified = authors.Exists(a => + verifiedAuthors.Contains(a, StringComparer.OrdinalIgnoreCase) + ); + return new MarketplacePackage { Id = data.Id ?? string.Empty, Title = data.Title ?? data.Id ?? string.Empty, Description = data.Description ?? string.Empty, - Authors = string.Join(", ", data.Authors ?? []), + Authors = string.Join(", ", authors), Icon = data.IconAddress ?? string.Empty, TotalDownloads = data.TotalDownloads, Tags = data.Tags ?? [], @@ -225,6 +247,7 @@ HashSet installedIds ProjectLink = data.ProjectAddress ?? string.Empty, Category = CategoryMapper.MapCategory(data.Tags ?? []), IsInstalled = installedIds.Contains(data.Id ?? string.Empty), + IsVerified = isVerified, }; } } diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/README.md b/modules/Marketplace/src/SimpleModule.Marketplace/README.md new file mode 100644 index 00000000..89ceac26 --- /dev/null +++ b/modules/Marketplace/src/SimpleModule.Marketplace/README.md @@ -0,0 +1,32 @@ +# SimpleModule.Marketplace + +Module marketplace for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Browse and discover available SimpleModule modules from NuGet +- Search, filter by category, and sort modules +- View module details, README, and version history +- One-click install commands (SM CLI and .NET CLI) +- Installed module detection +- Caching for fast browsing + +## Installation + +```bash +sm install SimpleModule.Marketplace +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Marketplace +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Navigate to `/marketplace/browse` to explore available modules. + +## License + +MIT diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/SimpleModule.Marketplace.csproj b/modules/Marketplace/src/SimpleModule.Marketplace/SimpleModule.Marketplace.csproj index aa5996ad..f3c3c9cb 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/SimpleModule.Marketplace.csproj +++ b/modules/Marketplace/src/SimpleModule.Marketplace/SimpleModule.Marketplace.csproj @@ -1,6 +1,7 @@ net10.0 + Marketplace module for SimpleModule. Browse, discover, and install available modules from NuGet. diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/Views/Browse.tsx b/modules/Marketplace/src/SimpleModule.Marketplace/Views/Browse.tsx index 72c1056f..8cca7099 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/Views/Browse.tsx +++ b/modules/Marketplace/src/SimpleModule.Marketplace/Views/Browse.tsx @@ -4,7 +4,7 @@ import { Badge, Button, Card, CardContent, CardFooter, Input, PageShell } from ' import { useState } from 'react'; import { MarketplaceKeys } from '@/Locales/keys'; import type { MarketplacePackage } from '@/types'; -import { categoryLabel, categoryNames, formatDownloads } from './utils'; +import { categoryLabel, categoryNames, formatDownloads, verifiedBadgePath } from './utils'; const PAGE_SIZE = 24; @@ -139,7 +139,19 @@ export default function Browse({ )}

{pkg.title}

-

{pkg.authors}

+

+ {pkg.authors} + {pkg.isVerified && ( + + + + )} +

{pkg.description}

diff --git a/modules/Marketplace/src/SimpleModule.Marketplace/Views/Detail.tsx b/modules/Marketplace/src/SimpleModule.Marketplace/Views/Detail.tsx index 705202a1..47babd4a 100644 --- a/modules/Marketplace/src/SimpleModule.Marketplace/Views/Detail.tsx +++ b/modules/Marketplace/src/SimpleModule.Marketplace/Views/Detail.tsx @@ -18,7 +18,7 @@ import { useState } from 'react'; import Markdown from 'react-markdown'; import { MarketplaceKeys } from '@/Locales/keys'; import type { MarketplacePackageDetail } from '@/types'; -import { categoryLabel, formatDownloads } from './utils'; +import { categoryLabel, formatDownloads, verifiedBadgePath } from './utils'; interface Props { package: MarketplacePackageDetail; @@ -172,7 +172,19 @@ export default function Detail({ package: pkg }: Props) {

{pkg.title}

- {pkg.authors} + + {pkg.authors} + {pkg.isVerified && ( + + + + )} + net10.0 + OpenIddict module for SimpleModule. Implements OAuth 2.0 and OpenID Connect authentication server. diff --git a/modules/Orders/src/SimpleModule.Orders/README.md b/modules/Orders/src/SimpleModule.Orders/README.md new file mode 100644 index 00000000..e3f03647 --- /dev/null +++ b/modules/Orders/src/SimpleModule.Orders/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Orders + +Order management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Order creation and lifecycle management +- Order listing and detail views +- Data seeding for development +- Menu item registration +- Cross-module communication via contracts + +## Installation + +```bash +sm install SimpleModule.Orders +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Orders +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `IOrdersContracts` to interact with orders from other modules. + +## License + +MIT diff --git a/modules/Orders/src/SimpleModule.Orders/SimpleModule.Orders.csproj b/modules/Orders/src/SimpleModule.Orders/SimpleModule.Orders.csproj index 98802c88..224f8e74 100644 --- a/modules/Orders/src/SimpleModule.Orders/SimpleModule.Orders.csproj +++ b/modules/Orders/src/SimpleModule.Orders/SimpleModule.Orders.csproj @@ -1,6 +1,7 @@  net10.0 + Orders module for SimpleModule. Manages order creation, lifecycle, and tracking. diff --git a/modules/PageBuilder/src/SimpleModule.PageBuilder/README.md b/modules/PageBuilder/src/SimpleModule.PageBuilder/README.md new file mode 100644 index 00000000..746389df --- /dev/null +++ b/modules/PageBuilder/src/SimpleModule.PageBuilder/README.md @@ -0,0 +1,31 @@ +# SimpleModule.PageBuilder + +Visual page builder module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Visual page creation and management +- Page templates and tag support +- Publish/unpublish workflow +- 22 endpoints for full page lifecycle management +- Built-in page viewer interface + +## Installation + +```bash +sm install SimpleModule.PageBuilder +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.PageBuilder +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Navigate to the page builder section to create and manage pages. + +## License + +MIT diff --git a/modules/PageBuilder/src/SimpleModule.PageBuilder/SimpleModule.PageBuilder.csproj b/modules/PageBuilder/src/SimpleModule.PageBuilder/SimpleModule.PageBuilder.csproj index 2b09f5c3..e07ce9bd 100644 --- a/modules/PageBuilder/src/SimpleModule.PageBuilder/SimpleModule.PageBuilder.csproj +++ b/modules/PageBuilder/src/SimpleModule.PageBuilder/SimpleModule.PageBuilder.csproj @@ -1,6 +1,7 @@  net10.0 + Page builder module for SimpleModule. Visual page creation with templates, tags, and publish workflow. diff --git a/modules/Permissions/src/SimpleModule.Permissions/README.md b/modules/Permissions/src/SimpleModule.Permissions/README.md new file mode 100644 index 00000000..9c3bb9b7 --- /dev/null +++ b/modules/Permissions/src/SimpleModule.Permissions/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Permissions + +Permission management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Role-based access control (RBAC) with database persistence +- Permission seeding for initial setup +- Cross-module authorization via contracts +- Permission assignment to roles +- Fine-grained endpoint authorization + +## Installation + +```bash +sm install SimpleModule.Permissions +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Permissions +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `IPermissionsContracts` to check permissions from other modules. + +## License + +MIT diff --git a/modules/Permissions/src/SimpleModule.Permissions/SimpleModule.Permissions.csproj b/modules/Permissions/src/SimpleModule.Permissions/SimpleModule.Permissions.csproj index a74a01fa..1bb370fc 100644 --- a/modules/Permissions/src/SimpleModule.Permissions/SimpleModule.Permissions.csproj +++ b/modules/Permissions/src/SimpleModule.Permissions/SimpleModule.Permissions.csproj @@ -1,6 +1,7 @@  net10.0 + Permissions module for SimpleModule. Role-based access control with database-backed permission management. diff --git a/modules/Products/src/SimpleModule.Products/README.md b/modules/Products/src/SimpleModule.Products/README.md new file mode 100644 index 00000000..df3396e3 --- /dev/null +++ b/modules/Products/src/SimpleModule.Products/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Products + +Product catalog module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Full product CRUD with browse, create, edit, and delete +- Bulk import support +- Advanced tiered pricing (behind feature flag) +- Data seeding for development +- 9 endpoints for product management + +## Installation + +```bash +sm install SimpleModule.Products +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Products +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `IProductsContracts` to interact with products from other modules. + +## License + +MIT diff --git a/modules/Products/src/SimpleModule.Products/SimpleModule.Products.csproj b/modules/Products/src/SimpleModule.Products/SimpleModule.Products.csproj index 672e658e..b24174a5 100644 --- a/modules/Products/src/SimpleModule.Products/SimpleModule.Products.csproj +++ b/modules/Products/src/SimpleModule.Products/SimpleModule.Products.csproj @@ -1,6 +1,7 @@  net10.0 + Products module for SimpleModule. Product catalog management with bulk import and tiered pricing. diff --git a/modules/Rag/src/SimpleModule.Rag.Module/README.md b/modules/Rag/src/SimpleModule.Rag.Module/README.md new file mode 100644 index 00000000..ff9b0a1c --- /dev/null +++ b/modules/Rag/src/SimpleModule.Rag.Module/README.md @@ -0,0 +1,30 @@ +# SimpleModule.Rag.Module + +Retrieval-Augmented Generation (RAG) persistence module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Database-backed storage for RAG data +- Structured knowledge cache integration +- Entity Framework persistence for RAG documents +- Contract-based service interface for cross-module use + +## Installation + +```bash +sm install SimpleModule.Rag.Module +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Rag.Module +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. It provides `IRagContracts` for other modules to store and retrieve RAG data. + +## License + +MIT diff --git a/modules/RateLimiting/src/SimpleModule.RateLimiting/README.md b/modules/RateLimiting/src/SimpleModule.RateLimiting/README.md new file mode 100644 index 00000000..33f5d9ea --- /dev/null +++ b/modules/RateLimiting/src/SimpleModule.RateLimiting/README.md @@ -0,0 +1,30 @@ +# SimpleModule.RateLimiting + +Rate limiting module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Fixed window, sliding window, and token bucket algorithms +- IP-based and user-based rate limiting +- Configurable policies per endpoint +- Middleware integration for automatic enforcement + +## Installation + +```bash +sm install SimpleModule.RateLimiting +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.RateLimiting +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Configure rate limiting policies via module options. + +## License + +MIT diff --git a/modules/RateLimiting/src/SimpleModule.RateLimiting/SimpleModule.RateLimiting.csproj b/modules/RateLimiting/src/SimpleModule.RateLimiting/SimpleModule.RateLimiting.csproj index d68b733a..bec67d7f 100644 --- a/modules/RateLimiting/src/SimpleModule.RateLimiting/SimpleModule.RateLimiting.csproj +++ b/modules/RateLimiting/src/SimpleModule.RateLimiting/SimpleModule.RateLimiting.csproj @@ -1,6 +1,7 @@ net10.0 + Rate limiting module for SimpleModule. Enforces rate limits using fixed window, sliding window, and token bucket algorithms. diff --git a/modules/Settings/src/SimpleModule.Settings/README.md b/modules/Settings/src/SimpleModule.Settings/README.md new file mode 100644 index 00000000..b64da078 --- /dev/null +++ b/modules/Settings/src/SimpleModule.Settings/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Settings + +Settings management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Application-scoped and user-scoped configuration settings +- Theme, language, and timezone preferences +- System settings (maintenance mode, registration toggles) +- Settings UI with built-in views +- Cross-module settings access via contracts + +## Installation + +```bash +sm install SimpleModule.Settings +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Settings +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `ISettingsContracts` to read and write settings from other modules. + +## License + +MIT diff --git a/modules/Settings/src/SimpleModule.Settings/SimpleModule.Settings.csproj b/modules/Settings/src/SimpleModule.Settings/SimpleModule.Settings.csproj index ec2442ac..654a924c 100644 --- a/modules/Settings/src/SimpleModule.Settings/SimpleModule.Settings.csproj +++ b/modules/Settings/src/SimpleModule.Settings/SimpleModule.Settings.csproj @@ -1,6 +1,7 @@  net10.0 + Settings module for SimpleModule. Application and user-scoped configuration with theme and language preferences. diff --git a/modules/Tenants/src/SimpleModule.Tenants/README.md b/modules/Tenants/src/SimpleModule.Tenants/README.md new file mode 100644 index 00000000..679b245c --- /dev/null +++ b/modules/Tenants/src/SimpleModule.Tenants/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Tenants + +Multi-tenancy module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- Tenant resolution by hostname +- Tenant-scoped services and data isolation +- Tenant management dashboard +- Tenant creation and configuration +- Cross-module tenant awareness via contracts + +## Installation + +```bash +sm install SimpleModule.Tenants +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Tenants +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Configure tenant resolution strategy via module options. + +## License + +MIT diff --git a/modules/Tenants/src/SimpleModule.Tenants/SimpleModule.Tenants.csproj b/modules/Tenants/src/SimpleModule.Tenants/SimpleModule.Tenants.csproj index c439d805..b35af960 100644 --- a/modules/Tenants/src/SimpleModule.Tenants/SimpleModule.Tenants.csproj +++ b/modules/Tenants/src/SimpleModule.Tenants/SimpleModule.Tenants.csproj @@ -1,6 +1,7 @@ net10.0 + Tenants module for SimpleModule. Multi-tenancy support with hostname resolution and data isolation. diff --git a/modules/Users/src/SimpleModule.Users/README.md b/modules/Users/src/SimpleModule.Users/README.md new file mode 100644 index 00000000..f50b5ffc --- /dev/null +++ b/modules/Users/src/SimpleModule.Users/README.md @@ -0,0 +1,31 @@ +# SimpleModule.Users + +User management module for [SimpleModule](https://github.com/antosubash/SimpleModule) — a modular monolith framework for .NET. + +## Features + +- User authentication and identity via ASP.NET Core Identity +- User and role management +- Email configuration for account verification +- Account security settings +- Cross-module user access via contracts + +## Installation + +```bash +sm install SimpleModule.Users +``` + +Or via .NET CLI: + +```bash +dotnet add package SimpleModule.Users +``` + +## Usage + +The module is auto-discovered by the SimpleModule framework. Use `IUsersContracts` to access user data from other modules. + +## License + +MIT diff --git a/modules/Users/src/SimpleModule.Users/SimpleModule.Users.csproj b/modules/Users/src/SimpleModule.Users/SimpleModule.Users.csproj index 338423a3..9966b75b 100644 --- a/modules/Users/src/SimpleModule.Users/SimpleModule.Users.csproj +++ b/modules/Users/src/SimpleModule.Users/SimpleModule.Users.csproj @@ -1,6 +1,7 @@  net10.0 + Users module for SimpleModule. User authentication and identity management via ASP.NET Core Identity.