A comprehensive, modern portfolio application built with Flutter that showcases professional projects, skills, and experience. This cross-platform app features a sleek dark theme, smooth animations, and responsive design optimized for all devices.
- β¨ Features
 - ποΈ Project Architecture
 - π Project Structure
 - π§ Core Modules
 - π± Screens & Components
 - π Data Flow & Workflow
 - π Quick Start
 - π¦ Dependencies
 - π¨ Design System
 - π Performance Features
 - π Development Workflow
 
- Cross-Platform: Android, iOS, Web, Windows, macOS, Linux support
 - Responsive Design: Adaptive layouts for mobile, tablet, and desktop
 - Modern UI: Dark theme with neon accents and glassmorphism effects
 - Smooth Animations: Flutter Animate for engaging user interactions
 - GitHub Integration: Live project data fetched from GitHub API
 - Navigation: GoRouter for seamless page transitions and deep linking
 - State Management: Provider pattern for efficient data handling
 - Performance Optimized: Cached network images and lazy loading
 
- Material 3 Design: Latest Material Design guidelines
 - Type Safety: Full null safety implementation
 - Code Quality: Comprehensive error handling and validation
 - Modular Architecture: Clean separation of concerns
 - Internationalization Ready: Structure supports multiple languages
 - Accessibility: Screen reader support and semantic labels
 
graph TD
    A[main.dart] --> B[MultiProvider]
    B --> C[MaterialApp.router]
    C --> D[GoRouter]
    
    D --> E[MainLayout]
    E --> F[CustomAppBar]
    E --> G[CustomDrawer]
    E --> H[CustomBottomNav]
    E --> I[Screen Content]
    
    I --> J[HomeScreen]
    I --> K[AboutScreen]
    I --> L[ProjectsScreen]
    I --> M[ContactScreen]
    I --> N[ProjectDetailScreen]
    
    B --> O[GithubProvider]
    B --> P[NavigationProvider]
    
    O --> Q[GitHub API]
    P --> R[Route Management]
    
    style A fill:#7C3AED,stroke:#fff,color:#fff
    style B fill:#EC4899,stroke:#fff,color:#fff
    style D fill:#22D3EE,stroke:#000,color:#000
    flutter_portfolio/
βββ π lib/
β   βββ π core/                    # Core application modules
β   β   βββ π router/              # Navigation & routing
β   β   β   βββ app_router.dart     # GoRouter configuration
β   β   βββ π theme/               # Design system & theming
β   β       βββ app_theme.dart      # App-wide theme configuration
β   β
β   βββ π models/                  # Data models & entities
β   β   βββ github_user.dart        # GitHub user data model
β   β   βββ project.dart            # GitHub project model
β   β   βββ portfolio_project.dart  # Portfolio project model
β   β
β   βββ π providers/               # State management
β   β   βββ github_provider.dart    # GitHub API state management
β   β   βββ navigation_provider.dart # Navigation state management
β   β
β   βββ π screens/                 # Page screens
β   β   βββ home_screen.dart        # Landing page with hero section
β   β   βββ about_screen.dart       # About me page
β   β   βββ projects_screen.dart    # Projects gallery
β   β   βββ project_detail_screen.dart # Individual project details
β   β   βββ contact_screen.dart     # Contact form & information
β   β
β   βββ π widgets/                 # Reusable UI components
β   β   βββ π common/              # Shared components
β   β   β   βββ custom_app_bar.dart      # Adaptive app bar
β   β   β   βββ custom_bottom_nav.dart   # Mobile bottom navigation
β   β   β   βββ custom_drawer.dart       # Mobile drawer menu
β   β   β   βββ main_layout.dart         # Main app layout wrapper
β   β   β
β   β   βββ π home/                # Home screen widgets
β   β       βββ hero_section.dart        # Hero banner with introduction
β   β       βββ about_section.dart       # About summary section
β   β       βββ skills_section.dart      # Skills with progress bars
β   β       βββ experience_section.dart  # Work experience timeline
β   β       βββ work_section.dart        # Work approach highlights
β   β       βββ projects_section.dart    # Featured projects grid
β   β       βββ testimonials_section.dart # Client testimonials
β   β       βββ testimonials_section_with_provider.dart # Enhanced testimonials with state management
β   β
β   βββ main.dart                   # Application entry point
β
βββ π web/                         # Web-specific files
β   βββ index.html                  # Web app entry point
β   βββ manifest.json               # PWA manifest
β
βββ π assets/                      # Static assets
β   βββ π images/                  # Image assets
β   βββ π icons/                   # Icon assets
β   βββ π animations/              # Animation files
β
βββ π android/                     # Android-specific configuration
βββ π ios/                         # iOS-specific configuration
βββ π windows/                     # Windows-specific configuration
βββ π macos/                       # macOS-specific configuration
βββ π linux/                       # Linux-specific configuration
β
βββ pubspec.yaml                    # Dependencies & metadata
βββ pubspec.lock                    # Dependency lock file
βββ README.md                       # Project documentation
Purpose: Handles all application routing and navigation logic
- app_router.dart: GoRouter configuration with route definitions
- Routes: 
/,/about,/projects,/projects/:id,/contact - Features: Deep linking, route guards, nested navigation
 - Shell Route: Wraps pages with consistent layout
 
 - Routes: 
 
