Skip to content

Orbit App 📱 ​

O aplicativo oficial do Orbit, construído com Flutter, focado em entregar uma experiência social fluida, rica em animações e com recursos avançados de tempo real. Roda nativamente em iOS e Android.


🚀 Tecnologias e Arquitetura ​

TecnologiaPacote / VersãoUso
FlutterSDK Stable, Dart ^3.13.0Framework principal
Gerenciamento de Estadoflutter_bloc ^9.1.1 + CubitLógica de negócio e estado de UI
Navegaçãogo_router ^17.xRoteamento declarativo e deep links
Banco Localobjectbox ^5.xCache offline de alta performance
Code Pushshorebird_code_push ^2.xAtualizações sem revisão de store
Networkingdio ^5.x + web_socket_channel ^3.xHTTP e WebSockets
Autenticaçãofirebase_auth ^6.x + google_sign_in ^7.x + sign_in_with_apple ^8.xLogin multi-provedor
Push Notificationsfirebase_messaging ^16.x + flutter_local_notifications ^22.xFCM + notificações locais
Chamadas A/Vlivekit_client ^2.xVídeo/áudio em grupo (até 8 pessoas)
Jogos Webflutter_inappwebview ^6.x + flame ^1.xWebView (micro-frontends React) + pets
MLgoogle_mlkit_face_detection, google_mlkit_image_labelingDetecção de rosto e objetos
Criptografiacryptography ^2.x + cryptography_flutter ^2.xCriptografia E2E das mensagens
Mídiaimage_picker, camera, video_player, video_editor, pro_image_editorCaptura e edição de mídia
Analyticsfirebase_analytics ^12.xRastreamento de uso
Monetizaçãogoogle_mobile_ads ^9.x + in_app_purchase ^3.xAnúncios e compras no app
i18nflutter_localizationspt, en, es

📂 Estrutura do Projeto ​

app/
├── lib/
│   ├── main.dart              # Entry point, inicialização e router raiz
│   ├── firebase_options.dart  # Config gerada do Firebase
│   │
│   ├── core/                  # Infraestrutura central
│   │   ├── config/            # AppInitializer, AppConfigService
│   │   ├── database/          # ObjectBoxService
│   │   ├── di/                # AppProviders (injeção de deps)
│   │   ├── routes/            # AppRoutes (GoRouter)
│   │   └── update/            # UpdateCubit
│   │
│   ├── blocs/                 # BLoCs de lógica pesada
│   │   └── auth/              # AuthBloc
│   │
│   ├── provider/              # Cubits de estado de UI
│   ├── models/                # Data classes (39 modelos)
│   ├── services/              # Regras de negócio e APIs (51 serviços)
│   ├── screens/               # Telas do app (204 telas)
│   ├── widgets/               # Componentes reutilizáveis (134 widgets)
│   ├── theme/                 # Temas visuais + temas sazonais
│   ├── l10n/                  # Strings de i18n (.arb)
│   └── utils/                 # Helpers e utilitários
│
├── assets/
│   ├── img/                   # Imagens e ícones
│   ├── img/badges/            # Badges de perfil
│   ├── img/default/           # Ícones SVG da navegação
│   ├── sounds/                # Sons do app
│   ├── app_icon/              # Ícone do app
│   └── age_verification/      # Assets de verificação de idade
│
├── android/                   # Configuração Android
├── ios/                       # Configuração iOS
├── pubspec.yaml               # Manifesto de dependências
├── shorebird.yaml             # Configuração do Shorebird
└── l10n.yaml                  # Configuração de i18n

🛠️ Setup de Desenvolvimento ​

1. Pré-requisitos ​

  • Flutter SDK (stable) com Dart ^3.13.0
  • Android Studio ou Xcode (para builds nativas)
  • Shorebird CLI (opcional — apenas para Code Push)
  • Arquivo google-services.json no android/app/ e GoogleService-Info.plist no ios/Runner/

2. Instalação ​

bash
flutter pub get

# Gerar código ObjectBox (obrigatório após alterar modelos anotados com @Entity)
dart run build_runner build --delete-conflicting-outputs

3. Rodar ​

bash
# Android ou iOS
flutter run

⚡ Shorebird (Code Push) ​

O Orbit usa Shorebird para publicar correções críticas em segundos, sem ciclo de revisão da store.

bash
# Criar nova release (versão completa)
shorebird release android
shorebird release ios

# Publicar patch de correção (sem mudar versão)
shorebird patch android
shorebird patch ios

IMPORTANT

O Code Push do Shorebird só funciona em builds nativas (Android/iOS).


🌍 Internacionalização (i18n) ​

O app suporta Português (pt), Inglês (en) e Espanhol (es). As strings são definidas em arquivos .arb na pasta lib/l10n/.

Para adicionar ou editar strings:

  1. Edite o arquivo .arb correspondente (ex: app_pt.arb)
  2. Execute flutter gen-l10n (ou flutter pub get com generate: true no pubspec.yaml)
  3. Use via AppLocalizations.of(context)?.chave

🔒 Criptografia E2E ​

O chat usa criptografia ponta-a-ponta implementada via cryptography e cryptography_flutter. A inicialização ocorre via ChatService.initializeEncryption() logo após o AuthSuccess. As chaves são armazenadas de forma segura via flutter_secure_storage.


