A professional, SEO-optimized, bilingual (English & Greek) brochure-style website for aluminum fabrication services in Cyprus.
- Bilingual Support: English and Greek translations with seamless language switching
- SEO Optimized: Complete meta tags, structured data, and sitemap generation
- Mobile-First Responsive: Optimized for all device sizes
- Modern Design: Clean, professional aesthetic with aluminum-themed color palette
- Interactive Components: Smooth animations, lightbox gallery, contact form
- Performance Optimized: Next.js Image optimization, lazy loading, fast loading times
- Framework: Next.js 14 with TypeScript
- Styling: Tailwind CSS with custom design system
- Internationalization: next-i18next
- Animations: Framer Motion
- Forms: React Hook Form with Formspree integration
- Icons: Heroicons
- Deployment: Vercel (recommended)
airs_company/
├── components/ # React components
│ ├── Navbar.tsx # Navigation with language switcher
│ ├── Hero.tsx # Hero section with CTA
│ ├── About.tsx # Company information
│ ├── Services.tsx # Service offerings
│ ├── Gallery.tsx # Portfolio with lightbox
│ ├── ContactForm.tsx # Contact form with validation
│ └── Footer.tsx # Footer with links
├── pages/ # Next.js pages
│ ├── index.tsx # Main landing page
│ ├── _app.tsx # App wrapper with i18n
│ └── _document.tsx # Custom document for SEO
├── public/ # Static assets
│ ├── locales/ # Translation files
│ │ ├── en/common.json
│ │ └── el/common.json
│ └── images/ # Website images
├── styles/ # Global styles
│ └── globals.css # Tailwind + custom CSS
└── config files # Next.js, Tailwind, TypeScript configs
npm installPlace the required images in the public/images/ directory. See public/images/placeholder.txt for the complete list.
- Sign up at Formspree.io
- Create a new form and get your form ID
- Update the form action URL in
components/ContactForm.tsx:const response = await fetch('https://formspree.io/f/YOUR_FORM_ID', {
npm run devVisit http://localhost:3000 to see the website.
npm run build- Push your code to GitHub
- Connect your repository to Vercel
- Configure environment variables if needed
- Deploy automatically on every push
- Purchase your domain (e.g.,
aluminumcraftcy.com) - Configure DNS settings in Vercel
- Update the site URL in the following files:
pages/index.tsx(canonical URLs)next-sitemap.config.js(sitemap)
Create a .env.local file for local development:
NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_FORMSPREE_ID=your_formspree_idFor production, set these in your hosting provider's environment variables.
- Edit
tailwind.config.jsto modify the color palette - Update
styles/globals.cssfor custom component styles
- Modify
public/locales/en/common.jsonfor English content - Modify
public/locales/el/common.jsonfor Greek content
- Update structured data in
pages/index.tsx - Configure sitemap in
next-sitemap.config.js
The contact form uses Formspree for backend handling. No server required!
- Create a free Formspree account
- Set up a new form project
- Replace the form endpoint in
components/ContactForm.tsx - Test form submissions
- Primary: Neutral grays and metallics
- Accent: Professional blue shades
- Aluminum: Specific aluminum-themed colors
- Font: Inter (loaded from Google Fonts)
- Headings: Bold weights for hierarchy
- Body: Readable sizes with good line height
- Reusable button styles (
btn-primary,btn-secondary) - Consistent spacing with Tailwind utilities
- Smooth transitions and hover effects
- Responsive navbar with mobile menu
- Language switcher (EN/EL)
- Smooth scroll navigation
- Full-screen background image
- Compelling headline and CTA buttons
- Company statistics display
- Company story and values
- Workshop imagery
- Trust indicators
- Four main service categories
- Icon-based layout
- Hover animations
- Filterable portfolio grid
- Lightbox modal for image viewing
- Category-based organization
- Validated contact form
- Company information display
- Multiple contact methods
- Quick navigation links
- Contact information
- Language switcher
- Legal links
- Next.js Image: Automatic optimization and lazy loading
- Code Splitting: Automatic by Next.js
- Animations: Optimized with Framer Motion
- SEO: Complete meta tags and structured data
- Accessibility: Semantic HTML and ARIA labels
- Complete meta tag implementation
- Open Graph and Twitter Card tags
- JSON-LD structured data for local business
- Automatic sitemap generation
- Multi-language SEO support
- Performance-optimized loading
- Content Security Policy headers
- XSS protection
- Secure form handling
- Safe external link policies
This project is created for Aluminum Craft Cyprus. All rights reserved.
For technical support or customizations, contact the development team.
Built with ❤️ using modern web technologies for Cyprus aluminum fabrication industry.