Purpose: Centralized design system and theming
- app_theme.dart: Complete theme configuration
- Color Palette: Dark theme with neon accents
 - Typography: Google Fonts (Inter) with consistent sizing
 - Material 3: Updated to latest Material Design specs
 - Custom Styles: Cards, buttons, input fields, shadows
 
 
Purpose: Data structure definitions and business logic
- github_user.dart: GitHub user profile data structure
 - project.dart: Comprehensive GitHub project model with metadata
 - portfolio_project.dart: Simplified project model for portfolio display
 - testimonial.dart: Client testimonials data model with rating and feedback structure
 
Purpose: Application state management using Provider pattern
- 
github_provider.dart:
- GitHub API integration
 - Project data fetching and caching
 - Error handling and retry logic
 - Loading states management
 
 - 
navigation_provider.dart:
- Current route tracking
 - Navigation history
 - Menu state management
 - Responsive navigation logic
 
 - 
testimonials_provider.dart:
- Testimonials data management
 - Client feedback state handling
 - Dynamic testimonials loading
 - Integration with testimonials service
 
 
Purpose: Business logic and external service integrations
- testimonials_service.dart:
- Testimonials data fetching
 - Client reviews management
 - Service layer abstraction
 - Mock data provision for development
 
 
Purpose: Main landing page with comprehensive overview
Components Used:
HeroSection: Introduction and call-to-actionWorkSection: Work approach and methodologyProjectsSection: Featured projects previewTestimonialsSection: Client feedback
Features:
- Animated section loading
 - Scroll-based animations
 - Responsive grid layouts
 - GitHub data integration
 
Purpose: Detailed personal and professional information
Features:
- Skills showcase with chips
 - Professional summary
 - Interactive elements
 - Responsive card layout
 
Purpose: Complete projects gallery
Features:
- Grid layout with project cards
 - Technology tag filtering
 - Project preview images
 - Navigation to detail pages
 
Purpose: Individual project showcase
Features:
- Detailed project information
 - Technology stack display
 - External links (GitHub, Live Demo)
 - Responsive image gallery
 
Purpose: Contact form and information
Features:
- Validated contact form
 - Success/error messaging
 - Contact information display
 - Form submission handling
 - Development debugging tools
 
