A Flutter application showcasing David Kisbey-Green's CV with GitHub repository integration.
- Personal CV Display: Interactive landing page with experience, education, skills, and portfolio
- GitHub Projects: Dynamic loading and display of GitHub repositories with filtering and search
- Responsive Design: Works on web and mobile platforms
- Theme Support: Light and dark theme modes
- Caching: Intelligent caching for GitHub data with stale-while-revalidate pattern
The app includes a Projects page that fetches and displays your GitHub repositories with the following features:
- Repository Cards: Display repository information including stars, forks, language, and topics
- Search: Real-time search through repository names
- Topic Filtering: Filter repositories by topics with multi-select chips
- Sorting: Sort by last updated, star count, or name
- Roadmap Support: Special handling for the ai-cyber-security-roadmaprepository
- Caching: 15-minute cache with background refresh
The app requires a GitHub username to fetch repositories. Set this via --dart-define:
flutter run --dart-define=GITHUB_USERNAME=your-github-usernameFor increased GitHub API rate limits, you can provide a Personal Access Token:
flutter run --dart-define=GITHUB_USERNAME=your-github-username --dart-define=GITHUB_TOKEN=your-pat-tokenWhen building for production, include the environment variables:
# Web
flutter build web --dart-define=GITHUB_USERNAME=your-github-username --dart-define=GITHUB_TOKEN=your-pat-token
# Android
flutter build apk --dart-define=GITHUB_USERNAME=your-github-username --dart-define=GITHUB_TOKEN=your-pat-token
# iOS
flutter build ios --dart-define=GITHUB_USERNAME=your-github-username --dart-define=GITHUB_TOKEN=your-pat-token- Flutter SDK (>=3.0.3)
- Dart SDK
- Firebase CLI (for deployment)
- 
Install dependencies: flutter packages get 
- 
Generate required files: dart run build_runner build --delete-conflicting-outputs 
- 
Run the app: flutter run --dart-define=GITHUB_USERNAME=your-github-username 
Run the test suite:
flutter testThe app follows a clean architecture pattern with:
- Data Layer: API clients, DTOs, and repositories with caching
- Domain Layer: Business logic and entities
- Presentation Layer: UI components and state management
- State Management: Riverpod for reactive state management
- Flutter: UI framework
- Riverpod: State management
- Dio: HTTP client for GitHub API
- SharedPreferences: Local caching
- Auto Route: Navigation
- MobX: State management for existing features
- Firebase: Analytics and crashlytics
This project is private and proprietary.