-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Tiger edited this page Nov 15, 2025
·
2 revisions
Welcome to the Nimble Survey App documentation! This wiki provides comprehensive information about the project architecture, setup, development, and deployment.
Nimble Survey App is a cross-platform mobile application built with Flutter that integrates with Nimble's API to provide a seamless survey experience. The app supports OAuth authentication, survey browsing with caching, and a complete survey-taking workflow.
-
Authentication
- OAuth 2.0 authentication
- Secure login and password reset
- Token management with secure storage
-
Survey Management
- Survey list with local caching
- Pagination support
- Dynamic survey data population
- Multiple question types (NPS, Rating, Checkbox, Dropdown, Text, etc.)
-
Cross-Platform Support
- Android (API 21+)
- iOS (iOS 12+)
- Push notifications on iOS
-
CI/CD Pipeline
- Automated builds for Android and iOS
- Firebase App Distribution
- Multi-environment support (dev, staging, prod)
- Architecture - Application architecture and code structure
- Setup and Installation - Development environment setup
- Testing - Testing strategy and guidelines
- API Integration - Nimble API integration details
- Flutter - Cross-platform UI framework
- Dart - Programming language
- Riverpod 3.0 - Reactive state management
- riverpod_annotation - Code generation for providers
- Dio - HTTP client
- Retrofit - Type-safe REST client
- pretty_dio_logger - Network request logging
- Drift - SQLite database wrapper
- flutter_secure_storage - Encrypted key-value storage
- flutter_cache_manager - Image caching
- go_router - Declarative routing
- build_runner - Code generation tool
- freezed - Code generation for data classes
- json_serializable - JSON serialization
- cached_network_image - Optimized image loading
- shimmer_animation - Loading placeholders
- lottie - Animation support
- smooth_page_indicator - Page indicators
- flutter_lints - Linting rules
- custom_lint - Custom linting
- mocktail - Testing mocks
lib/
├── core/ # Core functionality
│ ├── constants/ # App constants
│ ├── local/ # Local storage (Drift)
│ ├── model/ # Data models
│ ├── network/ # API services
│ ├── provider/ # Riverpod providers
│ ├── repository/ # Repository implementations
│ ├── ui/ # Shared UI components
│ └── utils/ # Utility functions
├── features/ # Feature modules
│ ├── auth/ # Authentication
│ ├── home/ # Home screen with survey list
│ ├── splash/ # Splash screen
│ └── surveydetails/ # Survey details and questions
├── l10n/ # Localization
├── main/ # App initialization
└── main.dart # Entry point
- Setup your development environment
- Clone and configure the project
- Run the app
- Explore the architecture
The app supports three environments:
- Dev - Development environment
- Staging - Staging environment
- Prod - Production environment
Each environment has its own configuration file (.env.dev, .env.staging, .env.prod) with environment-specific API
endpoints and credentials.
This project is proprietary software developed for Nimble.