A robust, cross-platform Flutter application designed to browse, search, and analyze StackOverflow users with comprehensive offline support. This project demonstrates modern mobile development practices, including Clean Architecture, offline-first design, and real-time network handling.
This application is built to run seamlessly on all major platforms:
| Platform | Support |
|---|---|
| Android | ✅ |
| iOS | ✅ |
| Web | ✅ |
| MacOS | ✅ |
| Windows | ✅ |
| Linux | ✅ |
- Top User Listing: Fetches users sorted by reputation (descending) from the StackOverflow API
- Smart Search: Intelligent search that detects input type:
- Numeric Input: Direct search by User ID
- String Input: Search by username
- Pagination: Supports infinite scrolling to load large lists of users efficiently (30 users per page)
- Rate Limiting: Automatic backoff handling to respect API limits
- Reputation History: Comprehensive view of user reputation changes over time
- Interactive Charts: Beautiful visualizations using
fl_chartfor reputation growth analysis - Cumulative Tracking: Real-time calculation of cumulative reputation points
- Historical Data: Access up to 100 reputation change events per user
- Offline Mode: Browse previously visited profiles and user lists without internet connection
- Local Persistence: Uses Hive (NoSQL database) to cache:
- User Profiles
- Reputation History
- Complete User Lists
- Smart Network Handling: Automatic switching between Remote (API) and Local (Hive) data sources based on connectivity
- Connection Monitoring: Real-time network status detection using
internet_connection_checker
- Bookmarking System: Save and manage favorite users locally
- Featured Profile: Dedicated section showcasing Muhammad's StackOverflow profile
- Cache Management: Ability to flush and refresh cached data
- Custom Fonts: Professional typography with Roboto and Gilroy font families
- SVG Support: Crisp vector graphics rendering
- Cached Images: Optimized image loading with caching
- URL Launcher: Direct links to StackOverflow profiles
- Custom Splash Screen: Branded app launch experience
This project follows Clean Architecture principles with clear separation of concerns, ensuring scalability, testability, and maintainability.
┌─────────────────────────────────────────┐
│ Presentation Layer │
│ (UI, Providers, Services) │
├─────────────────────────────────────────┤
│ Domain Layer │
│ (Repositories, Business Logic) │
├─────────────────────────────────────────┤
│ Data Layer │
│ (Remote DS, Local DS, Models) │
└─────────────────────────────────────────┘
- Language: Dart ^3.10.1
- Framework: Flutter ^3.38.3
- State Management: Provider
- Dependency Injection: GetIt (Service Locator pattern)
- Functional Programming: Dartz (Either/Failure handling)
| Category | Library | Purpose |
|---|---|---|
| Networking | dio ^5.9.0 |
HTTP client for API requests |
pretty_dio_logger ^1.4.0 |
Request/response logging | |
| Local Storage | hive ^2.2.3 |
High-performance NoSQL database |
hive_flutter ^1.1.0 |
Flutter-specific Hive integration | |
shared_preferences ^2.5.4 |
Key-value storage | |
| Navigation | go_router ^17.0.0 |
Declarative routing |
| Network Monitoring | internet_connection_checker ^3.0.1 |
Real-time connectivity status |
| UI Components | fl_chart ^1.1.1 |
Advanced chart visualization |
flutter_svg ^2.2.3 |
SVG rendering | |
cached_network_image ^3.4.1 |
Optimized image loading | |
| Utilities | intl ^0.20.2 |
Internationalization and formatting |
logger ^2.6.2 |
Structured logging | |
url_launcher ^6.3.2 |
External URL handling |
This project includes a full testing suite to ensure code quality, reliability, and UI correctness across all layers.
Unit tests validate business logic inside the Data and Domain layers. These tests cover:
- API request handling with mocked responses
- Remote Data Source behavior
- User and reputation model parsing
- Reputation history cumulative calculation
- Search input logic (numeric vs text)
- Repository error handling using Either
Tools used:
flutter_testmockitowith generated mocksdartzfor functional validation
Widget tests ensure the UI behaves correctly under various states and interactions. These tests include:
- Rendering empty states
- Rendering user lists
- Bookmark toggling and filtered views
- Floating action button visibility
- Network connectivity-driven UI updates
- GoRouter navigation tests
Tools used:
flutter_testmockitoproviderwith mock providersgo_routertest utilities
- Network Check: Repository checks internet connectivity
- Cache First: If offline, loads data from Hive cache
- API Request: If online, fetches fresh data from StackOverflow API
- Cache Update: Stores new data locally for offline access
- Error Handling: Uses Either monad for functional error management
- Fetches top 30 users per page sorted by reputation
- Supports pagination for browsing thousands of users
- Caches entire user list for offline browsing
- Smart detection: numeric input searches by ID, text searches by name
- Returns up to 100 results for name searches
- Handles API backoff automatically
- Fetches up to 100 reputation events
- Calculates cumulative reputation over time
- Reverses chronological order for proper cumulative calculation
- Visualizes data with interactive charts
- All viewed data cached automatically
- Bookmarks stored locally
- Profile data persists between sessions
- Manual cache flush option available
- Flutter SDK ^3.38.3
- Dart SDK ^3.10.1
- Android Studio / Xcode / VS Code
- Git
- Clone the repository:
git clone https://github.com/xSuperMu/StackOverflow-User-List.git
cd stackoverflow_user_list- Install dependencies:
flutter pub get- Generate Hive adapters:
flutter pub run build_runner build --delete-conflicting-outputs- Run the app:
# For Android/iOS
flutter run
# For Web
flutter run -d chrome
# For Desktop (Windows/MacOS/Linux)
flutter run -d windows
flutter run -d macos
flutter run -d linuxThe app uses the StackExchange API v2.2/2.3. Key endpoints:
- User listing with reputation sorting
- User search by ID or name
- Reputation history tracking
- Badge counts and user profiles
Hive boxes configured for:
users- General user cachemuhammad- Featured profile cache_muhammadReputation- Reputation history cache
Muhammad Elsayed
Senior Flutter Engineer | Full Stack Firebase Engineer
- Email: muhammad.elsayed.work@gmail.com
- Phone: +201025444626
- Built with Clean Architecture for separation of concerns
- Uses Provider for efficient state management
- Implements Repository Pattern for data abstraction
- Follows SOLID principles throughout the codebase
- Includes comprehensive error handling with functional programming patterns
- Optimized for both online and offline scenarios
Version: 0.0.1+1
Last Updated: 2025