mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
202 lines
5.2 KiB
Markdown
202 lines
5.2 KiB
Markdown
# Frontend 404 Errors - Missing Static Files
|
|
|
|
**Date:** October 21, 2025
|
|
**Status:** ⚠️ Non-Critical (Cosmetic Only)
|
|
|
|
---
|
|
|
|
## 🔍 Problem Summary
|
|
|
|
The frontend Nginx logs show 404 errors for missing image files. **These errors don't affect functionality** - they just mean placeholder/default images aren't showing up.
|
|
|
|
### Missing Files:
|
|
1. `/images/club-logo.png` - Club logo
|
|
2. `/images/club-opponent.png` - Opponent team logo placeholder
|
|
3. `/images/news/placeholder.jpg` - News article placeholder
|
|
4. `/dist/img/logo-club-empty.svg` - Empty club logo SVG
|
|
|
|
---
|
|
|
|
## 🎯 Root Cause
|
|
|
|
These files are requested by the React frontend but:
|
|
- **Not included in the Docker build** (frontend/public/ directory content gets built into /usr/share/nginx/html)
|
|
- **Should come from backend uploads** (dynamic content) OR
|
|
- **Should have fallback placeholders** in the frontend build
|
|
|
|
---
|
|
|
|
## ✅ Solution Applied
|
|
|
|
Created placeholder files in `frontend/public/` directory:
|
|
|
|
```bash
|
|
frontend/public/
|
|
├── images/
|
|
│ ├── club-logo.png (empty - to be replaced)
|
|
│ ├── club-logo-placeholder.svg ✅ Created
|
|
│ ├── club-opponent.svg ✅ Created
|
|
│ └── news/
|
|
│ ├── placeholder.jpg (empty - to be replaced)
|
|
│ └── placeholder.svg ✅ Created
|
|
└── dist/
|
|
└── img/
|
|
└── logo-club-empty.svg ✅ Copied from /static
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 Next Steps
|
|
|
|
### 1. **Rebuild Frontend Container** (Required to apply fix)
|
|
|
|
```bash
|
|
cd /home/tdvorak/Desktop/PROG+HTML/Fotbal/fotbal-club
|
|
|
|
# Rebuild with new placeholder files
|
|
docker-compose build frontend
|
|
|
|
# Restart to apply changes
|
|
docker-compose restart frontend
|
|
|
|
# Clear browser cache
|
|
# Ctrl+Shift+R or Cmd+Shift+R
|
|
```
|
|
|
|
### 2. **Upload Real Club Images** (Optional - via Admin Panel)
|
|
|
|
Once the system is running, upload proper images through:
|
|
- `/admin/nastaveni` - Club settings (logo upload)
|
|
- Backend will serve them via `/uploads/` directory
|
|
|
|
### 3. **Verify Fix**
|
|
|
|
Check the frontend logs after rebuild:
|
|
```bash
|
|
docker logs myclub-frontend --tail 50 | grep "404"
|
|
```
|
|
|
|
Should see **no more 404 errors** for these image paths.
|
|
|
|
---
|
|
|
|
## 📝 Alternative: Serve Images from Backend
|
|
|
|
Instead of including static placeholders in frontend, you could:
|
|
|
|
### Option A: Proxy `/images/` to Backend
|
|
|
|
Edit `frontend/nginx.conf` to add:
|
|
|
|
```nginx
|
|
# Add before the main location / block:
|
|
location /images/ {
|
|
proxy_pass http://backend:8080/uploads/;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
# Fallback to local if backend doesn't have it
|
|
error_page 404 = @images_fallback;
|
|
}
|
|
|
|
location @images_fallback {
|
|
root /usr/share/nginx/html;
|
|
try_files $uri /images/placeholder.svg =404;
|
|
}
|
|
```
|
|
|
|
### Option B: Backend Serves Default Images
|
|
|
|
Ensure backend has an endpoint:
|
|
```go
|
|
// In backend routes
|
|
router.GET("/uploads/images/:filename", serveImageWithFallback)
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 Nginx Warnings (Also in logs)
|
|
|
|
These warnings are **harmless** and can be ignored:
|
|
|
|
```nginx
|
|
[warn] the "user" directive makes sense only if the master process runs with super-user privileges
|
|
[warn] duplicate MIME type "text/html"
|
|
```
|
|
|
|
**Why they appear:**
|
|
- Running Nginx as non-root user (security best practice)
|
|
- Duplicate MIME type in config (doesn't affect functionality)
|
|
|
|
**To suppress (optional):** Edit `frontend/nginx.conf` line 12 to remove duplicate `text/html` from gzip_types.
|
|
|
|
---
|
|
|
|
## 📊 Impact Assessment
|
|
|
|
| Error | Impact | Priority | Status |
|
|
|-------|--------|----------|--------|
|
|
| 404 club-logo.png | Logo doesn't show | Low | ✅ Placeholder created |
|
|
| 404 club-opponent.png | Opponent logo missing | Low | ✅ Placeholder created |
|
|
| 404 placeholder.jpg | News image missing | Low | ✅ Placeholder created |
|
|
| 404 logo-club-empty.svg | SVG fallback missing | Low | ✅ File copied |
|
|
|
|
---
|
|
|
|
## 🎨 Placeholder SVG Contents
|
|
|
|
The placeholders are simple, clean SVGs that show text labels:
|
|
|
|
**Club Logo Placeholder:**
|
|
- 200x200 gray box with "Club Logo" text
|
|
- Professional looking, not garish
|
|
|
|
**Opponent Logo:**
|
|
- 200x200 light gray box with "Opponent" text
|
|
|
|
**News Placeholder:**
|
|
- 800x400 image-sized box with "News Placeholder" text
|
|
|
|
---
|
|
|
|
## ✨ Benefits After Fix
|
|
|
|
1. ✅ **Clean logs** - No more 404 noise in frontend logs
|
|
2. ✅ **Better UX** - Placeholder images instead of broken image icons
|
|
3. ✅ **Professional look** - SVG placeholders look intentional
|
|
4. ✅ **Performance** - Browser stops retrying missing files
|
|
|
|
---
|
|
|
|
## 🔄 Production Deployment
|
|
|
|
When deploying to production:
|
|
|
|
1. **Upload real club images** via admin panel first
|
|
2. **Rebuild frontend** with this fix
|
|
3. **Configure CDN** (optional) to cache uploaded images
|
|
4. **Set up image optimization** via backend (optional)
|
|
|
|
---
|
|
|
|
## 📚 Related Documentation
|
|
|
|
- Frontend Docker setup: `frontend/Dockerfile`
|
|
- Nginx configuration: `frontend/nginx.conf`
|
|
- Backend uploads: `internal/controllers/upload_controller.go`
|
|
- Admin settings: `frontend/src/pages/admin/SettingsAdminPage.tsx`
|
|
|
|
---
|
|
|
|
## ✅ Checklist
|
|
|
|
- [x] Placeholder files created in `frontend/public/`
|
|
- [x] `logo-club-empty.svg` copied from `/static/img/`
|
|
- [ ] Frontend container rebuilt
|
|
- [ ] Browser cache cleared
|
|
- [ ] 404 errors verified as gone
|
|
- [ ] Real club images uploaded (optional)
|
|
|
|
---
|
|
|
|
**Status:** Fix ready - awaiting container rebuild to take effect.
|