A modern, scalable Content Management System built with .NET Core following Clean Architecture principles.
This project implements Clean Architecture with the following layers:
- Domain Layer: Core business entities and interfaces
- Application Layer: Business logic, DTOs, and service interfaces
- Infrastructure Layer: Data access, repositories, and external services
- WebApi Layer: REST API controllers and endpoints
- Multi-Site Management: Support for multiple websites
- Page Management: Create and manage web pages with templates
- Content Management: Rich content creation and editing
- Menu System: Dynamic navigation menu management
- News & Notices: Built-in news and announcement system
- Component System: Reusable page components
- Theme Support: Multiple theme management
- File Upload: Document and image management
- Sitemap Generation: Automatic sitemap creation
- .NET Core: Backend framework
- ASP.NET Core Web API: RESTful API development
- Entity Framework Core: Object-Relational Mapping
- Clean Architecture: Project structure pattern
- DTOs: Data Transfer Objects for API communication
- Dependency Injection: Built-in IoC container
new_cms/
├── Application/ # Application layer
│ ├── DTOs/ # Data Transfer Objects
│ ├── Interfaces/ # Service interfaces
│ ├── Mappings/ # Object mappings
│ └── Services/ # Business logic services
├── Domain/ # Domain layer
│ ├── Entities/ # Core business entities
│ └── Interfaces/ # Domain interfaces
├── Infrastructure/ # Infrastructure layer
│ ├── Persistence/ # Database context
│ └── Repositories/ # Data access layer
├── WebApi/ # Presentation layer
│ └── Controllers/ # API controllers
└── wwwroot/ # Static files
└── uploads/ # File uploads
- .NET 6.0 or later
- SQL Server (LocalDB or full instance)
- Visual Studio 2022 or VS Code
-
Clone the repository
git clone https://github.com/resulozdemir/IstanbulUniversity-ContentManagementSystem.git cd IstanbulUniversity-ContentManagementSystem
-
Restore packages
dotnet restore
-
Update database connection string
- Open
appsettings.json
- Update the connection string to match your database setup
- Open
-
Run database migrations
dotnet ef database update
-
Run the application
dotnet run
-
Access the API
- API:
https://localhost:5001
- Swagger UI:
https://localhost:5001/swagger
- API:
The API provides comprehensive endpoints for:
- Pages: CRUD operations for web pages
- Content: Content management and editing
- Menus: Navigation menu management
- Sites: Multi-site configuration
- News: News article management
- Notices: Announcement system
- Templates: Page template management
- Components: Reusable page components
- Themes: Theme and styling management
- Uploads: File and image management
GET /api/pages/paged # Get paginated pages
GET /api/pages/active # Get active pages
GET /api/pages/{id} # Get page by ID
POST /api/pages # Create new page
PUT /api/pages/{id} # Update page
DELETE /api/pages/{id} # Delete page (soft delete)
Update your connection string in appsettings.json
:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=NewCmsDb;Trusted_Connection=true;"
}
}
File uploads are stored in wwwroot/uploads/
:
documents/
: Document filesimages/
: Image filestemp/
: Temporary uploads
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow Clean Architecture principles
- Use meaningful variable and method names
- Add XML documentation for public APIs
- Write unit tests for business logic
- Follow C# coding conventions
This project is developed for Istanbul University. All rights reserved.
- Resul Özdemir - Initial work - resulozdemir
For support and questions:
- Create an issue in this repository
- Contact the development team
Istanbul University - Content Management System - Building modern web solutions for academic institutions.