🎨 Sistema de Temas ​

O ThemeCubit controla o tema do app. Há três modos: light, dark, system. Além dos temas base, o app detecta automaticamente datas sazonais e aplica temas decorativos:

TemaArquivoPeríodo
Nataltheme/christmas.dartDezembro
Halloweentheme/halloween.dartOutubro
Ano Novotheme/new_year.dartJaneiro
Dia dos Namoradostheme/valentines.dartFevereiro
Copa do Mundotheme/world_cup.dartConforme agenda
Aniversáriotheme/birthday.dartAniversário do app

O Modo Exile (exiledLightTheme / exiledDarkTheme) é aplicado automaticamente para usuários com restrições ativas na plataforma.


🔐 Boas Práticas ​

  • Service Layer obrigatório: Nunca chame a API diretamente de um Widget. Fluxo: Widget → Cubit → Service → API
  • Bloc para lógica, Cubit para estado: Use BLoC apenas para fluxos com múltiplos eventos complexos. Para estados simples, prefira Cubit.
  • MediaQuery.sizeOf: Use MediaQuery.sizeOf(context) (não .of) para evitar rebuilds desnecessários quando o teclado abre.
  • ScrollBlur: Widgets com BackdropFilter devem checar SettingsCubit.isScrollingFast para desativar o blur durante o scroll.

IMPORTANT

Configure corretamente o google-services.json (Android) e GoogleService-Info.plist (iOS) antes de rodar o app. Sem eles, o Firebase — e consequentemente autenticação e notificações — não funcionarão.

📦 Todas as Dependências do App ​

Clique para expandir todas as bibliotecas
  • flutter: local/sdk
  • sdk: flutter
  • flutter_localizations: local/sdk
  • sdk: flutter
  • age_range_signals: ^0.10.0
  • app_badge_plus: ^1.3.5
  • audioplayers: ^6.8.1
  • bloc: ^9.2.1
  • cached_network_image: ^4.0.4
  • camera: ^0.12.1
  • cloud_firestore: ^6.9.0
  • collection: ^1.19.1
  • connectivity_plus: ^7.3.1
  • crypto: ^3.0.7
  • cryptography: ^2.9.0
  • cryptography_flutter: ^2.3.2
  • cupertino_icons: ^2.0.0
  • cupertino_ui: ^1.0.2
  • device_info_plus: ^13.2.0
  • device_integrity: ^1.0.3
  • dio: ^5.11.1
  • emoji_picker_flutter: ^4.5.4
  • file_picker: ^13.1.0
  • firebase_app_installations: ^0.4.4
  • firebase_auth: ^6.7.0
  • firebase_core: ^4.15.0
  • firebase_messaging: ^16.7.0
  • fl_chart: ^1.2.0
  • flame: ^1.38.2
  • flutter_bloc: ^9.1.1
  • flutter_cache_manager: ^3.4.5
  • flutter_foreground_task: ^11.0.3
  • flutter_image_compress: ^2.5.0
  • flutter_inappwebview: ^6.2.0-beta.3
  • flutter_local_notifications: ^22.3.1
  • flutter_markdown_plus: ^1.0.12
  • flutter_secure_storage: ^11.2.0
  • flutter_slidable: ^4.0.3
  • flutter_svg: ^2.3.0
  • font_awesome_flutter: ^11.0.0
  • klipy_flutter: ^0.0.3
  • go_router: ^18.0.2
  • google_fonts: ^9.0.0
  • google_mlkit_face_detection: ^0.15.1
  • google_mobile_ads: ^9.0.0
  • google_sign_in: ^7.2.0
  • http_parser: ^4.1.2
  • image: ^4.10.1
  • image_picker: ^1.2.3
  • in_app_review: ^2.0.12
  • in_app_update: ^5.0.0
  • in_app_purchase: ^3.3.1
  • intl: ^0.20.2
  • live_activities: ^2.6.0
  • livekit_client: ^2.13.0
  • local_auth: ^3.0.2
  • lottie: ^3.6.1
  • marquee: ^2.3.0
  • material_ui: 1.5.0
  • metalink: ^2.1.0
  • mime: ^2.1.0
  • mobile_scanner: ^7.4.2
  • objectbox: ^5.3.2
  • objectbox_flutter_libs: ^5.3.2
  • open_filex_plus: ^4.7.3
  • path_provider: ^2.1.6
  • path: ^1.9.1
  • permission_handler: ^13.0.2
  • photo_manager: ^3.10.0
  • photo_view: ^0.15.0
  • pro_image_editor: ^14.6.1
  • qr_flutter: ^4.1.0
  • receive_sharing_intent: ^1.9.0
  • record: ^7.1.1
  • screen_protector: ^1.5.3
  • scroll_to_index: ^3.0.1
  • share_plus: ^13.3.0
  • shared_preferences: ^2.5.5
  • shorebird_code_push: ^2.0.7
  • sign_in_with_apple: ^8.2.0
  • timezone: ^0.11.1
  • translator: ^1.0.4+1
  • url_launcher: ^6.3.2
  • video_compress: ^3.1.4
  • video_editor: ^3.0.0
  • video_player: ^2.13.0
  • video_thumbnail: ^0.5.6
  • visibility_detector: ^0.4.0+2
  • web_socket_channel: ^3.0.3
  • youtube_player_flutter: ^9.1.3