flowchart TD
    Start([App Starts]) --> Init[main.dart Initializes]
    Init --> Provider[Setup MultiProvider]
    Provider --> Router[Initialize GoRouter]
    Router --> Layout[Load MainLayout]
    
    Layout --> AppBar[Setup CustomAppBar]
    Layout --> Drawer[Setup CustomDrawer]
    Layout --> BottomNav[Setup CustomBottomNav]
    Layout --> Content[Load Page Content]
    
    Provider --> GitHub[Initialize GithubProvider]
    Provider --> Nav[Initialize NavigationProvider]
    
    GitHub --> API[Fetch GitHub Data]
    API --> Cache[Cache Data Locally]
    Cache --> Display[Display in UI]
    
    Nav --> Route[Track Current Route]
    Route --> Update[Update Navigation UI]
    
    Content --> Home[HomeScreen]
    Content --> About[AboutScreen]
    Content --> Projects[ProjectsScreen]
    Content --> Contact[ContactScreen]
    Content --> Detail[ProjectDetailScreen]
    
    style Start fill:#7C3AED,stroke:#fff,color:#fff
    style Provider fill:#EC4899,stroke:#fff,color:#fff
    style API fill:#22D3EE,stroke:#000,color:#000
    sequenceDiagram
    participant UI as User Interface
    participant GP as GithubProvider
    participant API as GitHub API
    participant Cache as Local Storage
    
    UI->>GP: Request Projects Data
    GP->>Cache: Check for Cached Data
    
    alt Cache Hit
        Cache->>GP: Return Cached Data
        GP->>UI: Display Cached Data
        GP->>API: Fetch Fresh Data (Background)
    else Cache Miss
        GP->>UI: Show Loading State
        GP->>API: Fetch Projects Data
    end
    
    API->>GP: Return API Response
    GP->>GP: Process & Transform Data
    GP->>Cache: Store New Data
    GP->>UI: Update UI with Fresh Data
    
    Note over UI,Cache: Error Handling
    API-->>GP: API Error
    GP->>UI: Show Error Message
    GP->>Cache: Return Cached Data (if available)
    stateDiagram-v2
    [*] --> Home
    
    Home --> About : Navigate to About
    Home --> Projects : Navigate to Projects
    Home --> Contact : Navigate to Contact
    
    About --> Home : Back to Home
    About --> Projects : Navigate to Projects
    About --> Contact : Navigate to Contact
    
    Projects --> ProjectDetail : Select Project
    Projects --> Home : Back to Home
    Projects --> About : Navigate to About
    Projects --> Contact : Navigate to Contact
    
    ProjectDetail --> Projects : Back to Projects
    ProjectDetail --> Home : Navigate to Home
    
    Contact --> Home : Back to Home
    Contact --> About : Navigate to About
    Contact --> Projects : Navigate to Projects
    
    state Projects {
        [*] --> ProjectList
        ProjectList --> ProjectGrid : Grid View
        ProjectGrid --> ProjectList : List View
    }
    
    state ResponsiveLayout {
        Mobile --> Drawer
        Mobile --> BottomNav
        Desktop --> TopNav
        Tablet --> AdaptiveNav
    }
    graph LR
    A[App Launch] --> B[Load AppTheme]
    B --> C[Apply Material 3]
    C --> D[Set Color Scheme]
    D --> E[Configure Typography]
    E --> F[Setup Component Themes]
    
    F --> G[Button Styles]
    F --> H[Card Styles]
    F --> I[Input Styles]
    F --> J[Navigation Styles]
    
    G --> K[Apply to Widgets]
    H --> K
    I --> K
    J --> K
    
    K --> L[Responsive Breakpoints]
    L --> M[Mobile Layout]
    L --> N[Tablet Layout]
    L --> O[Desktop Layout]
    
    style A fill:#7C3AED,stroke:#fff,color:#fff
    style D fill:#EC4899,stroke:#fff,color:#fff
    style L fill:#22D3EE,stroke:#000,color:#000
    - Flutter SDK: 3.32.0 or higher
 - Dart SDK: 3.0.0 or higher
 - IDE: Android Studio / VS Code with Flutter extensions
 - Git: Version control
 - Platform SDKs: Android SDK, Xcode (for iOS), etc.
 
