Skip to content

Repository files navigation

Zonit SDK

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.

πŸ“– Overview

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.

πŸ—οΈ Architecture

The SDK is organized into three main categories:

Extensions

Modular extensions that add specific functionality to your application:

Plugins

  • Zonit.Plugins - Plugin system for extending application functionality

Services

Microservices for specific business domains:

πŸš€ Getting Started

Prerequisites

  • 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

Initial Setup

Option 1 - Clone with automatic submodule initialization (Recommended):

git clone --recurse-submodules https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.Sdk

Option 2 - Clone and run setup script:

git clone https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.Sdk
.\Setup-Repository.ps1

Option 3 - Manual submodule initialization:

git clone https://github.com/Zonit/Zonit.Sdk.git
cd Zonit.Sdk
git submodule update --init --recursive

Global Git Configuration (Recommended)

Configure Git to automatically handle submodules for all operations:

git config --global submodule.recurse true

This ensures submodules are automatically updated during git pull, git checkout, and other operations.

πŸ”§ Usage

Building the Solution

# Build all projects
dotnet build Zonit.slnx

# Build in Release mode
dotnet build Zonit.slnx -c Release

Running Tests

# Run all tests
dotnet test Zonit.slnx

# Run tests with coverage
dotnet test Zonit.slnx --collect:"XPlat Code Coverage"

Updating the SDK

# Update main repository and all submodules to latest
git pull --recurse-submodules

# Or use the setup script
.\Setup-Repository.ps1

Working with Individual Submodules

# 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 main

Making Changes to Submodules

Each submodule is an independent Git repository. To make changes:

  1. Navigate to the submodule directory
  2. Create a branch and make your changes
  3. Commit and push to the submodule's repository
  4. 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 push

πŸ“ Project Structure

Zonit.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

🀝 Contributing

Contributions are welcome! Since this is a multi-repository project:

  1. Each submodule has its own repository and contribution guidelines
  2. Check the individual repository's README for specific contribution instructions
  3. For SDK-level changes, open an issue or PR in this repository

πŸ“ License

See LICENSE.txt for details.

πŸ”— Related Repositories

All submodules are hosted under the Zonit GitHub Organization.

βš™οΈ Maintenance Scripts

Setup-Repository.ps1

Initial repository setup and submodule initialization. Automatically downloads all submodules and prepares the workspace.

.\Setup-Repository.ps1

Update-ZonitSolution.ps1

Advanced 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 -CleanRebuild

Features:

  • 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.)

πŸ“š Documentation

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

πŸ› Troubleshooting

Submodules not initialized

git submodule update --init --recursive

Submodules out of sync

git submodule sync --recursive
git submodule update --init --recursive

Reset all submodules to tracked commits

git submodule foreach --recursive git reset --hard
git submodule update --init --recursive

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages