Developer Guide for Mixcore
This guide is designed specifically for developers who want to build applications, extend functionality, or contribute to Mixcore.
What You'll Learn
- Setting up a development environment
 - Understanding Mixcore's architecture
 - Working with the API
 - Creating custom modules and features
 - Best practices for development
 
Development Environment Setup
Prerequisites
- .NET 9.0 SDK
 - Docker and Docker Compose (recommended)
 - A code editor like Visual Studio Code or Visual Studio
 - Git
 - Basic knowledge of C#, ASP.NET Core, and web development
 
Repository Structure
Mixcore follows a microservices architecture organized in a monorepo:
mixcore/mix.core/
├─ src/
│  ├─ applications/  # Web applications and APIs
│  ├─ modules/       # Feature modules
│  ├─ platform/      # Core platform services
│  ├─ services/      # Microservices
│  ├─ terraform/     # Infrastructure as code
│  └─ test/          # Test projects
├─ docs/             # Documentation
├─ scripts/          # Utility scripts
├─ k8s/              # Kubernetes configurations
└─ cloud/            # Cloud deployment templates
Quick Start
Option 1: Docker Development (Recommended)
The easiest way to set up the development environment:
# Clone the repository with all submodules
git clone --branch develop --recursive https://github.com/mixcore/mix.core.git
# Navigate to the project directory
cd mix.core
# Build and start all services in development mode
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build
This sets up a complete development environment with hot-reload capabilities.
Option 2: Local Development
For development without Docker:
# Clone the repository
git clone https://github.com/mixcore/mix.core.git
# Navigate to the web application directory
cd mix.core/src/applications/Mix.Cms.Web
# Restore packages and build
dotnet restore
dotnet build
# Run the application in development mode
dotnet run --environment Development
Access the site at https://localhost:5001. For the first time, you'll be redirected to the Setup screen.
Core Architecture
Mixcore is built with a microservices architecture organized in several key components:
Platform Services
Located in src/platform/, these services provide the foundation:
mix.auth: Authentication and authorization servicesmix.database: Database abstraction and connection managementmix.identity: User identity managementmix.service: Core business logic servicesmix.signalr: Real-time communicationmix.storage.lib: Storage abstraction (S3, Azure, local)
Modules
Located in src/modules/, these are pluggable feature sets that extend functionality:
- Content management modules
 - E-commerce modules
 - Analytics modules
 - Custom business modules
 
Applications
Located in src/applications/, these are the user-facing applications:
Mix.Cms.Web: Main CMS web application- API gateways
 - Admin portals
 
Development Workflow
- 
Create a feature branch:
git checkout -b feature/your-feature-name - 
Make your changes: Implement your feature or fix the bug
 - 
Run tests:
dotnet test src/test - 
Submit a pull request: Push your branch and create a PR to the
developbranch 
API Development
Mixcore follows API-first design principles with both REST and GraphQL endpoints.
REST API
- API endpoints are documented using Swagger/OpenAPI
 - Access the API documentation at 
/swaggerwhen running locally - Authentication uses JWT tokens
 
Example API request with authentication:
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await client.GetAsync("https://api.example.com/api/v2/posts");
var content = await response.Content.ReadAsStringAsync();
GraphQL
- GraphQL schema provides flexible data querying
 - Access the GraphQL playground at 
/graphqlwhen running locally 
Example GraphQL query:
query {
  posts(take: 10, skip: 0) {
    id
    title
    content
    author {
      id
      name
    }
  }
}
Frontend Development
The admin portal uses modern web technologies:
- Framework: React with TypeScript
 - State Management: Redux + Redux Toolkit
 - Styling: Styled Components + Material UI
 - Build: Vite
 
Building the Admin Portal
# Navigate to the admin portal directory
cd src/applications/Mix.Cms.Admin
# Install dependencies
npm install
# Start development server
npm run dev
Creating Custom Modules
Mixcore allows developers to create custom modules that extend functionality. A basic module structure includes:
- Controller: Handles HTTP requests
 - Models: Defines data structure
 - Views: Defines UI components
 - Services: Implements business logic
 
For a detailed guide on creating custom modules, see Module Development.
Best Practices
- Follow the C# Coding Conventions
 - Write unit tests for all new features
 - Document your code with XML comments
 - Use dependency injection for services
 - Follow the repository pattern for data access
 - Use async/await for all I/O operations
 
Learn More
For more detailed information, see these specific developer guides: