# Navigation Management - Quick Start Guide ## 🚀 Get Started in 5 Minutes ### Step 1: Run the Migration (30 seconds) ```bash # From project root directory make migrate-up # Or if you don't have make: cd database/migrations goose postgres "your-connection-string" up ``` **What this does:** - Creates `navigation_items` table - Creates `social_links` table - Seeds 12 default navigation items - Adds settings columns for navigation ### Step 2: Restart Your Application (1 minute) ```bash # Terminal 1 - Backend go run main.go # Terminal 2 - Frontend cd frontend npm start ``` ### Step 3: Access Admin Panel (30 seconds) 1. Open browser to `http://localhost:3000` 2. Login as admin 3. Navigate to `/admin/navigace` or click "Správa navigace" in admin sidebar ### Step 4: Customize Your Navigation (3 minutes) #### Quick Tasks: **A. Reorder Items** - Use ↑ ↓ buttons to move items up or down - Changes save automatically **B. Hide Unwanted Items** - Click edit icon (✏️) on any item - Toggle "Viditelné" switch off - Click "Uložit" **C. Add Social Media** 1. Switch to "Sociální sítě" tab 2. Click "Přidat sociální síť" 3. Select platform (e.g., Facebook) 4. Paste your profile URL 5. Click "Uložit" **D. Create Custom Link** 1. Click "Přidat položku" 2. Enter label (e.g., "Fanshop") 3. Select Type: "Externí odkaz" 4. Enter URL (e.g., `https://shop.example.com`) 5. Select target: "Nové okno" (_blank) 6. Click "Uložit" **E. Create Dropdown Menu** 1. Create parent: Type "Dropdown", Label "Média" 2. Create children: - Type "Stránka", Page "videos", Label "Videa" - Type "Stránka", Page "gallery", Label "Fotogalerie" - Type "Externí odkaz", URL to YouTube channel 3. Children appear as dropdown on hover ## 📋 Common Scenarios ### Scenario 1: Add Fanshop Link ``` Label: Fanshop Type: Externí odkaz URL: https://yourshop.com Target: _blank (Nové okno) Visible: Yes ``` ### Scenario 2: Hide "Tabulky" Temporarily ``` 1. Find "Tabulky" in list 2. Click edit icon 3. Toggle "Viditelné" to OFF 4. Save ``` ### Scenario 3: Add All Social Media ``` Facebook: - Platform: facebook - URL: https://www.facebook.com/yourpage Instagram: - Platform: instagram - URL: https://www.instagram.com/yourhandle YouTube: - Platform: youtube - URL: https://www.youtube.com/@yourchannel ``` ### Scenario 4: Create "O nás" Dropdown ``` Parent Item: - Label: O nás - Type: dropdown - Visible: Yes Child 1: - Label: O klubu - Type: page - Page Type: about - Parent: (select "O nás") Child 2: - Label: Historie - Type: internal - URL: /historie - Parent: (select "O nás") Child 3: - Label: Kontakt - Type: page - Page Type: contact - Parent: (select "O nás") ``` ## 🎯 Navigation Types Explained ### Page Type (Best for System Pages) **Use when:** Linking to built-in pages like Home, Calendar, Matches **Example:** - Label: "Zápasy" - Type: page - Page Type: matches - ✅ Auto-maps to `/zapasy` ### Internal Type (For Custom Pages) **Use when:** Linking to custom pages you created **Example:** - Label: "Historie" - Type: internal - URL: /historie - ✅ Stays within your app ### External Type (For Outside Links) **Use when:** Linking to external websites **Example:** - Label: "Vstupenky" - Type: external - URL: https://tickets.example.com - Target: _blank - ✅ Opens in new tab ### Dropdown Type (For Nested Menus) **Use when:** Grouping related links **Example:** - Label: "Média" - Type: dropdown - ✅ Shows children on hover ## 🎨 Page Type Options Reference | Page Type | Label | URL | |-----------|-------|-----| | home | Domů | / | | about | O klubu | /o-klubu | | calendar | Kalendář | /kalendar | | matches | Zápasy | /zapasy | | activities | Aktivity | /aktivity | | players | Hráči | /hraci | | tables | Tabulky | /tabulky | | blog | Články | /blog | | videos | Videa | /videa | | gallery | Fotogalerie | /galerie | | sponsors | Sponzoři | /sponzori | | contact | Kontakt | /kontakt | | search | Hledat | /hledat | ## 🌐 Social Media Platforms ### Supported Platforms: - ✅ Facebook - ✅ Instagram - ✅ YouTube - ✅ Twitter - ✅ TikTok - ✅ LinkedIn - ✅ Discord - ✅ Twitch ### URL Format Tips: ``` ✅ Good: https://www.facebook.com/yourpage https://www.instagram.com/yourhandle https://www.youtube.com/@yourchannel ✅ Also works: facebook.com/yourpage @yourhandle yourhandle ❌ Avoid: facebook.com (missing page) www.facebook.com (missing protocol) ``` ## 🔧 Pro Tips ### 1. Optimal Navigation Size - **Desktop**: 8-12 items (including dropdowns) - **Mobile**: Consider grouping with dropdowns if >10 items - **Dropdown children**: Max 5-8 per parent ### 2. Order Best Practices ``` Recommended order: 1. Domů (Home) - Always first 2. O klubu (About) 3. Kalendář/Zápasy (Events) 4. Content (Články, Videa, Galerie) 5. Team (Hráči, Tabulky) 6. Support (Sponzoři, Kontakt) ``` ### 3. Social Media Order ``` By usage: 1. Facebook (most popular in Czech Republic) 2. Instagram (visual content) 3. YouTube (video content) 4. Twitter/TikTok (engagement) ``` ### 4. Mobile Menu Considerations - All items show in mobile drawer - Dropdowns become expandable sections - Social links appear at bottom - Keep labels short (max 15 characters) ### 5. External Links - Always use https:// for security - Set target="_blank" to open in new window - Consider adding "Fanshop", "Vstupenky", "Partner sites" ## 🐛 Troubleshooting ### Problem: Changes Not Visible **Solution:** 1. Hard refresh browser (Ctrl+Shift+R) 2. Check "Viditelné" toggle is ON 3. Verify backend is running 4. Check browser console for errors ### Problem: Can't Access Admin Panel **Solution:** 1. Verify you're logged in as admin 2. Check URL is correct: `/admin/navigace` 3. Clear browser cache and cookies 4. Try different browser ### Problem: Social Icons Not Showing **Solution:** 1. Verify URL format is correct 2. Check visibility toggle is ON 3. Make sure platform name matches list 4. Clear frontend cache ### Problem: Dropdown Not Working **Solution:** 1. Verify parent type is "dropdown" 2. Check children have parent_id set correctly 3. Ensure both parent and children are visible 4. Test hover behavior (not click on desktop) ### Problem: Migration Error **Solution:** ```bash # Check if tables already exist psql -d your_database -c "\dt navigation*" # If they exist, you can skip or: # 1. Drop tables manually # 2. Run migration again # Or rollback and re-run: goose postgres "connection-string" down goose postgres "connection-string" up ``` ## 📊 Testing Checklist After setup, verify these work: - [ ] Admin page loads at `/admin/navigace` - [ ] Can create new navigation item - [ ] Can edit existing item - [ ] Can delete item (shows confirmation) - [ ] Can reorder with up/down buttons - [ ] Can toggle visibility - [ ] Navigation appears on frontend - [ ] Dropdowns work on hover - [ ] Mobile menu works properly - [ ] Social links show in top bar - [ ] External links open in new tab - [ ] Active page is highlighted ## 🎓 Advanced Features ### Custom CSS Classes Add custom styling to specific items: ``` 1. Edit navigation item 2. Add CSS class: "nav-highlighted" 3. Create CSS in your theme: .nav-highlighted { background: var(--club-primary); color: white; font-weight: bold; } ``` ### Authentication-Based Navigation Show items only to logged-in users: ``` 1. Edit navigation item 2. Toggle "requires_auth" to true 3. Item only shows when user is logged in ``` ### Admin-Only Items Show items only to admins: ``` 1. Edit navigation item 2. Toggle "requires_admin" to true 3. Item only shows for admin users ``` ## 📞 Need Help? ### Resources: 1. **Full Documentation**: See `NAVIGATION_SYSTEM.md` 2. **Implementation Details**: See `NAVIGATION_IMPLEMENTATION_SUMMARY.md` 3. **API Reference**: Check controller comments in code 4. **Code Examples**: Look at `NavigationAdminPage.tsx` ### Common Questions: **Q: Can I have multi-level dropdowns?** A: Currently supports one level (parent → children). Multi-level coming in future update. **Q: How many navigation items can I have?** A: Unlimited, but 8-12 is optimal for UX. **Q: Can I import/export navigation?** A: Not yet, but you can backup via database dump. **Q: Will this work with existing navigation?** A: Yes! Existing Navbar component already supports all features. The old settings-based custom_nav is still compatible. **Q: Can I preview before publishing?** A: Use visibility toggle to test. Hidden items are only visible to admins in the list. ## ✨ Success! You're now ready to manage your navigation like a pro! 🎉 **What you can do:** - ✅ Unlimited custom navigation items - ✅ Dropdown menus for better organization - ✅ Social media integration - ✅ Reorder anything with a click - ✅ Show/hide items dynamically - ✅ Mix internal and external links - ✅ Mobile-responsive automatically **Next steps:** 1. Customize your navigation structure 2. Add your social media profiles 3. Test on mobile devices 4. Share feedback! Happy navigating! 🚀