A modern, interactive portfolio showcasing AI Research, IoT Systems, and Full-Stack Development expertise
🌐 Live Demo | 📧 Contact | 📝 Blog | 📄 Resume
This portfolio represents the intersection of modern web development and artificial intelligence, featuring a sophisticated AI-powered chatbot, dynamic content integration, and cutting-edge design patterns. Built with performance, accessibility, and user experience as core principles.
- 🤖 AI Integration: Intelligent chatbot with context-aware responses using Groq's lightning-fast LLM
- 📱 Responsive Excellence: Flawless experience across all devices with mobile-first design
- ⚡ Performance Optimized: Lightning-fast loading with Next.js 15 and optimal bundle splitting
- 🎨 Modern UI/UX: Glass morphism design with 60fps animations and smooth transitions
- 📊 Dynamic Content: Real-time blog integration from Medium RSS with smart image extraction
- 🔒 Type Safety: Full TypeScript implementation with 100% type coverage
- 🚀 Production Ready: Deployed on Vercel with 95+ Lighthouse scores across all metrics
- 🌙 Dark Theme Interface with glass morphism effects and subtle gradients
- 📱 Responsive Design - Pixel-perfect on mobile, tablet, and desktop
- 🎭 Smooth Animations - 60fps animations powered by Framer Motion
- 🧭 Interactive Navigation - Floating navigation with progress indicators
- 🎨 Custom Icon System - Unified icon library with React Icons
- 🧠 Intelligent Responses - Powered by Groq's lightning-fast LLM
- 📚 Portfolio Context Aware - Deep knowledge of skills, projects, and experience
- ⏰ Smart UI Behavior - Conditional visibility with auto-hide functionality
- 📝 Markdown Support - Rich text formatting with syntax highlighting
- 🛡️ Error Handling - Graceful fallbacks and user feedback
- 🚀 Hero Section - Animated introduction with call-to-action
- 👨💻 About Me - Skills showcase with interactive elements
- 💼 Work Portfolio - Project highlights with live demos
- 📈 Experience Timeline - Professional journey visualization
- ⚙️ Skills Grid - Technical expertise with proficiency levels
- 🏆 Certifications - Achievement showcase with verification links
- 🌍 Languages - Multilingual capabilities display
- 📰 Blog Integration - Dynamic Medium RSS feed with image extraction
- 📞 Contact Footer - Multiple contact methods with direct actions
- 📡 Real-time RSS Fetching - Automatic Medium article synchronization
- 🖼️ Smart Image Extraction - Fallback system for missing thumbnails
- 🏷️ Category System - Automatic tag extraction and display
- 📅 Publication Dates - Human-readable date formatting
- 🔄 Error Recovery - Robust handling of API failures
- 🎯 Performance Optimized - Cached requests and lazy loading
| Category | Technologies | Purpose |
|---|---|---|
| Framework | Next.js 15.3.2, React 19 | Server-side rendering, routing, optimization |
| Language | TypeScript 5 | Type safety, developer experience |
| Styling | Tailwind CSS 4, PostCSS | Utility-first styling, responsive design |
| Animation | Framer Motion 12 | Smooth transitions, gesture handling |
| AI Integration | Groq SDK | Fast LLM inference for chatbot |
| Content | React Markdown, RSS2JSON | Blog integration, rich text rendering |
| Icons | React Icons 5 | Comprehensive icon library |
| Utils | React Intersection Observer | Scroll-based animations |
- 🏗️ App Router: Next.js 13+ app directory structure
- ⚡ Server Components: Optimal performance with RSC
- 🎨 CSS-in-JS: Tailwind with custom utilities
- 🔄 State Management: React hooks and context
- 📡 API Routes: Serverless functions for chatbot and blog
- 🛡️ Type Safety: End-to-end TypeScript coverage
- Node.js 18.0 or higher
- npm / yarn / pnpm package manager
- Git for version control
- 📥 Clone the repository
git clone https://github.com/your-username/otman-portfolio.git
cd otman-portfolio- 📦 Install dependencies
# Using npm
npm install
# Using yarn
yarn install
# Using pnpm (recommended for speed)
pnpm install- 🔐 Environment setup
# Copy environment template
cp .env.example .env.local
# Edit .env.local and add your API keys
GROQ_API_KEY=your_groq_api_key_here💡 Get your Groq API key: Visit Groq Console to create a free account
- 🚀 Start development server
npm run dev
# or
yarn dev
# or
pnpm dev- 🌐 Open in browser Navigate to http://localhost:3000
| Command | Description |
|---|---|
npm run dev |
Start development server with hot reload |
npm run build |
Build optimized production bundle |
npm run start |
Start production server |
npm run lint |
Run ESLint for code quality |
🚀 Deployed on Vercel: otman-portfolio.vercel.app
| 🎯 Feature | 📝 Description | 🔗 Try It |
|---|---|---|
| 🤖 AI Chatbot | Ask about skills, projects, or experience | Click the chat bubble |
| 🧭 Smart Navigation | Floating nav with progress indicators | Scroll through sections |
| 💼 Project Gallery | Interactive work showcase with live demos | Visit "Work" section |
| 📰 Blog Integration | Live Medium articles with image extraction | Check "Blog" section |
| 📞 Contact Forms | Multiple ways to connect | "Contact" section |
| 📄 Resume Download | Professional CV in PDF format | Available in contact section |
- 💻 Desktop: Full-width layout with advanced animations and hover effects
- 📱 Tablet: Optimized grid layouts with touch-friendly interactions
- 📱 Mobile: Single-column design with swipe gestures and mobile-first approach
- Hero Animation: Smooth entrance with gradient text effects
- Chatbot Demo: Real-time AI responses with typing indicators
- Blog Section: Dynamic Medium integration with live updates
- Navigation Flow: Seamless section transitions with progress tracking
- 🏆 Lighthouse Score: 95+ across all categories (Performance, Accessibility, Best Practices, SEO)
- ⚡ First Contentful Paint: < 1.2s
- 🎯 Time to Interactive: < 2.1s
- 📦 Bundle Size: Optimized with code splitting and tree-shaking
- 🔄 API Response Time: < 500ms average for AI chat responses
- 📱 Mobile Performance: 90+ on mobile devices with optimized touch interactions
otman-portfolio/
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ ├── blog/ # Medium RSS integration
│ │ │ └── chat/ # AI chatbot endpoint
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout
│ │ └── page.tsx # Home page
│ ├── components/
│ │ ├── sections/ # Page sections
│ │ │ ├── AboutSection.tsx
│ │ │ ├── BlogSection.tsx
│ │ │ ├── ContactFooterSection.tsx
│ │ │ ├── ExperienceSection.tsx
│ │ │ ├── HeroSection.tsx
│ │ │ ├── SkillsSection.tsx
│ │ │ └── WorkSection.tsx
│ │ ├── ui/
│ │ │ └── icons.tsx # Centralized icon system
│ │ ├── ChatComponent.tsx # AI chatbot
│ │ └── FloatingNavigation.tsx
│ ├── context/
│ │ └── NavigationContext.tsx
│ ├── utils/
│ │ ├── data/ # Static data
│ │ ├── hooks/ # Custom hooks
│ │ └── types/ # TypeScript types
│ └── public/
│ ├── CV_OtmanMouhib.pdf
│ └── images/ # Static assets
├── tailwind.config.js
├── next.config.ts
└── package.json
Create a .env.local file in the root directory:
# Groq AI API Key for chatbot
GROQ_API_KEY=your_groq_api_key_here
# Optional: Analytics tracking
NEXT_PUBLIC_GA_ID=your_google_analytics_idThe blog section automatically fetches articles from:
- RSS URL:
https://medium.com/feed/@mouhib.otm - Processed via RSS2JSON API
- Displays latest 6 articles with images and metadata
- Personal Data: Update
/src/utils/data/personal.ts - Skills: Modify
/src/utils/data/skills.ts - Projects: Edit
/src/utils/data/projects.ts - Experience: Update
/src/utils/data/experiences.ts
- Translucent backgrounds with backdrop blur
- Subtle borders and gradients
- Layered depth for visual hierarchy
- Entrance animations on scroll with Intersection Observer
- Hover effects for interactive elements
- Page transitions with Framer Motion
- Staggered animations for list items
- Primary: Blue to Purple gradients (
from-blue-500 to-purple-500) - Background: Dark grays (
gray-900,gray-800) - Accents: Cyan and teal highlights
- Text: White primary, gray secondary
One-click deployment:
- 🍴 Fork this repository
- 🔗 Connect to Vercel
- 🔐 Add environment variables
- 🚀 Deploy automatically
# 1. Build for production
npm run build
# 2. Test production build locally
npm start
# 3. Deploy to your preferred platform| Variable | Description | Required |
|---|---|---|
GROQ_API_KEY |
Groq API key for chatbot | ✅ Yes |
NEXT_PUBLIC_GA_ID |
Google Analytics ID | ❌ Optional |
| Platform | Documentation | One-Click Deploy |
|---|---|---|
| Netlify | Guide | |
| Railway | Guide | |
| Cloudflare Pages | Guide | Manual Setup |
- 🎯 Portfolio Expertise: Deep knowledge of skills, projects, and experience
- 💬 Natural Conversations: Human-like responses with context awareness
- 📚 Comprehensive Data: Trained on complete portfolio information
- ⚡ Lightning Fast: Sub-second response times with Groq infrastructure
- 🛡️ Error Resilient: Graceful handling of API failures and edge cases
- 📝 Markdown Rendering: Rich text formatting with syntax highlighting
- ⏰ Conditional UI: Smart label visibility with auto-hide after 8 seconds
- 📊 Response Analytics: Character count and performance metrics
- 🎨 Dynamic Styling: Gradient messages with professional design
- ♿ Accessibility: Full keyboard navigation and screen reader support
🎯 Click to see sample questions & responses
Skills & Expertise:
- "What programming languages does Otman know?"
- "Tell me about his AI and machine learning experience"
- "What frameworks and tools does he use?"
Projects & Portfolio:
- "What are his most impressive projects?"
- "Show me examples of his work"
- "What kind of applications has he built?"
Professional Background:
- "What's his educational background?"
- "Where has he worked?"
- "What certifications does he have?"
Contact & Collaboration:
- "How can I contact Otman?"
- "Is he available for freelance projects?"
- "What's the best way to reach him?"
// AI Context Configuration
const portfolioContext = `
Professional: ${personalData.name} - ${personalData.role}
Skills: AI/ML, IoT, Full-Stack Development
Experience: 5+ years in software engineering
Specializations: ${skillsData.specializations.join(', ')}
`;- Next.js App Router for optimal routing
- Image Optimization with Next.js Image component
- Code Splitting for reduced bundle size
- Lazy Loading for sections and images
- CSS-in-JS with Tailwind for tree-shaking
- 🔒 TypeScript: 100% type coverage for runtime safety
- 🎨 ESLint: Consistent code formatting and best practices
- 📱 Mobile-First: Responsive design from the ground up
- ♿ Accessibility: WCAG 2.1 compliance with ARIA labels
- ⚡ Performance: Lighthouse scores 95+ across all metrics
- 🏗️ Component-Based: Modular, reusable React components
- 🔄 State Management: Efficient React hooks and context
- 📡 API Design: RESTful endpoints with proper error handling
- 🎯 SEO Optimized: Meta tags, structured data, and sitemap
- 🛡️ Security: Input validation and XSS protection
src/
├── app/ # Next.js App Router
│ ├── api/ # Serverless API endpoints
│ └── globals.css # Global styles
├── components/ # Reusable UI components
│ ├── sections/ # Page sections
│ └── ui/ # Base UI elements
├── utils/ # Utilities and helpers
│ ├── data/ # Static content
│ ├── hooks/ # Custom React hooks
│ └── types/ # TypeScript definitions
└── context/ # React context providers
- 🎨 Design: Figma prototypes → Component planning
- 💻 Development: TypeScript → Component implementation
- 🧪 Testing: Manual testing → Performance optimization
- 🚀 Deployment: Vercel → Production monitoring
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Otman Mouhib - AI & IoT Research Engineer
"Transforming ideas into scalable solutions through AI and innovative technology"