A modern, bilingual (English/Greek) landing page website for a youth soccer school, built with Next.js, Tailwind CSS, and Framer Motion.
- π Bilingual Support: Full English and Greek translations
- π± Responsive Design: Mobile-first approach with beautiful animations
- β½ Professional Design: Modern UI with soccer school branding
- π§ Contact Form: Integrated Formspree contact form
- π¨ Beautiful Animations: Smooth page transitions with Framer Motion
- π SEO Optimized: Complete SEO setup with meta tags and structured data
- π Fast Performance: Static site generation with Next.js
- Framework: Next.js 14+ with TypeScript
- Styling: Tailwind CSS with custom design system
- Animations: Framer Motion
- Internationalization: next-i18next
- Form Handling: Formspree integration
- Deployment: Vercel (recommended)
- Royal Blue:
#0033A0- Strength, prestige, tradition - Golden Yellow:
#FFD700- Youth, success, optimism - Soft White:
#F7F7F7- Clarity and space - Light Gray:
#E0E0E0- Subtle contrast
- Node.js 18+ and npm
- Git
- Clone the repository:
git clone <repository-url>
cd kids-soccer-school-website- Install dependencies:
npm install- Start the development server:
npm run dev- Open http://localhost:3000 to view the website.
To enable the contact form:
- Sign up for a Formspree account
- Create a new form and get your form endpoint
- Update the
ContactForm.tsxcomponent with your Formspree endpoint:const response = await fetch('https://formspree.io/f/YOUR-FORM-ID', {
kids-soccer-school-website/
βββ src/
β βββ components/ # React components
β β βββ Navbar.tsx # Navigation with language toggle
β β βββ Hero.tsx # Hero section
β β βββ About.tsx # About section
β β βββ Programs.tsx # Programs/age groups
β β βββ Gallery.tsx # Photo gallery
β β βββ ContactForm.tsx # Contact form
β β βββ Footer.tsx # Footer
β βββ pages/ # Next.js pages
β β βββ _app.tsx # App wrapper with i18n
β β βββ index.tsx # Main homepage
β βββ styles/
β βββ globals.css # Global styles with Tailwind
βββ public/
β βββ locales/ # Translation files
β β βββ en.json # English translations
β β βββ gr.json # Greek translations
β βββ images/ # Static images
βββ next.config.js # Next.js configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ next-i18next.config.js # Internationalization config
βββ tsconfig.json # TypeScript configuration
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run export- Export static site
- Push your code to GitHub
- Connect your GitHub repository to Vercel
- Vercel will automatically deploy your site with each push
-
Update
next.config.jsto enable static export:output: 'export', trailingSlash: true, distDir: 'dist',
-
Build and export:
npm run build npm run export -
Upload the
distfolder to your hosting provider
- Text Content: Update translation files in
public/locales/ - Images: Replace placeholder images in components with your own
- Colors: Modify the color palette in
tailwind.config.js - Contact Info: Update contact details in translation files
- Social Links: Modify social media links in
Footer.tsx
Replace the Formspree endpoint in ContactForm.tsx with your own:
const response = await fetch('https://formspree.io/f/your-form-id', {To add or modify age groups, update the translation files and the Programs.tsx component.
- Meta tags and Open Graph tags
- Structured data for search engines
- Static sitemap.xml included
- Multilingual SEO support
- Fast loading times with Next.js optimization
- Robots.txt configured
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License.
For support or questions about this project, please contact:
- Email: kids.soccer.school@gmail.com
- Phone: +357 99530979
Built with β½ by the Kids Soccer School team.