Zonit SDK is a comprehensive software development kit that provides a modular architecture for building enterprise-level applications with multi-tenancy, identity management, AI integration, and microservices support.
This repository serves as the main SDK that orchestrates multiple extensions, plugins, and services through Git submodules. Each component is maintained as a separate repository, allowing for independent versioning and development while providing a unified development experience.
The SDK is organized into three main categories:
Modular extensions that add specific functionality to your application:
- Zonit.Extensions - Core extension framework and base utilities
- Zonit.Extensions.Ai - AI and machine learning integration capabilities
- Zonit.Extensions.Cultures - Localization and multi-language support
- Zonit.Extensions.Databases - Database abstraction and management
- Zonit.Extensions.Identity - Authentication and authorization framework
- Zonit.Extensions.Organizations - Organization structure and hierarchy management
- Zonit.Extensions.Projects - Project management and organization
- Zonit.Extensions.Tenants - Multi-tenancy support and tenant isolation
- Zonit.Plugins - Plugin system for extending application functionality
Microservices for specific business domains:
- Zonit.Services.Dashboard - Dashboard and analytics service
- Zonit.Services.EventMessage - Event-driven messaging and communication service
- Git 2.13+ (for submodule support)
- .NET SDK (version specified in global.json or Directory.Build.props)
- Visual Studio 2022 or VS Code with C# extension
Option 1 - Clone with automatic submodule initialization (Recommended):
git clone --recurse-submodules https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.SdkOption 2 - Clone and run setup script:
git clone https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.Sdk
.\Setup-Repository.ps1Option 3 - Manual submodule initialization:
git clone https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.Sdk
git submodule update --init --recursiveConfigure Git to automatically handle submodules for all operations:
git config --global submodule.recurse trueThis ensures submodules are automatically updated during git pull, git checkout, and other operations.
# Build all projects
dotnet build Zonit.slnx
# Build in Release mode
dotnet build Zonit.slnx -c Release# Run all tests
dotnet test Zonit.slnx
# Run tests with coverage
dotnet test Zonit.slnx --collect:"XPlat Code Coverage"# Update main repository and all submodules to latest
git pull --recurse-submodules
# Or use the setup script
.\Setup-Repository.ps1# Check status of all submodules
git submodule status
# Update specific submodule to latest remote version
git submodule update --remote Source/Extensions/Zonit.Extensions.Ai
# Execute command in all submodules
git submodule foreach git status
git submodule foreach git pull origin mainEach submodule is an independent Git repository. To make changes:
- Navigate to the submodule directory
- Create a branch and make your changes
- Commit and push to the submodule's repository
- Update the parent repository to reference the new commit
# Example: Making changes to Zonit.Extensions.Ai
cd Source/Extensions/Zonit.Extensions.Ai
git checkout -b feature/my-new-feature
# Make your changes
git add .
git commit -m "Add new feature"
git push origin feature/my-new-feature
# Return to main repository and update submodule reference
cd ../../..
git add Source/Extensions/Zonit.Extensions.Ai
git commit -m "Update Zonit.Extensions.Ai submodule"
git pushZonit.Sdk/
βββ Source/
β βββ Extensions/ # Extension modules
β β βββ Zonit.Extensions/
β β βββ Zonit.Extensions.Ai/
β β βββ Zonit.Extensions.Cultures/
β β βββ Zonit.Extensions.Databases/
β β βββ Zonit.Extensions.Identity/
β β βββ Zonit.Extensions.Organizations/
β β βββ Zonit.Extensions.Projects/
β β βββ Zonit.Extensions.Tenants/
β βββ Plugins/ # Plugin system
β β βββ Zonit.Plugins/
β βββ Services/ # Microservices
β βββ Zonit.Services.Dashboard/
β βββ Zonit.Services.EventMessage/
βββ Directory.Build.props # Common build properties
βββ Zonit.slnx # Solution file
βββ Setup-Repository.ps1 # Automated setup script
βββ README.md # This file
Contributions are welcome! Since this is a multi-repository project:
- Each submodule has its own repository and contribution guidelines
- Check the individual repository's README for specific contribution instructions
- For SDK-level changes, open an issue or PR in this repository
See LICENSE.txt for details.
All submodules are hosted under the Zonit GitHub Organization.
Initial repository setup and submodule initialization. Automatically downloads all submodules and prepares the workspace.
.\Setup-Repository.ps1Advanced solution file management and maintenance tool. Automatically generates and maintains the Visual Studio solution file with proper project hierarchy based on Git submodules.
π Full Documentation
Quick usage:
# Preview structure without making changes
.\Update-ZonitSolution.ps1 -DryRun
# Update submodules and rebuild solution
.\Update-ZonitSolution.ps1 -UpdateSubmodules -CleanRebuildFeatures:
- Automatic submodule discovery and grouping by category
- Visual Studio solution generation with hierarchical folder structure
- Submodule update management
- Backup creation before rebuild
- Solution item detection (README, config files, etc.)
For detailed documentation on each component, please refer to the individual repository's documentation:
- Extensions documentation: See each extension's repository
- Plugin development: Zonit.Plugins
- Service APIs: Check individual service repositories
git submodule update --init --recursivegit submodule sync --recursive
git submodule update --init --recursivegit submodule foreach --recursive git reset --hard
git submodule update --init --recursive