334 lines
8.8 KiB
Markdown
334 lines
8.8 KiB
Markdown
|
|
# 🎨 Sky Art Shop - Complete CMS Integration
|
||
|
|
|
||
|
|
## 🎉 What's Been Completed
|
||
|
|
|
||
|
|
Your Sky Art Shop now has a **full backend CMS** (Admin) connected to your **static frontend** (shop.html, portfolio.html, blog.html, etc.).
|
||
|
|
|
||
|
|
### ✅ Backend (Admin Folder)
|
||
|
|
|
||
|
|
- **ASP.NET Core 8.0** MVC application
|
||
|
|
- **MongoDB** database for all content
|
||
|
|
- **Authentication** (cookie-based, admin login)
|
||
|
|
- **CRUD Operations** for:
|
||
|
|
- Products
|
||
|
|
- Portfolio Projects
|
||
|
|
- Blog Posts
|
||
|
|
- Pages
|
||
|
|
- Categories
|
||
|
|
- Site Settings
|
||
|
|
- **Image Upload** service with validation
|
||
|
|
- **Public Read-Only APIs** with CORS enabled
|
||
|
|
- **Static File Serving** for uploaded images
|
||
|
|
|
||
|
|
### ✅ Frontend Integration Files Created
|
||
|
|
|
||
|
|
Located in `Sky_Art_Shop/` folder:
|
||
|
|
|
||
|
|
```
|
||
|
|
js/
|
||
|
|
├── api-integration.js # Core API functions
|
||
|
|
├── shop-page.js # Products integration
|
||
|
|
├── portfolio-page.js # Projects integration
|
||
|
|
├── blog-page.js # Blog integration
|
||
|
|
├── index-page.js # Home page integration
|
||
|
|
└── about-page.js # About page integration
|
||
|
|
|
||
|
|
css/
|
||
|
|
└── api-styles.css # Styling for cards & grids
|
||
|
|
|
||
|
|
Documentation/
|
||
|
|
├── INTEGRATION_GUIDE.md # How to wire up each page
|
||
|
|
├── IMAGE_FIX_GUIDE.md # Fix for images not showing
|
||
|
|
└── test-api.html # Test page to verify API
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Quick Start (3 Steps)
|
||
|
|
|
||
|
|
### 1. Start the Backend
|
||
|
|
|
||
|
|
```powershell
|
||
|
|
cd "e:\Documents\Website Projects\Sky_Art_Shop\Admin"
|
||
|
|
dotnet run --launch-profile https
|
||
|
|
```
|
||
|
|
|
||
|
|
Backend runs on: **<https://localhost:5001>**
|
||
|
|
|
||
|
|
### 2. Fix Missing Images
|
||
|
|
|
||
|
|
Your products exist but don't have images yet:
|
||
|
|
|
||
|
|
1. Open: <https://localhost:5001/admin/products>
|
||
|
|
2. Click **Edit** on each product
|
||
|
|
3. Upload a **Main Image**
|
||
|
|
4. Click **Save**
|
||
|
|
|
||
|
|
Images will be stored in `Admin/wwwroot/uploads/products/`
|
||
|
|
|
||
|
|
### 3. Integrate Static Pages
|
||
|
|
|
||
|
|
Add these scripts to each HTML file (see `INTEGRATION_GUIDE.md` for details):
|
||
|
|
|
||
|
|
**shop.html**:
|
||
|
|
|
||
|
|
```html
|
||
|
|
<link rel="stylesheet" href="css/api-styles.css">
|
||
|
|
<script src="js/api-integration.js"></script>
|
||
|
|
<script src="js/shop-page.js"></script>
|
||
|
|
```
|
||
|
|
|
||
|
|
**portfolio.html**:
|
||
|
|
|
||
|
|
```html
|
||
|
|
<link rel="stylesheet" href="css/api-styles.css">
|
||
|
|
<script src="js/api-integration.js"></script>
|
||
|
|
<script src="js/portfolio-page.js"></script>
|
||
|
|
```
|
||
|
|
|
||
|
|
**blog.html**:
|
||
|
|
|
||
|
|
```html
|
||
|
|
<link rel="stylesheet" href="css/api-styles.css">
|
||
|
|
<script src="js/api-integration.js"></script>
|
||
|
|
<script src="js/blog-page.js"></script>
|
||
|
|
```
|
||
|
|
|
||
|
|
Add container divs where content should render:
|
||
|
|
|
||
|
|
```html
|
||
|
|
<div id="productsContainer"></div>
|
||
|
|
<div id="projectsContainer"></div>
|
||
|
|
<div id="blogContainer"></div>
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🧪 Testing
|
||
|
|
|
||
|
|
### Test API Connection
|
||
|
|
|
||
|
|
Open: `file:///E:/Documents/Website%20Projects/Sky_Art_Shop/test-api.html`
|
||
|
|
|
||
|
|
This page will:
|
||
|
|
|
||
|
|
- ✅ Test backend connection
|
||
|
|
- ✅ Load products/projects/blog from API
|
||
|
|
- ✅ Show image URLs and verify they load
|
||
|
|
- ✅ Display JSON responses for debugging
|
||
|
|
|
||
|
|
### Test Your Static Site
|
||
|
|
|
||
|
|
After integration:
|
||
|
|
|
||
|
|
1. Open `shop.html` in browser
|
||
|
|
2. Products should render with images from API
|
||
|
|
3. Open DevTools Console (F12)
|
||
|
|
4. Should see: `"Loaded products: X"`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 How It Works
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────┐
|
||
|
|
│ Static HTML Files │
|
||
|
|
│ (shop.html, etc.) │
|
||
|
|
│ │
|
||
|
|
│ Uses JavaScript to │
|
||
|
|
│ fetch data ↓ │
|
||
|
|
└─────────────────────┘
|
||
|
|
↓
|
||
|
|
┌─────────────────────┐
|
||
|
|
│ Public REST API │
|
||
|
|
│ /api/products │
|
||
|
|
│ /api/projects │
|
||
|
|
│ /api/blog │
|
||
|
|
│ │
|
||
|
|
│ Returns JSON ↓ │
|
||
|
|
└─────────────────────┘
|
||
|
|
↓
|
||
|
|
┌─────────────────────┐
|
||
|
|
│ MongoDB Database │
|
||
|
|
│ SkyArtShopCMS │
|
||
|
|
│ │
|
||
|
|
│ Collections: │
|
||
|
|
│ - Products │
|
||
|
|
│ - Projects │
|
||
|
|
│ - BlogPosts │
|
||
|
|
│ - Pages │
|
||
|
|
└─────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
**Admin edits content** → **MongoDB updates** → **Static site fetches new data** → **Users see changes**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📋 API Endpoints
|
||
|
|
|
||
|
|
| Endpoint | Method | Description |
|
||
|
|
|----------|--------|-------------|
|
||
|
|
| `/api/products` | GET | All products |
|
||
|
|
| `/api/products/{id}` | GET | Single product |
|
||
|
|
| `/api/projects` | GET | Portfolio projects |
|
||
|
|
| `/api/projects/{id}` | GET | Single project |
|
||
|
|
| `/api/blog` | GET | Blog posts |
|
||
|
|
| `/api/blog/{id}` | GET | Single post |
|
||
|
|
| `/api/pages/{slug}` | GET | Page by slug (e.g., "about") |
|
||
|
|
| `/api/categories` | GET | All categories |
|
||
|
|
| `/api/settings` | GET | Site settings |
|
||
|
|
| `/uploads/products/*` | GET | Product images |
|
||
|
|
| `/uploads/projects/*` | GET | Project images |
|
||
|
|
| `/uploads/blog/*` | GET | Blog images |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎨 Customization
|
||
|
|
|
||
|
|
### Change API URL
|
||
|
|
|
||
|
|
Edit `js/api-integration.js`:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
const API_BASE = 'https://your-domain.com'; // Change from localhost
|
||
|
|
```
|
||
|
|
|
||
|
|
### Customize Card Design
|
||
|
|
|
||
|
|
Edit `css/api-styles.css` to match your site's look:
|
||
|
|
|
||
|
|
- Colors, fonts, spacing
|
||
|
|
- Grid layouts (columns, gaps)
|
||
|
|
- Hover effects
|
||
|
|
|
||
|
|
### Custom Rendering
|
||
|
|
|
||
|
|
Edit `js/api-integration.js` functions like `loadProducts()` to change HTML structure:
|
||
|
|
|
||
|
|
```javascript
|
||
|
|
return `
|
||
|
|
<div class="my-custom-card">
|
||
|
|
<img src="${imgSrc}">
|
||
|
|
<h3>${product.title}</h3>
|
||
|
|
<button>Buy Now</button>
|
||
|
|
</div>`;
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🛠️ Admin Features
|
||
|
|
|
||
|
|
Access at: **<https://localhost:5001/admin>**
|
||
|
|
|
||
|
|
Default credentials (change in Admin → Settings):
|
||
|
|
|
||
|
|
- Username: `admin`
|
||
|
|
- Password: `admin123`
|
||
|
|
|
||
|
|
### Admin Capabilities
|
||
|
|
|
||
|
|
- ✅ Create/Edit/Delete Products
|
||
|
|
- ✅ Upload product images (main + gallery)
|
||
|
|
- ✅ Create/Edit/Delete Portfolio Projects
|
||
|
|
- ✅ Upload project images (cover + multiple)
|
||
|
|
- ✅ Create/Edit/Delete Blog Posts
|
||
|
|
- ✅ Upload featured images for blog
|
||
|
|
- ✅ Rich text editing (TinyMCE)
|
||
|
|
- ✅ Manage Pages & Categories
|
||
|
|
- ✅ Site Settings (title, description, etc.)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🐛 Troubleshooting
|
||
|
|
|
||
|
|
### Images Not Showing?
|
||
|
|
|
||
|
|
**Problem**: Products render but no images appear.
|
||
|
|
|
||
|
|
**Solution**: See `IMAGE_FIX_GUIDE.md`
|
||
|
|
|
||
|
|
1. Edit products in admin
|
||
|
|
2. Re-upload images
|
||
|
|
3. Verify files in `Admin/wwwroot/uploads/products/`
|
||
|
|
|
||
|
|
### "Cannot reach backend" Error?
|
||
|
|
|
||
|
|
**Problem**: Static site can't call API.
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
|
||
|
|
1. Ensure backend is running: `dotnet run --launch-profile https`
|
||
|
|
2. Check `API_BASE` in `api-integration.js` matches (<https://localhost:5001>)
|
||
|
|
3. CORS is already enabled
|
||
|
|
|
||
|
|
### Blank Page?
|
||
|
|
|
||
|
|
**Problem**: HTML page loads but no content.
|
||
|
|
|
||
|
|
**Solution**:
|
||
|
|
|
||
|
|
1. Open DevTools Console (F12)
|
||
|
|
2. Check for JavaScript errors
|
||
|
|
3. Ensure container divs exist (`<div id="productsContainer"></div>`)
|
||
|
|
4. Verify scripts load in correct order (api-integration.js first)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📚 Documentation Files
|
||
|
|
|
||
|
|
| File | Purpose |
|
||
|
|
|------|---------|
|
||
|
|
| `INTEGRATION_GUIDE.md` | Step-by-step integration for each page |
|
||
|
|
| `IMAGE_FIX_GUIDE.md` | How to fix missing images issue |
|
||
|
|
| `test-api.html` | Test page to verify API & images |
|
||
|
|
| `CMS_COMPLETE_GUIDE.md` | This file - complete overview |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ Next Steps
|
||
|
|
|
||
|
|
1. **[REQUIRED]** Upload images to products via Admin
|
||
|
|
2. **[REQUIRED]** Add script tags to HTML pages
|
||
|
|
3. **[OPTIONAL]** Customize styles in `api-styles.css`
|
||
|
|
4. **[OPTIONAL]** Add more products/projects/blog posts via Admin
|
||
|
|
5. **[OPTIONAL]** Deploy backend to a real server (Azure, AWS, etc.)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 Benefits
|
||
|
|
|
||
|
|
✅ **Client-Friendly**: Non-technical users can update content without touching code
|
||
|
|
✅ **Centralized**: All content managed in one admin panel
|
||
|
|
✅ **Flexible**: Static site can be hosted anywhere (GitHub Pages, Netlify, etc.)
|
||
|
|
✅ **Modern Stack**: ASP.NET Core + MongoDB + REST API
|
||
|
|
✅ **Image Management**: Upload, store, and serve images automatically
|
||
|
|
✅ **Rich Content**: TinyMCE editor for formatted text
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 Production Deployment (Future)
|
||
|
|
|
||
|
|
To deploy to production:
|
||
|
|
|
||
|
|
1. **Backend**: Host Admin on Azure, AWS, or VPS
|
||
|
|
2. **Database**: Use MongoDB Atlas (cloud) or self-hosted
|
||
|
|
3. **Update API_BASE**: Change localhost to your domain
|
||
|
|
4. **CORS**: Update policy to allow your domain only
|
||
|
|
5. **HTTPS**: Use Let's Encrypt or cloud provider SSL
|
||
|
|
6. **Frontend**: Host static files on CDN/GitHub Pages
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📞 Support
|
||
|
|
|
||
|
|
If you encounter issues:
|
||
|
|
|
||
|
|
1. Check `test-api.html` to diagnose the problem
|
||
|
|
2. Review browser DevTools Console (F12)
|
||
|
|
3. Check backend logs in terminal
|
||
|
|
4. Refer to troubleshooting guides
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**Congratulations!** 🎉 Your Sky Art Shop is now a fully functional CMS-powered website. Your client can edit everything via the Admin panel, and changes will appear instantly on the static site.
|