Architecture

This document provides an overview of the Catalog application architecture for developers.

Technology Stack

Frontend

Catalog is built using Flutter for cross-platform development:

  • Framework: Flutter 3.x

  • Language: Dart

  • State Management: Provider/Riverpod

  • HTTP Client: Dio

  • Local Storage: SharedPreferences, SQLite

Platforms

The application targets multiple platforms from a single codebase:

  • Web: Flutter Web compiled to JavaScript

  • iOS: Native iOS application

  • Android: Native Android application

  • Desktop: Windows, macOS, Linux via Flutter desktop

Project Structure

Catalog/
├── lib/
│   ├── main.dart           # Application entry point
│   ├── models/             # Data models
│   ├── services/           # API and business logic
│   ├── providers/          # State management
│   ├── screens/            # UI screens
│   ├── widgets/            # Reusable widgets
│   └── utils/              # Utilities and helpers
├── assets/                 # Static assets (images, fonts)
├── config/                 # Configuration files
├── test/                   # Unit and widget tests
└── docs/                   # Documentation (you are here)

Key Components

Services Layer

Services handle external communication and business logic:

  • API Service: HTTP communication with backend services

  • Auth Service: Authentication and session management

  • Search Service: Search query handling and result processing

  • Cache Service: Local caching for offline support

State Management

Application state is managed through:

  • Providers: Dependency injection and state containers

  • Notifiers: Reactive state updates

  • Selectors: Computed/derived state

Data Flow

User Action → Provider → Service → API
                ↓
            State Update
                ↓
            UI Rebuild

Backend Integration

API Communication

Catalog communicates with backend services via:

  • REST APIs for CRUD operations

  • WebSockets for real-time updates

  • GraphQL for complex queries (where applicable)

Authentication

Authentication flow:

  1. User enters credentials

  2. Auth service validates with backend

  3. JWT token stored securely

  4. Token included in subsequent requests

  5. Token refresh handled automatically

Build & Deployment

Build Environments

  • Local: Development builds with debug tools

  • Development: Deployed to dev environment

  • QA: Quality assurance testing

  • Staging: Pre-production verification

  • Production: Live deployment

CI/CD Pipeline

Automated deployment via GitHub Actions:

  1. Code pushed to branch

  2. Build triggered

  3. Tests executed

  4. Docker image created

  5. Deployed to target environment

Configuration

Environment Configuration

Environment-specific settings in config/:

  • API endpoints

  • Feature flags

  • Logging levels

  • Analytics configuration

Runtime Configuration

Some settings configurable at runtime:

  • User preferences

  • Theme settings

  • Cache policies