Skip to content

yodem/tal-protfolio

Repository files navigation

Tal Shimoni - Music Producer Portfolio

A modern, responsive portfolio website built with Next.js 15, featuring full internationalization (Hebrew/English) and dark/light themes.

🎡 Features

Core Functionality

  • Bilingual Support: Full Hebrew and English translations with RTL/LTR layout switching
  • Dark/Light Themes: Complete theming system with smooth transitions
  • Responsive Design: Mobile-first approach with breakpoint-based layouts
  • Smooth Scrolling: Navigation with smooth scroll to sections
  • Modern Animations: Framer Motion animations throughout the site

Sections

  1. Navigation: Fixed navbar with smooth scrolling, theme toggle, and language switcher
  2. Hero Section: Full-width hero with call-to-action and animated elements
  3. About Section: Personal description with rotating profile image animation
  4. Work Section: Genre showcase with alternating layouts and progress bars
  5. Best Tracks: Responsive grid of track cards with YouTube integration
  6. Services: Service cards with gradient icons and hover effects
  7. Contact/Collaborate: Contact form with Zod validation and animated submissions
  8. Footer: Social media links and site information

πŸ› οΈ Tech Stack

  • Framework: Next.js 15 with App Router
  • Styling: Tailwind CSS v4 with CSS custom properties
  • Components: shadcn/ui component library
  • Animations: Framer Motion
  • Forms: React Hook Form with Zod validation
  • Internationalization: next-intl
  • Theming: next-themes
  • Icons: Lucide React

πŸ“ Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ [locale]/           # Internationalized routes
β”‚   β”‚   β”œβ”€β”€ layout.tsx      # Locale-specific layout
β”‚   β”‚   └── page.tsx        # Main portfolio page
β”‚   β”œβ”€β”€ globals.css         # Global styles and theme variables
β”‚   └── layout.tsx          # Root layout
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ globals/            # App-wide components
β”‚   β”‚   β”œβ”€β”€ theme-provider.tsx
β”‚   β”‚   β”œβ”€β”€ ThemeToggle.tsx
β”‚   β”‚   └── language-toggle.tsx
β”‚   β”œβ”€β”€ sections/           # Page sections
β”‚   β”‚   β”œβ”€β”€ navigation.tsx
β”‚   β”‚   β”œβ”€β”€ hero.tsx
β”‚   β”‚   β”œβ”€β”€ about.tsx
β”‚   β”‚   β”œβ”€β”€ work.tsx
β”‚   β”‚   β”œβ”€β”€ best-tracks.tsx
β”‚   β”‚   β”œβ”€β”€ services.tsx
β”‚   β”‚   β”œβ”€β”€ contact.tsx
β”‚   β”‚   └── footer.tsx
β”‚   └── ui/                 # Reusable UI components
β”‚       β”œβ”€β”€ button.tsx
β”‚       β”œβ”€β”€ card.tsx
β”‚       β”œβ”€β”€ input.tsx
β”‚       β”œβ”€β”€ textarea.tsx
β”‚       └── label.tsx
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ i18n/               # Internationalization
β”‚   β”‚   β”œβ”€β”€ config.ts
β”‚   β”‚   └── request.ts
β”‚   └── utils.ts            # Utility functions
β”œβ”€β”€ messages/               # Translation files
β”‚   β”œβ”€β”€ en.json             # English translations
β”‚   └── he.json             # Hebrew translations
└── middleware.ts           # Next.js middleware for i18n

🌍 Internationalization

The portfolio supports Hebrew and English with:

  • Complete translation coverage for all text content
  • RTL layout support for Hebrew
  • Locale-aware routing (/en, /he)
  • Language toggle in navigation
  • Direction-aware component layouts

Adding Translations

  1. Add new keys to messages/en.json and messages/he.json
  2. Use useTranslations() hook in components:
const t = useTranslations("sectionName");
// Usage: {t("keyName")}

🎨 Theming

Built with comprehensive dark/light theme support:

  • CSS custom properties for all colors
  • Semantic color tokens (primary, secondary, accent, etc.)
  • Theme-aware components
  • Smooth theme transitions
  • System theme detection

Theme Variables

All themes use semantic color tokens defined in globals.css:

  • --background, --foreground
  • --primary, --primary-foreground
  • --secondary, --secondary-foreground
  • --muted, --muted-foreground
  • --accent, --accent-foreground
  • --card, --card-foreground
  • --border, --input, --ring

πŸ“± Responsive Design

Mobile-first approach with breakpoints:

  • sm: 640px
  • md: 768px
  • lg: 1024px
  • xl: 1280px

Layout Patterns

  • Grid layouts that adapt to screen size
  • Flexible spacing and typography scaling
  • Touch-friendly navigation on mobile
  • Optimized image loading with Next.js Image

✨ Animations

Framer Motion animations include:

  • Page load animations with staggered reveals
  • Hover effects on interactive elements
  • Scroll-triggered animations
  • Rotating image borders and floating elements
  • Form submission states
  • Smooth page transitions

πŸ“‹ Contact Form

The contact form features:

  • Zod schema validation
  • Real-time error display
  • Loading states during submission
  • Success/error feedback
  • Accessible form controls

Form Validation Rules

  • Name: Minimum 2 characters
  • Email: Valid email format
  • Message: Minimum 10 characters

πŸš€ Getting Started

  1. Install dependencies:

    pnpm install
  2. Run development server:

    pnpm dev
  3. Build for production:

    pnpm build
  4. Start production server:

    pnpm start

πŸ”§ Configuration

Environment Variables

Add to .env.local:

# Add any API keys or configuration here
NEXT_PUBLIC_YOUTUBE_API_KEY=your_youtube_api_key

Customization

  • Colors: Modify theme variables in globals.css
  • Translations: Update messages/en.json and messages/he.json
  • Content: Edit section components in src/components/sections/
  • Styling: Adjust Tailwind classes or add custom CSS

πŸ“¦ Dependencies

Core

  • next: ^15.5.2
  • react: ^19.1.0
  • typescript: ^5

UI & Styling

  • tailwindcss: ^4
  • @radix-ui/react-*: Various UI primitives
  • lucide-react: ^0.542.0
  • class-variance-authority: ^0.7.1
  • clsx: ^2.1.1
  • tailwind-merge: ^3.3.1

Features

  • next-intl: ^4.3.6
  • next-themes: ^0.4.6
  • framer-motion: ^12.23.12
  • react-hook-form: ^7.62.0
  • @hookform/resolvers: ^5.2.1
  • zod: ^4.1.5

🎯 Performance

  • Static generation for optimal loading
  • Image optimization with Next.js Image
  • Code splitting by route
  • Efficient animation loading
  • Minimal bundle size

πŸ“„ License

Β© 2024 Tal Shimoni. All rights reserved.


Portfolio built with love for music and technology 🎡

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors