# Copilot Instructions for Sky Art Shop ## Project Overview Dynamic e-commerce CMS built with ASP.NET Core MVC 8.0, MongoDB for content, and ASP.NET Core Identity for authentication. ## Completed Tasks - [x] ASP.NET Core MVC structure created - [x] MongoDB integration (Products, Portfolio, Blog, Pages, Settings, MenuItems) - [x] ASP.NET Core Identity + SQLite for authentication - [x] Admin panel with CRUD for all content types - [x] Public pages (Home, Shop, Portfolio, Blog, About, Contact) - [x] CKEditor 5 rich text editor (no API key required) - [x] Image upload service (wwwroot/uploads/images) - [x] Dynamic navigation via ViewComponent - [x] Seeding for default data (admin user, settings, categories, menus) - [x] Clean build with zero errors - [x] Application tested and running on http://localhost:5000 - [x] README documentation updated ## Architecture - **Backend**: ASP.NET Core 8.0 MVC - **Content DB**: MongoDB (connection string in appsettings.json) - **Auth DB**: SQLite + EF Core + Identity - **Admin Auth**: Role-based (Admin role) - **Views**: Razor + Bootstrap 5 (admin) + custom CSS (public) ## Key Files - `Program.cs`: Middleware, services, database initialization - `Models/DatabaseModels.cs`: MongoDB entity models - `Services/MongoDBService.cs`: Generic MongoDB CRUD service - `Data/ApplicationDbContext.cs`: EF Core Identity context - `Controllers/Admin*.cs`: Admin CRUD controllers ([Authorize(Roles="Admin")]) - `Controllers/*.cs`: Public controllers (Shop, Portfolio, Blog, About, Contact) - `Views/Shared/_Layout.cshtml`: Public layout with dynamic navigation - `Views/Shared/_AdminLayout.cshtml`: Admin dashboard layout - `ViewComponents/NavigationViewComponent.cs`: Dynamic menu rendering ## Running the Project ```powershell dotnet build # Build solution dotnet run # Start on http://localhost:5000 ``` ## Admin Access - URL: http://localhost:5000/admin/login - Default: admin@skyartshop.com / Admin123! (configure in appsettings.json) ## Future Development Guidelines - Use MongoDBService for all MongoDB operations - Admin controllers must use [Authorize(Roles="Admin")] - Slug generation: lowercase, replace spaces with hyphens - TempData["SuccessMessage"] / TempData["ErrorMessage"] for user feedback - Image uploads go to wwwroot/uploads/images with GUID filenames - All views use Razor syntax; avoid direct HTML files ## Optional Enhancements - Server-side validation (DataAnnotations) - Email service for contact form - Shopping cart/checkout - SEO meta tags - Centralized slug utility service