A modern, high-performance portfolio website built with Vite, React, and Tailwind CSS, implementing Material Design 3 principles.
- Vite - Lightning-fast build tool and dev server
- React 18 - Modern UI framework
- Tailwind CSS - Utility-first CSS framework
- Material Design 3 - Google's latest design system
- Material Symbols - Icon system
- Space Grotesk - Custom font family
- Netlify Forms - Contact form handling (free, 100 submissions/month)
- Material Design 3 Color System - Complete 40+ color token palette with emerald green primary
- Dark Mode Support - System preference detection with manual toggle
- Tonal Layering - Sophisticated surface elevation system
- Smooth Animations - Transitions, hover states, and pulse effects
- Responsive Design - Mobile-first approach with custom breakpoints
- Accessibility - Semantic HTML and ARIA labels
devfolio/
├── src/
│ ├── components/
│ │ ├── Navigation.jsx # Top navigation with dark mode toggle
│ │ ├── Hero.jsx # Hero section with profile
│ │ ├── About.jsx # About section
│ │ ├── Services.jsx # Freelance services cards
│ │ ├── Experience.jsx # Work experience timeline
│ │ ├── TechStack.jsx # Bento grid of technologies
│ │ ├── Publications.jsx # Research publications
│ │ ├── Contact.jsx # Netlify contact form
│ │ └── Footer.jsx # Site footer
│ ├── App.jsx # Main app component
│ ├── main.jsx # Vite entry point
│ └── index.css # Global styles with Tailwind
├── public/
│ ├── images/ # Profile and assets
│ └── icons/ # Favicon and PWA icons
├── index.html # HTML template with font loading
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind + MD3 config
└── netlify.toml # Netlify deployment config
- Node.js 18+
- npm or yarn
npm installnpm run devOpen http://localhost:5173 to view in browser. The page will hot-reload on edits.
npm run buildBuilds the app for production to the dist/ folder. The build is optimized and minified.
npm run previewLocally preview the production build before deploying.
- Hero - Name, title, CTAs, profile image, availability status
- About - Personal introduction and mission statement
- Services - Three freelance service offerings:
- Custom Backend Architecture
- System Performance Audit
- Fractional CTO / Consulting
- Experience - Professional work history at Zalando, Trifacta, VEDA
- Tech Stack - Bento grid showcasing technical competencies
- Publications - Research paper from ACM SIGPLAN conference
- Contact - Netlify-powered contact form with validation
All Material Design 3 colors are defined in tailwind.config.js. The primary color is emerald green (#00875A). To change:
// tailwind.config.js
primary: {
DEFAULT: '#00875A', // Change this
// ... other shades
}Content is hardcoded in component files for simplicity. To update:
- Personal info: Edit components directly
- Experience:
src/components/Experience.jsx - Services:
src/components/Services.jsx - Publications:
src/components/Publications.jsx
Replace public/images/profile.png with your own image. Recommended size: 512x512px or larger.
- Push code to GitHub
- Connect repository to Netlify
- Configuration is already set in
netlify.toml - Deploy!
Form Setup:
- Forms automatically work on Netlify (no additional setup needed)
- Configure email notifications in Netlify dashboard under Forms settings
- Free tier includes 100 submissions/month
The app can be deployed to any static hosting:
- Vercel
- Cloudflare Pages
- GitHub Pages
- AWS S3 + CloudFront
Build command: npm run build
Publish directory: dist
Dark mode is implemented with Tailwind's class strategy:
- Automatically detects system preference on first load
- Toggle persists to localStorage
- Smooth transitions between light/dark themes
- All MD3 colors have dark variants
- Semantic HTML structure
- ARIA labels on interactive elements
- Keyboard navigation support
- High contrast color ratios
- Focus indicators
- Screen reader friendly
MIT License - see LICENSE.md
- Email: hello@abdallah.at
- LinkedIn: linkedin.com/in/abdallahat
- GitHub: github.com/abdallahat
Built with ❤️ using Vite + React + Material Design 3