# Quick Reference - Admin Panel Usage Guide ## 🚀 Getting Started ### Login to Admin Panel ``` URL: http://localhost:5000/admin/login.html ``` ## 📊 Admin Sections Overview ### 1. **Dashboard** (`/admin/dashboard.html`) - View statistics (products, projects, blog posts, pages count) - Quick access tiles to all sections - **Features:** Live stats, quick navigation ### 2. **Homepage Editor** (`/admin/homepage.html`) - Configure homepage sections - Enable/disable hero, promotion, portfolio sections - Set titles, descriptions, CTAs - **Publishes to:** `/api/homepage/settings` ### 3. **Products** (`/admin/products.html`) - ✅ Create new products - ✅ Edit existing products - ✅ Delete products - ✅ Set active/inactive status - ✅ Mark as bestseller - **Publishes to:** `/api/products` (only active products) ### 4. **Portfolio** (`/admin/portfolio.html`) - ✅ Add portfolio projects - ✅ Edit projects - ✅ Delete projects - ✅ Set active/inactive status - ✅ Categorize projects - **Publishes to:** `/api/portfolio/projects` (only active projects) ### 5. **Blog** (`/admin/blog.html`) - ✅ Create blog posts - ✅ Edit posts - ✅ Delete posts - ✅ Publish/unpublish - ✅ Auto-generate slugs - ✅ SEO meta fields - **Publishes to:** `/api/blog/posts` (only published posts) ### 6. **Custom Pages** (`/admin/pages.html`) - ✅ Create custom pages - ✅ Edit page content - ✅ Delete pages - ✅ Set active/inactive - ✅ Custom slugs - ✅ SEO optimization - **Publishes to:** `/api/pages` (only active pages) ### 7. **Menu** (`/admin/menu.html`) - ✅ Add menu items - ✅ Edit menu items - ✅ Reorder via drag-and-drop - ✅ Show/hide items - ✅ Set custom icons - **Publishes to:** `/api/menu` (only visible items) ### 8. **Settings** (`/admin/settings.html`) - Configure site name, tagline - Set contact information - Timezone settings - Homepage display options - **Publishes to:** `/api/settings` ### 9. **Users** (`/admin/users.html`) - ✅ Create admin users - ✅ Edit user accounts - ✅ Change passwords - ✅ Activate/deactivate users - ✅ Assign roles (Cashier, Accountant, Admin, MasterAdmin) - View user permissions ## 🔄 Content Publishing Workflow ### Step-by-Step: Publishing a Product 1. **Login** → Dashboard → **Products** 2. Click **"Add New Product"** 3. Fill in details: - Name (required) - Description - Price (required) - Stock quantity - Category - Toggle **"Active"** = ON ✅ - Toggle **"Best Seller"** (optional) 4. Click **"Save & Publish"** 5. ✅ Product is now live on frontend at `/api/products` ### Step-by-Step: Publishing a Blog Post 1. **Login** → Dashboard → **Blog** 2. Click **"Create Blog Post"** 3. Fill in: - Title (auto-generates slug) - Slug (customizable) - Excerpt - Content - Meta title & description (SEO) - Toggle **"Published"** = ON ✅ 4. Click **"Save & Publish"** 5. ✅ Post appears at `/api/blog/posts` and `/api/blog/posts/:slug` ### Step-by-Step: Creating a Custom Page 1. **Login** → Dashboard → **Custom Pages** 2. Click **"Create Custom Page"** 3. Enter: - Title - Slug (URL-friendly name) - Content (full HTML supported) - Meta title & description - Toggle **"Active"** = ON ✅ 4. Click **"Save & Publish"** 5. ✅ Page accessible at `/api/pages/:slug` ## 🔐 Authentication & Session ### Session Details - **Duration:** 24 hours - **Storage:** PostgreSQL database - **Cookie Name:** `skyartshop.sid` - **Auto-logout:** After 24 hours of inactivity ### Troubleshooting Login Issues ```bash # Clear session data DELETE FROM session WHERE expire < NOW(); # Restart backend pm2 restart skyartshop # Clear browser cookies # In browser: DevTools → Application → Cookies → Clear ``` ## 📡 API Endpoints Reference ### Admin API (Requires Authentication) ``` POST /api/admin/login GET /api/admin/session POST /api/admin/logout GET /api/admin/dashboard/stats GET /api/admin/products POST /api/admin/products PUT /api/admin/products/:id DELETE /api/admin/products/:id GET /api/admin/portfolio/projects POST /api/admin/portfolio/projects PUT /api/admin/portfolio/projects/:id DELETE /api/admin/portfolio/projects/:id GET /api/admin/blog POST /api/admin/blog PUT /api/admin/blog/:id DELETE /api/admin/blog/:id GET /api/admin/pages POST /api/admin/pages PUT /api/admin/pages/:id DELETE /api/admin/pages/:id GET /api/admin/menu POST /api/admin/menu GET /api/admin/settings POST /api/admin/settings GET /api/admin/homepage/settings POST /api/admin/homepage/settings ``` ### Public API (No Authentication) ``` GET /api/products - Active products GET /api/products/featured - Featured products GET /api/products/:id - Single product GET /api/portfolio/projects - Active portfolio projects GET /api/blog/posts - Published blog posts GET /api/blog/posts/:slug - Single blog post GET /api/pages - Active custom pages GET /api/pages/:slug - Single custom page GET /api/menu - Visible menu items GET /api/homepage/settings - Homepage configuration GET /api/settings - Public site settings ``` ## 🎨 Publishing to Frontend ### How Content Flows ``` Admin Panel → Database (with status flag) → Public API → Frontend Display ``` ### Status Flags - **Products:** `isactive = true` - **Portfolio:** `isactive = true` - **Blog:** `ispublished = true` - **Pages:** `isactive = true` - **Menu:** `visible = true` ### Frontend Integration Example ```javascript // Fetch products on shop page fetch('/api/products') .then(res => res.json()) .then(data => { // data.products contains all active products renderProducts(data.products); }); // Fetch blog posts fetch('/api/blog/posts') .then(res => res.json()) .then(data => { // data.posts contains all published posts renderBlogPosts(data.posts); }); ``` ## 🛠️ Common Tasks ### Adding a New Product ``` 1. Products → Add New Product 2. Fill: Name, Description, Price, Stock 3. Toggle Active = ON 4. Save & Publish ✅ Appears on /api/products ``` ### Creating Blog Content ``` 1. Blog → Create Blog Post 2. Enter: Title, Content, Excerpt 3. Toggle Published = ON 4. Save & Publish ✅ Appears on /api/blog/posts ``` ### Building Navigation Menu ``` 1. Menu → Add Menu Item 2. Enter: Label, URL, Icon (optional) 3. Toggle Visible = ON 4. Drag to reorder 5. Save Order ✅ Appears on /api/menu ``` ### Configuring Homepage ``` 1. Homepage Editor 2. Enable/disable sections 3. Set titles, descriptions, CTAs 4. Upload images (if applicable) 5. Save Changes ✅ Updates /api/homepage/settings ``` ## 📋 Testing Checklist After making changes, verify: - [ ] Content appears in admin panel list - [ ] Content is marked as active/published - [ ] Public API returns the content (`curl http://localhost:5000/api/...`) - [ ] Frontend displays the new content - [ ] Session persists when navigating between sections - [ ] No console errors in browser DevTools ## 🚨 Troubleshooting ### "Getting Logged Out When Clicking Navigation" ✅ **Fixed!** All pages now use shared authentication (auth.js) ### "Content Not Appearing on Frontend" Check: 1. Is content marked as Active/Published in admin? 2. Test public API: `curl http://localhost:5000/api/products` 3. Check browser console for errors 4. Verify database record has `isactive=true` or `ispublished=true` ### "Changes Not Saving" 1. Check browser console for errors 2. Verify session is active (look for 401 errors) 3. Try logging out and back in 4. Check backend logs: `pm2 logs skyartshop` ### "API Returns Empty Array" Normal if no content has been created yet. Add content via admin panel. ## 📞 Support Commands ```bash # Restart backend pm2 restart skyartshop # View backend logs pm2 logs skyartshop # Check backend status pm2 status # Test all endpoints cd /media/pts/Website/SkyArtShop/backend ./test-navigation.sh # Clear sessions psql -d skyartshop -c "DELETE FROM session WHERE expire < NOW();" ``` --- **Last Updated:** December 13, 2025 **Version:** 1.0.0 **Status:** ✅ Fully Operational