# 1. Clone the repository
git clone <repository-url>
cd flutter_portfolio
# 2. Install dependencies
flutter pub get
# 3. Run flutter doctor to check setup
flutter doctor
# 4. Accept Android licenses (if needed)
flutter doctor --android-licenses
# 5. Run the application
flutter run
# For web development
flutter run -d chrome
# For specific device
flutter devices
flutter run -d <device-id># Android APK
flutter build apk --release --target-platform=android-arm64
# Android App Bundle (Recommended for Play Store)
flutter build appbundle --release
# iOS (requires macOS and Xcode)
flutter build ios --release
# Web (Progressive Web App)
flutter build web --release --web-renderer html
# Desktop Applications
flutter build windows --release
flutter build macos --release
flutter build linux --release# Framework
flutter: sdk
flutter_web_plugins: sdk
# Navigation
go_router: ^12.1.3        # Declarative routing
# State Management  
provider: ^6.1.5          # Provider pattern for state
# UI & Styling
google_fonts: ^6.3.0      # Typography
flutter_animate: ^4.5.2   # Smooth animations
lottie: ^2.7.0            # Vector animations
shimmer: ^3.0.0           # Loading effects# HTTP Clients
dio: ^5.9.0               # Advanced HTTP client
http: ^1.5.0              # Basic HTTP requests
# Image Handling
cached_network_image: ^3.4.1  # Image caching
flutter_svg: ^2.2.0          # SVG support
# Local Storage
shared_preferences: ^2.5.3   # Key-value storage# External Integrations
url_launcher: ^6.3.2         # External URLs
# UI Enhancements
flutter_staggered_grid_view: ^0.7.0  # Advanced grids
# Development
flutter_lints: ^3.0.2        # Code quality// Primary Colors
Primary Purple:   #7C3AED  // Main brand color
Primary Light:    #8B5CF6  // Hover states
Primary Dark:     #6D28D9  // Active states
// Secondary Colors
Secondary Pink:   #EC4899  // Accent elements
Secondary Light:  #F472B6  // Highlights
Secondary Dark:   #DB2777  // Emphasis
// Accent Colors
Accent Cyan:      #22D3EE  // Call-to-action
Accent Light:     #67E8F9  // Interactive elements
Accent Dark:      #06B6D4  // Pressed states
// Neutral Colors
Background:       #0F0F17  // Main background
Surface:          #1E1E2E  // Card backgrounds
Surface Elevated: #28283B  // Raised elements
Border:           #334155  // Dividers & outlines
// Text Colors
Text Primary:     #FFFFFF  // Main text
Text Secondary:   #CBD5E1  // Supporting text
Text Muted:       #94A3B8  // Subtle text// Display Text (Hero sections)
Display Large:    56px, Weight 800, -0.02 letter spacing
Display Medium:   45px, Weight 700, -0.02 letter spacing
Display Small:    36px, Weight 700, -0.01 letter spacing
// Headlines (Section titles)
Headline Large:   32px, Weight 700, -0.01 letter spacing
Headline Medium:  28px, Weight 600, -0.01 letter spacing
Headline Small:   24px, Weight 600, normal letter spacing
// Body Text (Content)
Body Large:       18px, Weight 400, 1.7 line height
Body Medium:      16px, Weight 400, 1.6 line height
Body Small:       14px, Weight 400, 1.5 line height
// Labels (Buttons, chips)
Label Large:      14px, Weight 500, 0.05 letter spacingBorder Radius:    16px
Elevation:        4dp
Shadow Color:     Black 30% opacity
Border:           Border color 20% opacity
Padding:          16px internal
Margin:           16px between cardsPrimary Button:   
  - Background: Primary Purple
  - Text: White
  - Border Radius: 16px
  - Padding: 16px vertical, 32px horizontal
  - Elevation: 4dp
Secondary Button:
  - Background: Transparent
  - Border: Primary Purple 2px
  - Text: Primary Purple
  - Hover: Primary Purple 10% backgroundBorder Radius:    16px
Fill Color:       Surface color
Border Color:     Border color 30% opacity
Focus Color:      Primary Purple 2px
Label Color:      Text Muted
Padding:          16px internal- 
Lazy Loading
- Images loaded on-demand
 - Sections loaded as user scrolls
 - Project data fetched progressively
 
 - 
Caching System
- Network images cached automatically
 - API responses cached locally
 - Smart cache invalidation
 
 - 
Memory Management
- Efficient widget disposal
 - Image memory cleanup
 - Provider state cleanup
 
 - 
