Files
MyClub/DOCS/README_NAVIGATION.md
T
Tomáš Dvořák 12cba639b9 upload
2025-10-16 13:32:05 +02:00

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

  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

- 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/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 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