AmirReza Jamali deda384aaa Harden AuthInterceptor: retry guard, single-flight refresh, shared pref keys
Addresses PR review on the auth interceptor:

- Guard against unbounded retry recursion: tag the replayed request with
  extra['auth_retried'] and skip the refresh/replay path on a second 401 so
  it can't recurse refresh -> replay indefinitely. Drop the redundant manual
  Authorization header on the replay (onRequest re-injects it).
- Fix the concurrent-refresh race: coalesce concurrent 401s onto a single
  in-flight refresh future so the rotating refresh token is only consumed
  once, instead of later refreshes posting an already-consumed token and
  spuriously logging out. (Chose the shared-future approach over
  QueuedInterceptor, which deadlocks with the replay-via-same-Dio pattern.)
- Centralise the 'bearer' / 'refresh_token' / 'customer_data' pref keys in
  a PrefKeys constants class used by the interceptor, network manager, auth
  service and router so they can't silently diverge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 12:21:03 +03:30
2026-04-16 09:10:37 +03:30
2026-03-09 16:12:50 +03:30
2025-08-02 10:32:37 +03:30
2025-09-16 08:36:03 +03:30
2025-08-09 14:15:02 +03:30
2026-03-09 16:12:50 +03:30
2026-04-16 09:10:37 +03:30
2025-08-05 08:40:49 +03:30

Tender Management App

A Flutter-based mobile application for managing and tracking tenders, providing users with an intuitive interface to browse, track, and manage tender opportunities.

Features

  • User Authentication: Secure login system with user authentication
  • Home Dashboard: Overview of tender statistics and quick access to recent tenders
  • Tender Management: Browse and manage tenders with filtering and sorting capabilities
  • User Profile: Personalized user profile management
  • Bottom Navigation: Easy navigation between main sections of the app

Getting Started

Prerequisites

  • Flutter SDK (3.0.0 or higher)
  • Dart SDK (3.0.0 or higher)
  • Android Studio / VS Code with Flutter plugins
  • An Android or iOS device/emulator for testing

Installation

  1. Clone the repository:

    git clone [repository-url]
    cd tm_app
    
  2. Install dependencies:

    flutter pub get
    
  3. Run the app:

    flutter run
    

Project Structure

tm_app/
├── lib/
│   ├── common/           # Shared components and widgets
│   │   └── widgets/      # Common UI components
│   ├── core/             # Core functionality
│   │   ├── config/       # App configuration
│   │   ├── constants/    # App constants (colors, strings, assets)
│   │   ├── routes/       # Navigation and routing
│   │   └── utils/        # Utility functions and helpers
│   ├── data/             # Data layer
│   │   ├── models/       # Data models
│   │   ├── repositories/ # Data repositories
│   │   └── services/     # API services
│   ├── view_models/      # Business logic and state management
│   ├── views/            # UI screens and pages
│   │   ├── home/         # Home screen components
│   │   ├── login/        # Login screen and widgets
│   │   ├── profile/      # User profile screen
│   │   └── tenders/      # Tender management screens
│   └── main.dart         # App entry point
├── assets/               # Images, icons, and other assets
├── android/              # Android-specific configuration
├── ios/                  # iOS-specific configuration
└── test/                 # Unit and widget tests

Key Components

Authentication

  • Login screen with custom UI components
  • Authentication service and repository for user management
  • Secure credential handling

Home Screen

  • Statistics dashboard showing tender metrics
  • Progress bars for visual data representation
  • Quick access to recent tenders list

Tender Management

  • Main tender screen with tabbed interface
  • Tender cards with detailed information
  • Action buttons for tender interactions (like/dislike)
  • Slider for featured tenders

Navigation

  • Bottom navigation bar for main sections
  • Go Router for navigation management
  • Shell route for persistent navigation

Technologies Used

  • Flutter: Cross-platform mobile framework
  • Dart: Programming language
  • Go Router: Navigation and routing
  • Provider/Riverpod: State management (based on view models structure)

Assets

The app uses custom SVG icons and PNG images located in:

  • /assets/icons/ - SVG icons for UI elements
  • /assets/pngs/ - PNG images including logo
  • /assets/svgs/ - Additional SVG assets

Building for Production

Android

flutter build apk --release

iOS

flutter build ios --release

Contributing

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

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

Support

For support and questions, please open an issue in the project repository.

S
Description
No description provided
Readme 7.1 MiB
Languages
Dart 99.4%
JavaScript 0.2%
Ruby 0.2%
HTML 0.1%