A modern, multilingual website for ByMarrakech travel agency built with Next.js 15, TypeScript, Tailwind CSS, and Sanity CMS.
/* Primary Colors */
--color-primary: #912B2B; /* Deep red/maroon */
--color-primary-dark: #8B2626;
--color-primary-light: #A63838;
/* Secondary Colors */
--color-secondary: #BFA77B; /* Tan/gold */
--color-secondary-light: #C8BBA8;
--color-secondary-dark: #A68F66;
/* Background Colors */
--color-bg: #F8F6F2; /* Cream */
--color-bg-cream: #EAE4D9;
--color-bg-cream-dark: #EBE8E0;
/* Text Colors */
--color-text-primary: #3B2F2F; /* Dark brown */
--color-text-secondary: #4A3F35;
--color-text-tertiary: #5A4A42;- Font Family: Tahoma (primary), Inter (fallback), Sans-serif
- Font Weights: Light (300), Normal (400), Medium (500), Semibold (600), Bold (700)
bymarrakech/
βββ src/
β βββ app/
β β βββ [locale]/
β β β βββ components/
β β β β βββ Header.tsx
β β β β βββ Footer.tsx
β β β β βββ Hero.tsx
β β β β βββ LanguageSwitcher.tsx
β β β βββ layout.tsx
β β β βββ page.tsx
β β βββ globals.css
β βββ i18n/
β β βββ navigation.ts
β β βββ request.ts
β β βββ routing.ts
β βββ middleware.ts
βββ messages/
β βββ en.json
β βββ fr.json
βββ public/
β βββ fonts/
β β βββ tahoma.ttf
β βββ images/
β βββ logo.png
βββ tailwind.config.ts
βββ next.config.ts
βββ package.json
βββ tsconfig.json
- Node.js 18+
- npm or yarn
- Sanity account (for CMS)
- Clone and install dependencies
npm install- Set up environment variables
Create a .env.local file:
# Sanity
NEXT_PUBLIC_SANITY_PROJECT_ID=your_project_id
NEXT_PUBLIC_SANITY_DATASET=production
SANITY_API_TOKEN=your_api_token
# Google Analytics
NEXT_PUBLIC_GA_ID=your_ga_id- Run the development server
npm run devOpen http://localhost:3000 with your browser.
- β Multilingual support (EN/FR) with next-intl
- β Responsive design with Tailwind CSS
- β Modern typography and color system
- β Reusable component architecture
- β Header with sticky navigation
- β Footer with social links and newsletter
- β Hero section with parallax effect
- β Smooth animations with Framer Motion
- β SEO optimized
- β Google Analytics integration
- β³ Sanity CMS integration for content
- β³ Additional pages (About, Marrakech, Contact)
- β³ Tours and experiences listing
- β³ Booking system
- β³ Image gallery
- β³ Testimonials section
- β³ Blog/Journal
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS 4
- CMS: Sanity
- Internationalization: next-intl
- Animations: Framer Motion
- Icons: Lucide React
- Analytics: Google Analytics 4
// Primary colors
<div className="bg-primary text-white">
<div className="bg-primary-dark">
<div className="bg-primary-light">
// Secondary colors
<div className="bg-secondary">
<div className="hover:bg-secondary-light">
// Background colors
<div className="bg-background">
<div className="bg-background-cream">
// Text colors
<div className="text-text-primary">
<div className="text-text-secondary">.custom-element {
background-color: var(--color-primary);
color: var(--color-text-primary);
padding: var(--spacing-md);
font-size: var(--font-size-lg);
}// Headings
<h1 className="text-4xl md:text-6xl font-light">
<h2 className="text-3xl md:text-5xl font-light">
<h3 className="text-2xl md:text-4xl font-medium">
// Body text
<p className="text-base text-text-tertiary leading-relaxed">
// Uppercase tracking
<span className="text-sm uppercase tracking-wider">
<span className="text-xs uppercase tracking-widest">import Header from './components/Header';
<Header locale={locale} translations={translations} />import Footer from './components/Footer';
<Footer />import Hero from './components/Hero';
<Hero
title="Your Title"
subtitle="Your Subtitle"
ctaPrimary="Button Text"
backgroundImage="/path/to/image.jpg"
/>- Create a new JSON file in
messages/(e.g.,es.json) - Update
src/i18n/routing.tsto include the new locale - Add translations following the existing structure
# Build for production
npm run build
# Start production server
npm start- Custom color palette
- Typography extensions
- Animation keyframes
- Spacing scale
- TypeScript configuration
- Image optimization
- i18n routing
- TypeScript compiler options
- Path aliases
Β© 2025 ByMarrakech. All rights reserved.
For support, email hello@bymarrakech.com or visit our contact page.