Skip to content

This repository contains the source code for my personal portfolio website, designed to showcase my skills, projects, and achievements in a professional and engaging way. Built with Next.js, TypeScript, Tailwind CSS, and Framer Motion, it delivers a modern, responsive, and visually appealing experience across devices.

License

Notifications You must be signed in to change notification settings

thenitishmind/NitishApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 Nitish Portfolio - Flutter Application

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.

πŸ“‘ Table of Contents

✨ Features

🎯 Core Features

  • 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

πŸ› οΈ Technical Features

  • 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

πŸ—οΈ Project Architecture

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
Loading

πŸ“ Project Structure

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

πŸ”§ Core Modules

🧭 Navigation Module (core/router/)

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

🎨 Theme Module (core/theme/)

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

πŸ“Š Data Models (models/)

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

πŸ”„ State Management (providers/)

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

πŸ› οΈ Services Module (core/services/)

Purpose: Business logic and external service integrations

  • testimonials_service.dart:
    • Testimonials data fetching
    • Client reviews management
    • Service layer abstraction
    • Mock data provision for development

πŸ“± Screens & Components

🏠 HomeScreen (screens/home_screen.dart)

Purpose: Main landing page with comprehensive overview

Components Used:

  • HeroSection: Introduction and call-to-action
  • WorkSection: Work approach and methodology
  • ProjectsSection: Featured projects preview
  • TestimonialsSection: Client feedback

Features:

  • Animated section loading
  • Scroll-based animations
  • Responsive grid layouts
  • GitHub data integration

πŸ‘€ AboutScreen (screens/about_screen.dart)

Purpose: Detailed personal and professional information

Features:

  • Skills showcase with chips
  • Professional summary
  • Interactive elements
  • Responsive card layout

πŸ’Ό ProjectsScreen (screens/projects_screen.dart)

Purpose: Complete projects gallery

Features:

  • Grid layout with project cards
  • Technology tag filtering
  • Project preview images
  • Navigation to detail pages

πŸ” ProjectDetailScreen (screens/project_detail_screen.dart)

Purpose: Individual project showcase

Features:

  • Detailed project information
  • Technology stack display
  • External links (GitHub, Live Demo)
  • Responsive image gallery

πŸ“ž ContactScreen (screens/contact_screen.dart)

Purpose: Contact form and information

Features:

  • Validated contact form
  • Success/error messaging
  • Contact information display
  • Form submission handling
  • Development debugging tools

πŸ“Š Data Flow & Workflow

πŸ”„ Application Initialization Workflow

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
Loading

🌐 GitHub Integration Workflow

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)
Loading

πŸ“± Navigation Workflow

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
    }
Loading

🎨 Theme & UI Workflow

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
Loading

πŸš€ Quick Start

πŸ“‹ Prerequisites

  • 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.

⚑ Installation

# 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>

πŸ—οΈ Building for Production

# 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

πŸ“¦ Dependencies

🎯 Core Dependencies

# 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

🌐 Network & Data

# 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

πŸ› οΈ Utilities & Tools

# 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

🎨 Design System

🎨 Color Palette

// 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

πŸ“ Typography Scale

// 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 spacing

🧩 Component Specifications

πŸ“± Cards

Border Radius:    16px
Elevation:        4dp
Shadow Color:     Black 30% opacity
Border:           Border color 20% opacity
Padding:          16px internal
Margin:           16px between cards

πŸ”˜ Buttons

Primary 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% background

πŸ“ Input Fields

Border Radius:    16px
Fill Color:       Surface color
Border Color:     Border color 30% opacity
Focus Color:      Primary Purple 2px
Label Color:      Text Muted
Padding:          16px internal

πŸ“ˆ Performance Features

⚑ Optimization Strategies

  1. Lazy Loading

    • Images loaded on-demand
    • Sections loaded as user scrolls
    • Project data fetched progressively
  2. Caching System

    • Network images cached automatically
    • API responses cached locally
    • Smart cache invalidation
  3. Memory Management

    • Efficient widget disposal
    • Image memory cleanup
    • Provider state cleanup
  4. Bundle Optimization

    • Tree shaking for unused code
    • Asset compression
    • Font subsetting

πŸ“Š Performance Metrics

// 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)

πŸ”„ Development Workflow

πŸ”„ Git Workflow

# 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

πŸ§ͺ Testing Strategy

# 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

πŸ“‹ Code Quality Checklist

  • 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

πŸ”§ Configuration & Customization

πŸ”‘ GitHub Configuration

// 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):

  1. Go to GitHub Token Settings
  2. Click "Generate new token (classic)"
  3. Give it a name like "Portfolio App"
  4. Select scopes: public_repo and read:user
  5. Copy the token and update the config file

🎨 Theme Customization

// 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,
),

πŸ“± Platform-Specific Configuration

# 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>

🚨 Troubleshooting

πŸ” Common Issues & Solutions

Build Errors

# Clean build cache
flutter clean
flutter pub get
flutter run

# Clear gradle cache (Android)
cd android && ./gradlew clean && cd ..

Web-Specific Issues

# 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

Performance Issues

# Run in release mode
flutter run --release

# Analyze bundle size
flutter build apk --analyze-size
flutter build web --analyze-size

πŸ“Š Debugging Tools

// 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');

πŸ“„ License & Contributing

πŸ“œ License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

🀝 Contributing Guidelines

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“ž Support & Contact

  • Email: [email protected]
  • GitHub Issues: Create an issue for bug reports or feature requests
  • Documentation: Comprehensive docs in /docs folder

🎯 Quick Reference

πŸ“± Supported Platforms

βœ… Android (API 21+) | βœ… iOS (11.0+) | βœ… Web (PWA) | βœ… Windows (10+) | βœ… macOS (10.14+) | βœ… Linux (Ubuntu 18.04+)

⚑ Key Commands

flutter run                    # Development
flutter build web --release   # Production build
flutter test                   # Run tests
flutter doctor                 # Health check
flutter clean                  # Clean cache

🌟 Key Features

🎨 Modern UI | πŸ“± Responsive | ⚑ Fast | πŸ”„ Real-time Data | 🎯 SEO Ready | β™Ώ Accessible


Built with ❀️ using Flutter by Nitish Singh

Last Updated: December 2024

About

This repository contains the source code for my personal portfolio website, designed to showcase my skills, projects, and achievements in a professional and engaging way. Built with Next.js, TypeScript, Tailwind CSS, and Framer Motion, it delivers a modern, responsive, and visually appealing experience across devices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages