# anhquocs/akaalert architecture

> Architecture diagram of the GitHub repository anhquocs/akaalert, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/anhquocs/akaalert
- Repository: https://github.com/anhquocs/akaalert

## Overview

AkaAlert is a React Native operations app for monitoring and administering Facebook and TikTok advertising infrastructure. Users sign in, view real-time summaries and job status, then manage ad accounts, recovery, spend-cap records, TikTok apps and advertisers, alerts, and system access. Feature screens and hooks drive domain use cases; repositories implement data access through the shared API client. The README documents SSE job updates and Firebase push/Firestore notifications. Most feature wiring was not sampled, so those links reflect documented capabilities and avoid uncertain call chains.

Main entry points: [`App.tsx`](https://github.com/anhquocs/akaalert/blob/main/App.tsx) (App Entry And Navigation), [`src/features/facebook/presentation/navigation/FacebookNavigator.tsx`](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/presentation/navigation/FacebookNavigator.tsx) (Facebook Workspace), [`src/features/overview/presentation/ui/OverviewScreen.tsx`](https://github.com/anhquocs/akaalert/blob/main/src/features/overview/presentation/ui/OverviewScreen.tsx) (Overview Dashboard), [`src/features/auth/presentation/viewmodel/useAuth.ts`](https://github.com/anhquocs/akaalert/blob/main/src/features/auth/presentation/viewmodel/useAuth.ts) (Authentication Hook)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App Shell"]
  node_app["App Entry And Navigation<br/>[App.tsx]"]
  node_login["Sign In<br/>[LoginScreen.tsx]"]
  node_authflow["Authentication Hook<br/>[useAuth.ts]"]
  node_authrepo["Authentication Repository"]
  node_tokenstore[("Token Storage<br/>[storage.ts]")]
  node_api["API Client<br/>[apiClient.ts]"]
  node_network["Network Status"]
end

subgraph group_monitor["Monitoring"]
  node_overview["Overview Dashboard<br/>[OverviewScreen.tsx]"]
  node_summary["Summary Retrieval"]
  node_jobstream["Live Job Stream<br/>[useJobStream.ts]"]
  node_jobrepo["Job Stream Repository"]
end

subgraph group_facebook["Facebook"]
  node_facebook["Facebook Workspace"]
  node_fbaccounts["Ad Accounts And Checks<br/>[index.ts]"]
  node_fbmanagers["Business Managers"]
  node_fbspend["Spend Cap Resets<br/>[index.ts]"]
  node_recovery["Account Recovery<br/>[index.ts]"]
end

subgraph group_tiktok["TikTok"]
  node_tiktok["TikTok Workspace"]
  node_tiktokapps["Apps And OAuth<br/>[index.ts]"]
  node_advertisers["Advertisers<br/>[index.ts]"]
end

subgraph group_admin["Alerts And Admin"]
  node_alerts["Alerts And Delivery Logs<br/>[AlertsScreen.tsx]"]
  node_push["Push And Firestore Notifications<br/>[FCMService.ts]"]
  node_system["System Administration<br/>[SystemScreen.tsx]"]
end

node_operator(("Operator"))
node_gateway{{"API Gateway"}}
node_sse{{"SSE Service"}}
node_firebase{{"Firebase Services"}}

node_operator -->|"opens"| node_app
node_app -->|"routes"| node_login
node_login -->|"submits credentials"| node_authflow
node_authflow -->|"executes login"| node_authrepo
node_authrepo -->|"posts login"| node_api
node_api -->|"sends requests"| node_gateway
node_authflow -->|"stores tokens"| node_tokenstore
node_api -->|"reads and refreshes tokens"| node_tokenstore
node_app -->|"navigates"| node_overview
node_overview -->|"loads summary"| node_summary
node_overview -->|"observes jobs"| node_jobstream
node_jobstream -->|"observes stream"| node_jobrepo
node_jobrepo -->|"connects SSE"| node_sse
node_overview -->|"controls jobs"| node_gateway
node_app -->|"opens workspace"| node_facebook
node_facebook -->|"manages accounts"| node_fbaccounts
node_facebook -->|"manages business managers"| node_fbmanagers
node_facebook -->|"reviews spend resets"| node_fbspend
node_facebook -->|"manages recovery"| node_recovery
node_app -->|"opens workspace"| node_tiktok
node_tiktok -->|"manages apps and OAuth"| node_tiktokapps
node_tiktok -->|"views advertisers"| node_advertisers
node_app -->|"opens alerts"| node_alerts
node_app -->|"initializes notifications"| node_push
node_push -->|"receives and syncs"| node_firebase
node_app -->|"opens administration"| node_system
node_app -->|"shows connectivity"| node_network

click node_app "https://github.com/anhquocs/akaalert/blob/main/App.tsx"
click node_login "https://github.com/anhquocs/akaalert/blob/main/src/features/auth/presentation/ui/LoginScreen.tsx"
click node_authflow "https://github.com/anhquocs/akaalert/blob/main/src/features/auth/presentation/viewmodel/useAuth.ts"
click node_authrepo "https://github.com/anhquocs/akaalert/blob/main/src/features/auth/data/repository/AuthRepositoryImpl.ts"
click node_tokenstore "https://github.com/anhquocs/akaalert/blob/main/src/features/auth/data/local/storage.ts"
click node_api "https://github.com/anhquocs/akaalert/blob/main/src/core/data/remote/apiClient.ts"
click node_overview "https://github.com/anhquocs/akaalert/blob/main/src/features/overview/presentation/ui/OverviewScreen.tsx"
click node_summary "https://github.com/anhquocs/akaalert/blob/main/src/features/overview/domain/usecases/GetSummaryUseCase.ts"
click node_jobstream "https://github.com/anhquocs/akaalert/blob/main/src/features/overview/presentation/viewmodels/useJobStream.ts"
click node_jobrepo "https://github.com/anhquocs/akaalert/blob/main/src/features/overview/data/repositories/JobStreamRepositoryImpl.ts"
click node_facebook "https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/presentation/navigation/FacebookNavigator.tsx"
click node_fbaccounts "https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/ad-accounts/index.ts"
click node_fbmanagers "https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/business-managers/presentation/ui/BusinessManagersScreen.tsx"
click node_fbspend "https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/spend-cap/index.ts"
click node_recovery "https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/account-recovery/index.ts"
click node_tiktok "https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/presentation/navigation/TikTokNavigator.tsx"
click node_tiktokapps "https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/domain/usecase/apps-oauth/index.ts"
click node_advertisers "https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/domain/usecase/advertisers/index.ts"
click node_alerts "https://github.com/anhquocs/akaalert/blob/main/src/features/alerts/presentation/ui/AlertsScreen.tsx"
click node_push "https://github.com/anhquocs/akaalert/blob/main/src/features/notifications/presentation/react/FCMService.ts"
click node_system "https://github.com/anhquocs/akaalert/blob/main/src/features/system/presentation/ui/SystemScreen.tsx"
click node_network "https://github.com/anhquocs/akaalert/blob/main/src/core/hooks/useNetworkStatus.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_login,node_authflow,node_authrepo,node_tokenstore,node_api,node_network toneBlue
class node_overview,node_summary,node_jobstream,node_jobrepo toneAmber
class node_facebook,node_fbaccounts,node_fbmanagers,node_fbspend,node_recovery,node_gateway toneMint
class node_tiktok,node_tiktokapps,node_advertisers toneRose
class node_alerts,node_push,node_system,node_operator,node_sse,node_firebase toneIndigo
```

## Components

### App Shell

- [App Entry And Navigation](https://github.com/anhquocs/akaalert/blob/main/App.tsx): `App.tsx`
- [Sign In](https://github.com/anhquocs/akaalert/blob/main/src/features/auth/presentation/ui/LoginScreen.tsx): `src/features/auth/presentation/ui/LoginScreen.tsx`
- [Authentication Hook](https://github.com/anhquocs/akaalert/blob/main/src/features/auth/presentation/viewmodel/useAuth.ts): `src/features/auth/presentation/viewmodel/useAuth.ts`
- [Authentication Repository](https://github.com/anhquocs/akaalert/blob/main/src/features/auth/data/repository/AuthRepositoryImpl.ts): `src/features/auth/data/repository/AuthRepositoryImpl.ts`
- [Token Storage](https://github.com/anhquocs/akaalert/blob/main/src/features/auth/data/local/storage.ts): `src/features/auth/data/local/storage.ts`
- [API Client](https://github.com/anhquocs/akaalert/blob/main/src/core/data/remote/apiClient.ts): `src/core/data/remote/apiClient.ts`
- [Network Status](https://github.com/anhquocs/akaalert/blob/main/src/core/hooks/useNetworkStatus.ts): `src/core/hooks/useNetworkStatus.ts`

### Monitoring

- [Overview Dashboard](https://github.com/anhquocs/akaalert/blob/main/src/features/overview/presentation/ui/OverviewScreen.tsx): `src/features/overview/presentation/ui/OverviewScreen.tsx`
- [Summary Retrieval](https://github.com/anhquocs/akaalert/blob/main/src/features/overview/domain/usecases/GetSummaryUseCase.ts): `src/features/overview/domain/usecases/GetSummaryUseCase.ts`
- [Live Job Stream](https://github.com/anhquocs/akaalert/blob/main/src/features/overview/presentation/viewmodels/useJobStream.ts): `src/features/overview/presentation/viewmodels/useJobStream.ts`
- [Job Stream Repository](https://github.com/anhquocs/akaalert/blob/main/src/features/overview/data/repositories/JobStreamRepositoryImpl.ts): `src/features/overview/data/repositories/JobStreamRepositoryImpl.ts`

### Facebook

- [Facebook Workspace](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/presentation/navigation/FacebookNavigator.tsx): `src/features/facebook/presentation/navigation/FacebookNavigator.tsx`
- [Ad Accounts And Checks](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/ad-accounts/index.ts): `src/features/facebook/domain/usecase/ad-accounts/index.ts`
- [Business Managers](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/business-managers/presentation/ui/BusinessManagersScreen.tsx): `src/features/facebook/business-managers/presentation/ui/BusinessManagersScreen.tsx`
- [Spend Cap Resets](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/spend-cap/index.ts): `src/features/facebook/domain/usecase/spend-cap/index.ts`
- [Account Recovery](https://github.com/anhquocs/akaalert/blob/main/src/features/facebook/domain/usecase/account-recovery/index.ts): `src/features/facebook/domain/usecase/account-recovery/index.ts`

### TikTok

- [TikTok Workspace](https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/presentation/navigation/TikTokNavigator.tsx): `src/features/tiktok/presentation/navigation/TikTokNavigator.tsx`
- [Apps And OAuth](https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/domain/usecase/apps-oauth/index.ts): `src/features/tiktok/domain/usecase/apps-oauth/index.ts`
- [Advertisers](https://github.com/anhquocs/akaalert/blob/main/src/features/tiktok/domain/usecase/advertisers/index.ts): `src/features/tiktok/domain/usecase/advertisers/index.ts`

### Alerts And Admin

- [Alerts And Delivery Logs](https://github.com/anhquocs/akaalert/blob/main/src/features/alerts/presentation/ui/AlertsScreen.tsx): `src/features/alerts/presentation/ui/AlertsScreen.tsx`
- [Push And Firestore Notifications](https://github.com/anhquocs/akaalert/blob/main/src/features/notifications/presentation/react/FCMService.ts): `src/features/notifications/presentation/react/FCMService.ts`
- [System Administration](https://github.com/anhquocs/akaalert/blob/main/src/features/system/presentation/ui/SystemScreen.tsx): `src/features/system/presentation/ui/SystemScreen.tsx`

### Other components

- **Operator**
- **API Gateway**
- **SSE Service**
- **Firebase Services**

## Connections

- Operator → App Entry And Navigation: opens
- App Entry And Navigation → Sign In: routes
- Sign In → Authentication Hook: submits credentials
- Authentication Hook → Authentication Repository: executes login
- Authentication Repository → API Client: posts login
- API Client → API Gateway: sends requests
- Authentication Hook → Token Storage: stores tokens
- API Client → Token Storage: reads and refreshes tokens
- App Entry And Navigation → Overview Dashboard: navigates
- Overview Dashboard → Summary Retrieval: loads summary
- Overview Dashboard → Live Job Stream: observes jobs
- Live Job Stream → Job Stream Repository: observes stream
- Job Stream Repository → SSE Service: connects SSE
- Overview Dashboard → API Gateway: controls jobs
- App Entry And Navigation → Facebook Workspace: opens workspace
- Facebook Workspace → Ad Accounts And Checks: manages accounts
- Facebook Workspace → Business Managers: manages business managers
- Facebook Workspace → Spend Cap Resets: reviews spend resets
- Facebook Workspace → Account Recovery: manages recovery
- App Entry And Navigation → TikTok Workspace: opens workspace
- TikTok Workspace → Apps And OAuth: manages apps and OAuth
- TikTok Workspace → Advertisers: views advertisers
- App Entry And Navigation → Alerts And Delivery Logs: opens alerts
- App Entry And Navigation → Push And Firestore Notifications: initializes notifications
- Push And Firestore Notifications → Firebase Services: receives and syncs
- App Entry And Navigation → System Administration: opens administration
- App Entry And Navigation → Network Status: shows connectivity
