This is a Next.js 15 project built with TypeScript, Tailwind CSS 4, and Shadcn/UI. It features comprehensive internationalization (i18n) support using next-intl and integration with Sanity CMS.
- Node.js (v18+ recommended)
- npm, yarn, or bun
-
Clone the repository:
git clone <repository-url> cd <project-directory>
-
Install dependencies:
npm install # or yarn install
npm run devOpen http://localhost:3000 with your browser to see the result.
- Framework: Next.js 15 (App Router, Turbopack)
- Language: TypeScript
- Styling:
- Tailwind CSS 4
- Shadcn/UI (Radix UI + Lucide Icons)
- Framer Motion (Animations)
- Internationalization: next-intl
- CMS: Sanity
- Validation: Zod
- Carousel: Swiper / Embla
├── src
│ ├── app
│ │ ├── [locale] # Localized routes (Main application logic)
│ │ │ ├── page.tsx # Landing page
│ │ │ ├── layout.tsx # Root layout for localized pages
│ │ │ └── ... # Other routes (about, contact, etc.)
│ │ ├── api # API routes
│ │ └── types # TypeScript type definitions
│ ├── components # Reusable UI components
│ │ ├── ui # Shadcn UI primitives
│ │ └── ... # Feature-specific components
│ ├── i18n # Internationalization configuration
│ ├── messages # Translation JSON files (en.json, fr.json, etc.)
│ ├── lib # Utility functions and libraries
│ └── hooks # Custom React hooks
├── public # Static assets
├── next.config.ts # Next.js configuration
├── tailwind.config.ts # Tailwind configuration (if applicable)
└── package.jsonThis project supports multiple languages.
- Configuration:
src/i18n/request.tsdefines the available locales (en,fr,de, etc.). - Routing:
src/i18n/routing.ts(implied) andsrc/middleware.tshandle locale detection and routing. - Translations: Translation files are located in
src/messages/{locale}.json.
To add a new language:
- Add the locale code to
src/i18n/request.ts. - Update
src/middleware.tsmatcher if necessary. - Create a corresponding JSON file in
src/messages/.
Global styles are defined in src/index.css (or src/app/globals.css). Tailwind classes are used throughout components.
UI components are largely based on Shadcn/UI. You can find them in src/components/ui.
- Static content is managed via translation files (
src/messages/). - Dynamic content is fetched from Sanity CMS (configured in
src/sanity/).
Contributions are welcome! Please feel free to submit a Pull Request.
[Add License Information Here]