Bundle Optimization
- Tree shaking for unused code
 - Asset compression
 - Font subsetting
 
 
// Target Performance Goals
App Launch Time:     < 2 seconds
Page Transitions:    < 300ms
Image Load Time:     < 1 second
API Response:        < 2 seconds
Memory Usage:        < 100MB
Bundle Size:         < 10MB (web)# Feature Development
git checkout -b feature/new-feature
git add .
git commit -m "feat: add new feature"
git push origin feature/new-feature
# Create Pull Request
# Code Review
# Merge to main
# Release Process
git checkout main
git pull origin main
git tag v1.0.1
git push origin --tags# Unit Tests
flutter test test/
# Widget Tests
flutter test test/widgets/
# Integration Tests
flutter drive --target=test_driver/app.dart
# Code Coverage
flutter test --coverage
genhtml coverage/lcov.info -o coverage/html- Null Safety: All code uses null safety
 - Linting: No lint warnings or errors
 - Performance: 60fps on target devices
 - Accessibility: Screen reader compatible
 - Responsive: Works on all screen sizes
 - Testing: Unit and widget tests pass
 - Documentation: Code is well documented
 
// lib/core/config/github_config.dart
class GitHubConfig {
  /// Your GitHub username
  static const String username = 'your-github-username';
  
  /// Optional: GitHub Personal Access Token
  /// Increases rate limit from 60 to 5000 requests/hour
  /// Generate at: https://github.com/settings/tokens
  static const String? token = null; // Add your token here
  
  /// Other configurable options
  static const String baseUrl = 'https://api.github.com';
  static const String userAgent = 'Flutter-Portfolio-App/1.0';
  static const int cacheMinutes = 2;
}Setting up GitHub Token (Recommended):
- Go to GitHub Token Settings
 - Click "Generate new token (classic)"
 - Give it a name like "Portfolio App"
 - Select scopes: 
public_repoandread:user - Copy the token and update the config file
 
// Customize colors in lib/core/theme/app_theme.dart
static const Color primary = Color(0xFF7C3AED); // Change primary color
static const Color secondary = Color(0xFFEC4899); // Change secondary color
// Customize fonts
textTheme: GoogleFonts.robotoTextTheme( // Change font family
  ThemeData.dark().textTheme,
),# Android (android/app/build.gradle)
android {
    compileSdkVersion 34
    minSdkVersion 21
    targetSdkVersion 34
}
# iOS (ios/Runner/Info.plist)
<key>CFBundleDisplayName</key>
<string>Nitish Portfolio</string>
<key>CFBundleIdentifier</key>
<string>com.nitish.portfolio</string># Clean build cache
flutter clean
flutter pub get
flutter run
# Clear gradle cache (Android)
cd android && ./gradlew clean && cd ..# Use HTML renderer for better compatibility
flutter run -d chrome --web-renderer html
# Enable CORS for local development
flutter run -d chrome --web-renderer html --disable-web-security# Run in release mode
flutter run --release
# Analyze bundle size
flutter build apk --analyze-size
flutter build web --analyze-size// Enable debug logging
debugPrint('Debug message');
// Performance profiling
Timeline.startSync('operation_name');
// ... your code
Timeline.finishSync();
// Memory profiling
import 'dart:developer' as developer;
developer.log('Memory usage info');This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Fork the repository
 - Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
 
- Email: [email protected]
 - GitHub Issues: Create an issue for bug reports or feature requests
 - Documentation: Comprehensive docs in 
/docsfolder 
β Android (API 21+) | β iOS (11.0+) | β Web (PWA) | β Windows (10+) | β macOS (10.14+) | β Linux (Ubuntu 18.04+)
flutter run                    # Development
flutter build web --release   # Production build
flutter test                   # Run tests
flutter doctor                 # Health check
flutter clean                  # Clean cacheπ¨ Modern UI | π± Responsive | β‘ Fast | π Real-time Data | π― SEO Ready | βΏ Accessible
Built with β€οΈ using Flutter by Nitish Singh
Last Updated: December 2024