mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
428 lines
11 KiB
Markdown
428 lines
11 KiB
Markdown
# 🎯 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
|
|
```bash
|
|
make migrate-up
|
|
```
|
|
This creates the database tables and seeds default navigation.
|
|
|
|
#### Step 2: Restart Application
|
|
```bash
|
|
# Backend
|
|
go run main.go
|
|
|
|
# Frontend (separate terminal)
|
|
cd frontend && npm start
|
|
```
|
|
|
|
#### Step 3: Access Admin Panel
|
|
1. Login to your admin account
|
|
2. Navigate to `/admin/navigace`
|
|
3. 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**
|
|
```sql
|
|
- Stores all menu items
|
|
- Supports parent-child relationships
|
|
- Custom ordering with display_order
|
|
- Visibility toggles
|
|
- Multiple item types
|
|
```
|
|
|
|
**social_links**
|
|
```sql
|
|
- 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/navigace` route
|
|
- 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:
|
|
1. Domů (Home) → `/`
|
|
2. O klubu (About) → `/o-klubu`
|
|
3. Kalendář (Calendar) → `/kalendar`
|
|
4. Zápasy (Matches) → `/zapasy`
|
|
5. Aktivity (Activities) → `/aktivity`
|
|
6. Hráči (Players) → `/hraci`
|
|
7. Tabulky (Tables) → `/tabulky`
|
|
8. Články (Blog) → `/blog`
|
|
9. Videa (Videos) → `/videa`
|
|
10. Fotogalerie (Gallery) → `/galerie`
|
|
11. Sponzoři (Sponsors) → `/sponzori`
|
|
12. 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:**
|
|
1. Check visibility is ON
|
|
2. Clear browser cache (Ctrl+Shift+R)
|
|
3. Check console for API errors
|
|
4. Verify backend is running
|
|
|
|
### Problem: Can't access admin page
|
|
**Solution:**
|
|
1. Verify you're logged in as admin
|
|
2. Check URL: `/admin/navigace`
|
|
3. Clear cookies and login again
|
|
4. Check user role in database
|
|
|
|
### Problem: Reordering not working
|
|
**Solution:**
|
|
1. Check console for errors
|
|
2. Verify API endpoint is accessible
|
|
3. Try refreshing the page
|
|
4. Check network tab for failed requests
|
|
|
|
### Problem: Social icons not appearing
|
|
**Solution:**
|
|
1. Check URL format (must start with https://)
|
|
2. Verify platform name matches supported list
|
|
3. Toggle visibility ON
|
|
4. Clear browser cache
|
|
|
|
## Documentation Files
|
|
|
|
Three comprehensive guides available:
|
|
|
|
1. **NAVIGATION_SYSTEM.md**
|
|
- Complete technical documentation
|
|
- All features explained
|
|
- Code examples
|
|
- API reference
|
|
|
|
2. **NAVIGATION_IMPLEMENTATION_SUMMARY.md**
|
|
- Implementation details
|
|
- Files created/modified
|
|
- Testing checklist
|
|
- Status updates
|
|
|
|
3. **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
|
|
|
|
1. ✅ **Run migration** - Create the database tables
|
|
2. ✅ **Access admin** - Login and visit `/admin/navigace`
|
|
3. ✅ **Customize** - Add, edit, reorder your navigation
|
|
4. ✅ **Add social media** - Connect all your profiles
|
|
5. ✅ **Test thoroughly** - Check desktop, mobile, all scenarios
|
|
6. ✅ **Train team** - Show admins how to manage navigation
|
|
7. ✅ **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 ✅
|