11 KiB
🎯 Navigation Management System - Complete Guide
What Is This?
You now have a professional-grade navigation management system that allows you to fully customize your website's navigation without touching any code. This is a game-changer for content management and future scalability.
Why Is This Important?
Before This System:
- ❌ Navigation was hardcoded in components
- ❌ Adding new menu items required code changes
- ❌ No dropdown menu support
- ❌ Social media links scattered across settings
- ❌ Difficult to reorder or hide items
- ❌ No way to manage navigation hierarchy
After This System:
- ✅ Fully dynamic navigation - add/edit/delete via admin panel
- ✅ Dropdown menus - unlimited nested items
- ✅ Drag-free reordering - simple up/down buttons
- ✅ Social media hub - manage all platforms in one place
- ✅ Future-ready - scalable for complex navigation needs
- ✅ No code required - admins can manage everything
What Can You Do?
1. Manage Navigation Items
- Add new menu items (internal pages, external links, or dropdowns)
- Edit existing items (change label, URL, visibility, order)
- Delete items you no longer need
- Reorder with up/down buttons (no drag-drop needed)
- Hide/Show without deleting data
- Create dropdowns with unlimited children
2. Manage Social Media
- Add social media profiles for 8+ platforms
- Reorder to prioritize important channels
- Toggle visibility to enable/disable platforms
- Auto-icons - platform icons render automatically
3. Navigation Types
Page Type
Links to your built-in pages:
- Home, About, Calendar, Matches, Players, etc.
- Auto-maps to correct URLs
- Example: "O klubu" →
/o-klubu
Internal Type
Custom URLs within your site:
/custom-page/special/section- Example: "Historie" →
/historie
External Type
Links to external websites:
- Opens in new tab (optional)
- Shows external link icon
- Example: "Vstupenky" →
https://tickets.com
Dropdown Type
Parent items with children:
- Hover to reveal submenu
- Organize related content
- Example: "Média" with children "Videa", "Fotogalerie"
How To Use It
Quick Start (5 Minutes)
Step 1: Run Migration
make migrate-up
This creates the database tables and seeds default navigation.
Step 2: Restart Application
# Backend
go run main.go
# Frontend (separate terminal)
cd frontend && npm start
Step 3: Access Admin Panel
- Login to your admin account
- Navigate to
/admin/navigace - You'll see two tabs: "Navigační menu" and "Sociální sítě"
Step 4: Start Customizing!
Example 1: Add External Link
1. Click "Přidat položku"
2. Label: "Fanshop"
3. Type: "Externí odkaz"
4. URL: "https://yourshop.com"
5. Target: "_blank" (new window)
6. Save
Example 2: Create Dropdown
1. Create parent:
- Label: "Média"
- Type: "dropdown"
2. Create children:
- Label: "Videa", Type: "page", Page: "videos"
- Label: "Fotogalerie", Type: "page", Page: "gallery"
3. Reorder as needed
Example 3: Add Social Media
1. Switch to "Sociální sítě" tab
2. Click "Přidat sociální síť"
3. Platform: "Facebook"
4. URL: "https://www.facebook.com/yourpage"
5. Save
System Architecture
Database Tables
navigation_items
- Stores all menu items
- Supports parent-child relationships
- Custom ordering with display_order
- Visibility toggles
- Multiple item types
social_links
- Stores social media profiles
- Platform-specific data
- Custom ordering
- Visibility controls
Backend (Go)
Models: /internal/models/navigation.go
- NavigationItem struct
- SocialLink struct
- Helper methods (GetURL, GetIconName)
Controllers: /internal/controllers/navigation_controller.go
- Full CRUD operations
- Reordering logic
- Public and admin endpoints
Routes: /internal/routes/routes.go
- Public:
/api/v1/navigation,/api/v1/social-links - Admin:
/api/v1/admin/navigation/*,/api/v1/admin/social-links/*
Frontend (React + TypeScript)
Service: /frontend/src/services/navigation.ts
- API client functions
- TypeScript interfaces
- Error handling
Admin Page: /frontend/src/pages/admin/NavigationAdminPage.tsx
- Full CRUD UI
- Tab-based interface
- Modal forms
- Real-time updates
Route: /frontend/src/App.tsx
- Added
/admin/navigaceroute - Protected with admin authentication
Features In Detail
1. Dynamic Navigation
The Navbar component automatically fetches and renders navigation from the API:
- Top-level items appear in horizontal menu
- Dropdown items show children on hover
- External links show icon indicator
- Active page is highlighted
- Mobile: All items in drawer menu
2. Social Media Integration
Social links automatically appear in the top bar:
- Platform icons render automatically
- Links open in new tabs
- Reorderable by priority
- Toggle visibility without deleting
3. Reordering System
Simple up/down buttons instead of drag-drop:
- Click ↑ to move item up
- Click ↓ to move item down
- Changes save immediately
- Visual feedback with toasts
- Transaction-safe (all-or-nothing updates)
4. Visibility Controls
Show/hide items without losing data:
- Hidden items appear grayed out in admin
- Not visible to public users
- Maintain order when hidden
- Easy to re-enable later
5. Dropdown Menus
Create hierarchical navigation:
- Set parent type to "dropdown"
- Add children with parent_id
- Hover to reveal on desktop
- Expandable sections on mobile
- Supports unlimited depth (though 1 level recommended)
Default Navigation Items
The system seeds these 12 items on first migration:
- Domů (Home) →
/ - O klubu (About) →
/o-klubu - Kalendář (Calendar) →
/kalendar - Zápasy (Matches) →
/zapasy - Aktivity (Activities) →
/aktivity - Hráči (Players) →
/hraci - Tabulky (Tables) →
/tabulky - Články (Blog) →
/blog - Videa (Videos) →
/videa - Fotogalerie (Gallery) →
/galerie - Sponzoři (Sponsors) →
/sponzori - Kontakt (Contact) →
/kontakt
You can modify, reorder, hide, or delete any of these!
API Reference
Public Endpoints
GET /api/v1/navigation
- Returns all visible navigation items with children
GET /api/v1/social-links
- Returns all visible social media links
Admin Endpoints (Authentication Required)
Navigation Items:
GET /api/v1/admin/navigation - Get all items (including hidden)
POST /api/v1/admin/navigation - Create new item
PUT /api/v1/admin/navigation/:id - Update item
DELETE /api/v1/admin/navigation/:id - Delete item
POST /api/v1/admin/navigation/reorder - Reorder multiple items
Social Links:
GET /api/v1/admin/social-links - Get all links (including hidden)
POST /api/v1/admin/social-links - Create new link
PUT /api/v1/admin/social-links/:id - Update link
DELETE /api/v1/admin/social-links/:id - Delete link
POST /api/v1/admin/social-links/reorder - Reorder multiple links
Best Practices
Navigation Organization
- Keep it simple: 8-12 top-level items max
- Group related items: Use dropdowns for content types
- Logical order: Most important items first
- Consistent naming: Clear, descriptive labels
Dropdown Menus
- One level deep: Avoid nested dropdowns
- 5-8 children max: Don't overwhelm users
- Related content: Group similar pages together
- Clear labels: Describe what's inside
Social Media
- Order by priority: Most used first
- 3-5 platforms: Don't clutter the UI
- Official URLs: Use verified profiles
- Keep updated: Remove inactive platforms
Mobile Considerations
- Touch-friendly: All items work on touch screens
- Short labels: Max 15 characters for mobile
- Test thoroughly: Check mobile drawer menu
- Performance: Lazy load if many items
Troubleshooting
Problem: Navigation not showing
Solution:
- Check visibility is ON
- Clear browser cache (Ctrl+Shift+R)
- Check console for API errors
- Verify backend is running
Problem: Can't access admin page
Solution:
- Verify you're logged in as admin
- Check URL:
/admin/navigace - Clear cookies and login again
- Check user role in database
Problem: Reordering not working
Solution:
- Check console for errors
- Verify API endpoint is accessible
- Try refreshing the page
- Check network tab for failed requests
Problem: Social icons not appearing
Solution:
- Check URL format (must start with https://)
- Verify platform name matches supported list
- Toggle visibility ON
- Clear browser cache
Documentation Files
Three comprehensive guides available:
-
NAVIGATION_SYSTEM.md
- Complete technical documentation
- All features explained
- Code examples
- API reference
-
NAVIGATION_IMPLEMENTATION_SUMMARY.md
- Implementation details
- Files created/modified
- Testing checklist
- Status updates
-
NAVIGATION_QUICK_START.md
- 5-minute quick start
- Common scenarios
- Pro tips
- Troubleshooting
Benefits Summary
For Admins
- ✅ No code knowledge required
- ✅ Real-time changes
- ✅ Easy reordering
- ✅ Visibility controls
- ✅ Dropdown support
For Users
- ✅ Better organized navigation
- ✅ Easier to find content
- ✅ Responsive on all devices
- ✅ Fast and smooth
- ✅ Accessible navigation
For Developers
- ✅ Clean API architecture
- ✅ Type-safe implementation
- ✅ Easy to extend
- ✅ Well documented
- ✅ Production ready
Success Metrics
After implementing this system, you'll see:
- Better UX: Organized, hierarchical navigation
- Flexibility: Change navigation anytime without code
- Scalability: Ready for future growth
- Time savings: No developer needed for nav changes
- Professionalism: Modern CMS-like experience
Next Steps
- ✅ Run migration - Create the database tables
- ✅ Access admin - Login and visit
/admin/navigace - ✅ Customize - Add, edit, reorder your navigation
- ✅ Add social media - Connect all your profiles
- ✅ Test thoroughly - Check desktop, mobile, all scenarios
- ✅ Train team - Show admins how to manage navigation
- ✅ Monitor - Watch for user feedback and usage
Support & Questions
Quick Links:
- Quick Start: See
NAVIGATION_QUICK_START.md - Full Docs: See
NAVIGATION_SYSTEM.md - Implementation: See
NAVIGATION_IMPLEMENTATION_SUMMARY.md - Code: Check comments in source files
Common Questions:
Q: Will this work with my existing navigation? A: Yes! The system is additive. Your current navigation still works.
Q: Can I import/export navigation? A: Not yet, but you can backup via database export.
Q: How many items can I add? A: Unlimited, but 8-12 top-level items recommended for UX.
Q: Does it work on mobile? A: Yes! Fully responsive with mobile drawer menu.
Q: Can I have multi-level dropdowns? A: One level recommended, but technically unlimited depth supported.
🎉 Congratulations!
You now have a professional navigation management system that:
- ✅ Scales with your needs
- ✅ Requires no coding
- ✅ Supports complex navigation
- ✅ Integrates social media
- ✅ Works on all devices
Your navigation is now future-ready! 🚀
Last Updated: October 10, 2025
Version: 1.0.0
Status: Production Ready ✅