mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,427 @@
|
||||
# 🎯 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 ✅
|
||||
Reference in New Issue
Block a user