# Public Assets Directory This directory contains static files that are served directly by Next.js at the root URL. ## Directory Structure ``` public/ ├── images/ # Image assets (logos, icons, photos) ├── fonts/ # Custom font files ├── favicon.ico # Website favicon ├── manifest.json # PWA manifest ├── robots.txt # Search engine crawling rules └── sitemap.xml # SEO sitemap ``` ## Usage ### Images Place images in `/public/images/` and reference them in your components: ```tsx // In any component Logo // Or with Next.js Image component import Image from 'next/image' Hero ``` ### Fonts Place custom fonts in `/public/fonts/` and reference in your CSS: ```css @font-face { font-family: 'CustomFont'; src: url('/fonts/custom-font.woff2') format('woff2'), url('/fonts/custom-font.woff') format('woff'); font-weight: normal; font-style: normal; } ``` ### Favicon Replace `favicon.ico` with your own favicon. Supported formats: - `.ico` (recommended for broad compatibility) - `.png` or `.svg` (modern browsers) ### Manifest (PWA) Edit `manifest.json` to customize your Progressive Web App settings: - App name and description - Theme colors - App icons - Display mode **Update icons:** - Create 192x192px icon → `/images/icon-192.png` - Create 512x512px icon → `/images/icon-512.png` ### Robots.txt Edit `robots.txt` to control search engine crawling: - Allow/disallow specific paths - Update sitemap URL with your domain ### Sitemap.xml Update `sitemap.xml` with your actual pages: - Replace `your-domain.com` with your actual domain - Add/remove URLs as needed - Update lastmod dates - Set appropriate priorities ## Best Practices ### Images - ✅ Use WebP format for better compression - ✅ Optimize images before upload (TinyPNG, ImageOptim) - ✅ Use descriptive filenames: `hero-banner.jpg` not `img1.jpg` - ✅ Keep images under 500KB when possible ### Fonts - ✅ Use WOFF2 format for best compression - ✅ Subset fonts to include only needed characters - ✅ Limit to 2-3 font families maximum ### File Organization ``` images/ ├── logos/ │ ├── logo.svg │ └── logo-white.svg ├── icons/ │ ├── icon-192.png │ └── icon-512.png └── content/ ├── hero-banner.jpg └── about-team.jpg ``` ## Accessing Static Files All files in `public/` are accessible at the root URL: - `/public/images/logo.png` → `https://yourdomain.com/images/logo.png` - `/public/robots.txt` → `https://yourdomain.com/robots.txt` - `/public/manifest.json` → `https://yourdomain.com/manifest.json` ## SEO & Performance ### For Better SEO: 1. Update `robots.txt` with your actual domain 2. Customize `sitemap.xml` with all your pages 3. Add Open Graph images to `/images/` 4. Create proper favicons for all devices ### For Better Performance: 1. Optimize all images before uploading 2. Use Next.js `` component for automatic optimization 3. Enable caching headers in production 4. Use SVG for logos and icons when possible ## Production Deployment The `public/` folder is automatically included in your Docker image and deployed with your application. No additional configuration needed! ## Notes - ⚠️ Don't put sensitive files here - they're publicly accessible! - ⚠️ File names are case-sensitive on Linux servers - ⚠️ Avoid spaces in filenames - use hyphens instead - ✅ This directory is included in your Git repository - ✅ Works seamlessly with Coolify deployment