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: nitishsghh@gmail.com
- 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