A beautiful dark-themed single-page portfolio application built with Flutter, inspired by Hazem Said's portfolio design. Features smooth scroll navigation between sections with a modern da## ๐ฆ Dependencies
flutter: SDK '>=3.5.0 <4.0.0'cupertino_icons: ^1.0.8flutter_svg: ^1.1.6google_fonts: ^4.0.0go_router: ^12.0.0url_launcher: ^6.1.14flutter_lints: ^3.0.0 (dev dependency)me and pink accents.
Visit the live website: https://hazzemsaid.github.io/my_Portfolio/
A beautiful dark-themed single-page portfolio application built with Flutter, inspired by Hazem Said's portfolio design. Features smooth scroll navigation between sections ## ๐ฆ Dependencies
flutter: SDK '>=3.5.0 <4.0.0'cupertino_icons: ^1.0.8flutter_svg: ^1.1.6google_fonts: ^4.0.0go_router: ^12.0.0url_launcher: ^6.1.14flutter_lints: ^3.0.0 (dev dependency) modern dark theme and pink accents.
Visit the live website: https://hazzemsaid.github.io/my_Portfolio/
- Dark Theme: Professional dark background with pink accent colors
- Single Page Application: All content displayed on one page with smooth scrolling
- Scroll Navigation: Click navigation items to smoothly scroll to different sections
- Fully Responsive Design: Optimized for mobile, tablet, and desktop with adaptive layouts
- Modern UI: Material Design 3 with beautiful gradients and animations
- Professional Layout: Clean, modern design similar to Hazem Said's portfolio
- DM Sans Font: Modern, clean typography for better readability
- Animated Background: Dynamic particle system with connecting lines
- Profile Animations: Animated profile image with floating tech icons
- Skill Animations: Rotating skill icons with elastic animations
- Service Animations: Animated service cards with scaling effects
- Button Animations: Interactive button animations with shadows
- Mobile Menu: Hamburger menu for mobile navigation
- Adaptive Grids: Responsive grid layouts that adjust to screen size
- Hero Section: Eye-catching introduction with profile image and call-to-action buttons
- About Section: Personal information with highlighted skills and experience
- Services Section: Professional services offered in a grid layout
- Resume Section: Education and experience timeline
- Skills Section: Technical skills displayed in a colorful grid
- Projects Section: Portfolio projects with categories and descriptions
- Contact Section: Contact form with social media links and footer
The app uses a custom scroll navigation system instead of traditional routing. Here's how it works:
-
ManagementRoute Class (
lib/core/route/mangement_route.dart)- Contains GlobalKey for each section
- Provides scroll controller
- Includes navigation methods for smooth scrolling
-
Section Keys
homeKey- Home/Hero sectionaboutKey- About sectionservicesKey- Services sectionresumeKey- Resume sectionskillsKey- Skills sectionprojectsKey- Projects sectioncontactKey- Contact section
// Navigate to Skills section
ManagementRoute.scrollToSkills();
// Navigate to About section
ManagementRoute.scrollToAbout();
// Navigate to Projects section
ManagementRoute.scrollToProjects();ManagementRoute.scrollToTop();String currentSection = ManagementRoute.getCurrentVisibleSection();scrollToHome()- Scroll to home sectionscrollToAbout()- Scroll to about sectionscrollToServices()- Scroll to services sectionscrollToResume()- Scroll to resume sectionscrollToSkills()- Scroll to skills sectionscrollToProjects()- Scroll to projects sectionscrollToContact()- Scroll to contact sectionscrollToTop()- Scroll to top of page
- Primary Color:
#FF006E(Pink/Magenta) - Background:
#0A0A0A(Very Dark) - Surface:
#1A1A1A(Dark) - Card Background:
#2A2A2A(Medium Dark) - Text: White and Grey variations
- Accents: Pink highlights throughout
lib/
โโโ main.dart # Main app entry point with all sections
โโโ core/
โ โโโ route/
โ โโโ mangement_route.dart # Scroll navigation system
โโโ README.md # This documentation
- Home Section - Hero section with introduction and profile image
- About Section - Personal information and highlighted skills
- Services Section - Professional services in grid layout
- Resume Section - Education and experience timeline
- Skills Section - Technical skills with colorful icons
- Projects Section - Portfolio projects showcase
- Contact Section - Contact form and footer
- Add a new GlobalKey in
ManagementRoute:
static final GlobalKey newSectionKey = GlobalKey();- Add navigation method:
static void scrollToNewSection() {
_scrollToSection(newSectionKey);
}- Add the section to the main page with the key:
Container(
key: ManagementRoute.newSectionKey,
child: const NewSection(),
),You can customize the color scheme by changing the color constants:
// Primary accent color
const Color(0xFFFF006E)
// Background colors
const Color(0xFF0A0A0A) // Very dark
const Color(0xFF1A1A1A) // Dark
const Color(0xFF2A2A2A) // Medium darkCustomize the scroll animation by modifying the _scrollToSection method:
static void _scrollToSection(GlobalKey key) {
if (key.currentContext != null) {
Scrollable.ensureVisible(
key.currentContext!,
duration: const Duration(milliseconds: 1000), // Change duration
curve: Curves.easeInOutCubic, // Change curve
alignment: 0.1, // Change alignment (0.0 = top, 0.5 = center)
);
}
}- Make sure you have Flutter installed
- Clone the repository
- Run
flutter pub getto install dependencies - Run
flutter run -d chromefor web development - Or run
flutter runfor mobile development
This project is configured for automatic deployment to GitHub Pages using GitHub Actions.
- Push to main branch: Every push automatically triggers deployment
- GitHub Actions: Uses Flutter build action with web renderer
- Base URL: Configured for GitHub Pages subdirectory (
/my_Portfolio/) - Live URL: https://hazzemsaid.github.io/my_Portfolio/
To deploy manually:
# Build for web with correct base URL
flutter build web --release --base-href /my_Portfolio/
# The built files will be in build/web/
# Upload these files to your GitHub Pages or hosting serviceIMPORTANT: Follow these steps in your GitHub repository:
-
Enable GitHub Pages:
- Go to your repository on GitHub
- Click Settings tab
- Scroll to Pages in the left sidebar
- Under Source, select "GitHub Actions"
- Save the settings
-
Set Workflow Permissions:
- In Settings โ Actions โ General
- Under Workflow permissions, select "Read and write permissions"
- Check "Allow GitHub Actions to create and approve pull requests"
- Save the settings
-
Configure workflow (already included in
.github/workflows/deploy.yml) -
Custom domain (optional): Add CNAME file for custom domain
After setup, push your code and the site will be available at: https://hazzemsaid.github.io/my_Portfolio/
The deployment uses these optimizations:
- Release Mode: Optimized for production with tree shaking and minification
- Base URL: Proper routing for GitHub Pages subdirectory
- Web Optimization: Automatic web-specific optimizations
- Asset Bundling: Efficient asset loading and caching
flutter: ^3.8.1cupertino_icons: ^1.0.8flutter_svg: ^2.0.10+1go_router: ^16.1.0
This app works best on modern browsers that support:
- CSS Grid and Flexbox
- Smooth scrolling
- Modern JavaScript features
- The app uses
SingleChildScrollViewfor smooth scrolling - Images and heavy content should be optimized
- Consider using
ListView.builderfor large lists - Use
constconstructors where possible for better performance
- Add scroll-based animations
- Implement contact form functionality
- Add image assets for projects
- Add resume download functionality
- Implement analytics tracking
- Add SEO optimization for web
- Add loading animations
- Implement dark/light theme toggle
Feel free to contribute to this project by:
- Reporting bugs
- Suggesting new features
- Submitting pull requests
- Improving documentation
This project is open source and available under the MIT License.
- Design inspired by Hazem Said's portfolio
- Built with Flutter and Material Design 3
- Smooth scroll navigation implementation "# my_Portfolio"