A Modern Hybrid Headless CMS, highly modular content management system and web platform built with C# and .NET technologies. Designed with Modular architecture, extensible plugin support, and production-grade performance in mind, SharpPress provides developers with a flexible foundation for building everything from simple blogs and websites to complex enterprise web applications.
| Feature | Description |
|---|---|
| Plugin System | Extensible plugin architecture for custom functionality |
| C# Backend | Built on modern .NET with ASP.NET Core |
| Production Database | MySQL support for enterprise-grade deployments |
| Static File Serving | Built-in caching for frequently accessed content |
| Nginx Integration | Ready for production deployment with reverse proxy configuration |
SharpPress's plugin architecture allows you to extend functionality without modifying core code. Check out the SamplePlugin.cs file for a template:
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;
}
}- API Layer: RESTful endpoints with JSON serialization
- Plugin Engine: Dynamic loading and dependency management
- Data Access: Entity Framework Core with MySQL provider
- Caching System: Intelligent caching for static and dynamic content
- Authentication/Authorization: Extensible security layer
- SharpPress uses a modular database design that expands with installed plugins.
- Automatically does the table creation and migration based on any C# model class.
- The class automatically maps C# objects to database rows (Object-Relational Mapping).
- DeleteWhere requires a WHERE clause to prevent accidental full-table deletion.
- ExecuteQuery restricts potentially destructive commands (DROP, DELETE, etc.), allowing only SELECT queries.
- It uses a ConcurrentDictionary to cache the reflected properties of model classes, improving the performance of frequent operations.
- Dependency: SharpPress relies on the MySqlConnector library for all database connectivity so you MUST have MySQL on your server.
- Id Convention: It requires model classes to inheritance from FeatherData class, which is mapped to a primary BIGINT AUTO_INCREMENT column.
- Connection Pooling: The connection string is configured with connection pooling enabled, which is good for web application performance.
Please review our Security Policy for reporting vulnerabilities and security-related guidelines.
We are committed to fostering an open and welcoming environment. Please read our Code of Conduct before participating in our community.
We welcome contributions! Please read our Contributing Guidelines before submitting pull requests.
- 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
SharpPress is released under the MIT License. See the LICENSE file for details.
Built with ❤️ by Alireza Janaki and contributors.