4.5 KiB
4.5 KiB
Assets Directory
This directory contains all static assets for the Xpeditis frontend application.
Directory Structure
public/assets/
├── images/ # General images (hero banners, backgrounds, photos)
├── logos/ # Company logos and branding assets
└── icons/ # UI icons and small graphics
Usage in Components
Next.js Image Component (Recommended)
import Image from 'next/image';
export function Hero() {
return (
<Image
src="/assets/images/hero-banner.jpg"
alt="Maritime shipping"
width={1920}
height={1080}
priority
/>
);
}
Logo Usage
import Image from 'next/image';
export function Header() {
return (
<Image
src="/assets/logos/xpeditis-logo.svg"
alt="Xpeditis"
width={150}
height={40}
/>
);
}
Icons
// SVG icons can be imported directly
import ShippingIcon from '@/public/assets/icons/shipping-icon.svg';
export function FeatureCard() {
return (
<div>
<ShippingIcon className="w-8 h-8 text-blue-600" />
<h3>Fast Shipping</h3>
</div>
);
}
// Or use Image component
import Image from 'next/image';
export function IconButton() {
return (
<Image
src="/assets/icons/notification-icon.svg"
alt="Notifications"
width={24}
height={24}
/>
);
}
File Naming Conventions
Images
- Use kebab-case:
hero-banner.jpg,shipping-container.png - Include descriptive names:
maritime-port-sunset.jpg - Use appropriate formats:
- Photos:
.jpg(compressed, smaller file size) - Graphics with transparency:
.png - Simple graphics/illustrations:
.svg
- Photos:
Logos
- Main logo:
xpeditis-logo.svg - Dark mode variant:
xpeditis-logo-dark.svg - Light mode variant:
xpeditis-logo-light.svg - Icon only:
xpeditis-icon.svg - Favicon sizes:
favicon-16x16.png,favicon-32x32.png
Icons
- Use
.svgformat for scalability - Name by function:
tracking-icon.svg,dashboard-icon.svg - Keep icons monochrome (colorize via CSS)
Optimization Guidelines
Image Optimization
-
Compress images before adding to repository
- Use tools like TinyPNG, ImageOptim, or Squoosh
- Target: < 200KB for hero images, < 50KB for thumbnails
-
Use appropriate dimensions
- Hero banners: 1920x1080px
- Thumbnails: 400x300px
- Profile images: 200x200px
-
Leverage Next.js Image Optimization
- Always use
<Image>component instead of<img> - Specify
widthandheightprops - Use
priorityfor above-the-fold images - Use
loading="lazy"for below-the-fold images
- Always use
SVG Optimization
- Remove unnecessary metadata with SVGO
- Keep viewBox attribute for proper scaling
- Use currentColor for icons to inherit text color
Example Assets for Xpeditis
Recommended Images
hero-container-ship.jpg- Homepage hero bannertracking-dashboard.png- Dashboard screenshotteam-photo.jpg- About us pageport-operations.jpg- Services pageglobal-map.svg- Shipping routes visualization
Recommended Icons
container-icon.svg- Container/booking iconship-icon.svg- Shipping/tracking icondocument-icon.svg- Documentation iconclock-icon.svg- Transit time iconlocation-icon.svg- Port location iconnotification-icon.svg- Alerts/notificationsuser-icon.svg- User profilesettings-icon.svg- Settings/preferences
Adding New Assets
- Check file size - Ensure images are optimized
- Use correct directory - images/ for photos, logos/ for branding, icons/ for UI
- Follow naming convention - kebab-case, descriptive names
- Update this README - Document any special assets or usage patterns
- Test responsiveness - Verify assets look good on mobile and desktop
CDN Considerations (Future)
For production, consider moving to a CDN:
- AWS S3 + CloudFront
- Cloudinary
- Vercel Image Optimization (automatic with Next.js)
Current setup serves from /public which is fine for development and small-scale production.
License & Attribution
Ensure all assets have proper licensing:
- Company logos: Internal use approved
- Stock photos: Properly licensed (e.g., Unsplash, Pexels)
- Icons: Open source (e.g., Heroicons, Lucide) or purchased license
Document attributions in /public/assets/ATTRIBUTIONS.md if required.