MIT License
.NET 8.0
MySQL 8.0
Modular 100%

Modern .NET CMS Platform

A highly modular content management system and web platform built with C# and .NET. Designed with extensible plugin support and production-grade performance in mind.

View on GitHub

✨ Key Features

Plugin System

Extensible plugin architecture allows you to add custom functionality without modifying the core code.

C# Backend

Built on modern .NET 8 with ASP.NET Core, ensuring high performance and reliability.

Production Database

Full MySQL 8.0 support for enterprise-grade deployments and complex data structures.

Static File Serving

Includes built-in caching mechanisms for frequently accessed content to reduce load times.

Nginx Integration

Ready for production deployment with optimized reverse proxy configurations.

🧩 Plugin Development

Extend functionality easily using the IPlugin interface. Here is a template example:

public class TestPlugin : IPlugin
{
    public string Name => "TestPlugin";
    public string Version => "2.1.155";

    public Task OnLoadAsync(IPluginContext context)
    {
        return Task.CompletedTask;
    }

    public Task OnUpdateAsync(IPluginContext context)
    {
        return Task.CompletedTask;
    }

    public Task OnUnloadAsync()
    {
        return Task.CompletedTask;
    }
}

🏗️ Architecture

Built with a modular approach separating concerns for maintainability.

API Layer RESTful endpoints with JSON serialization
Plugin Engine Dynamic loading and dependency management
Data Access Entity Framework Core with MySQL provider
Caching Intelligent caching for static and dynamic content
Security Extensible authentication and authorization layer

📜 Database & Security

SharpPress uses a modular database design that expands with installed plugins. It automatically handles table creation and migration based on C# model classes.

🔏 Built-in Protections

🛡️

DeleteWhere Safety

Requires a WHERE clause to prevent accidental full-table deletion operations.

🔒

Query Restriction

ExecuteQuery restricts destructive commands (DROP, DELETE), allowing only SELECT queries.

Performance Caching

Uses a ConcurrentDictionary to cache reflected properties of model classes, improving the performance of frequent operations.

Technical Notes: Relies on the MySqlConnector library. Requires model classes to inherit from the FeatherData class (mapped to a BIGINT AUTO_INCREMENT primary key).

🤝 Contributing

We welcome contributions! Please follow these steps to submit your changes.

Fork the repository
Create a feature branch (git checkout -b feature/amazing-feature)
Commit your changes (git commit -m 'Add amazing feature')
Push to the branch (git push origin feature/amazing-feature)
Open a Pull Request
Please read our Security Policy and Code of Conduct before participating.