# sabbirhossainevan/linkooto architecture

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

- Interactive diagram: https://gitdiagram.com/sabbirhossainevan/linkooto
- Repository: https://github.com/sabbirhossainevan/linkooto

## Overview

This is an Expo/React Native marketplace app with buyer and vendor experiences. Users authenticate and choose a profile, then browse vendors and products, connect or chat, place and pay for orders, and access order, transaction, and account features. Vendors have dashboard, product, coupon, business-profile, and order-management screens. The graph highlights these domain areas and the shared API/state layer. Source excerpts confirm app bootstrap persistence and several dashboard API queries; other feature-to-API wiring is inferred only from module responsibilities and is not shown. The README describes the Expo starter rather than the product.

Main entry points: [`store/api/apiSlice.ts`](https://github.com/sabbirhossainevan/linkooto/blob/main/store/api/apiSlice.ts) (API query layer), [`app/index.tsx`](https://github.com/sabbirhossainevan/linkooto/blob/main/app/index.tsx) (Session bootstrap), [`app/(onboarding)`](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(onboarding)) (Onboarding and sign-in), [`app/(user_screen)`](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(user_screen)) (Products and vendors)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and identity"]
  node_bootstrap["Session bootstrap<br/>[index.tsx]"]
  node_onboarding["Onboarding and sign-in"]
  node_auth_screens["Authentication screens"]
  node_auth_state["Authentication state<br/>[authSlice.ts]"]
  node_auth_storage[("Persisted credentials<br/>[authStorage.ts]")]
end

subgraph group_buyer["Buyer marketplace"]
  node_buyer_home["Buyer discovery"]
  node_buyer_details["Products and vendors"]
  node_cart_order["Cart and orders<br/>[cart.tsx]"]
  node_payments["Payment and invoices<br/>[paymentApiSlice.ts]"]
  node_buyer_account["Buyer account support"]
end

subgraph group_vendor["Vendor operations"]
  node_vendor_home["Vendor dashboard<br/>[index.tsx]"]
  node_vendor_catalog["Product management<br/>[index.tsx]"]
  node_vendor_orders["Vendor orders<br/>[order.tsx]"]
  node_vendor_profile["Business profile"]
end

subgraph group_shared["Shared services"]
  node_messaging["Chat and connections<br/>[socket.ts]"]
  node_api_layer["API query layer<br/>[apiSlice.ts]"]
  node_language["Language preferences"]
  node_notifications["Push notifications"]
end

node_buyer_actor(("Buyer"))
node_vendor_actor(("Vendor"))
node_backend[("Marketplace backend")]

node_buyer_actor -->|"starts app"| node_onboarding
node_vendor_actor -->|"starts app"| node_onboarding
node_onboarding -->|"continues to"| node_auth_screens
node_bootstrap -->|"loads credentials"| node_auth_storage
node_bootstrap -->|"restores session"| node_auth_state
node_bootstrap -->|"refreshes session"| node_backend
node_vendor_home -->|"queries stats and orders"| node_api_layer
node_buyer_home -->|"queries profile and vendors"| node_api_layer
node_buyer_details -->|"loads marketplace data"| node_api_layer
node_cart_order -->|"loads cart and orders"| node_api_layer
node_payments -->|"requests payment data"| node_api_layer
node_vendor_catalog -->|"manages products"| node_api_layer
node_vendor_orders -->|"loads orders"| node_api_layer
node_vendor_profile -->|"updates business data"| node_api_layer
node_api_layer -->|"sends API requests"| node_backend
node_buyer_details -.->|"opens conversations"| node_messaging
node_messaging -.->|"exchanges messages"| node_backend
node_buyer_account -.->|"views notifications"| node_notifications
node_buyer_actor -->|"selects language"| node_language

click node_bootstrap "https://github.com/sabbirhossainevan/linkooto/blob/main/app/index.tsx"
click node_onboarding "https://github.com/sabbirhossainevan/linkooto/tree/main/app/(onboarding)"
click node_auth_screens "https://github.com/sabbirhossainevan/linkooto/tree/main/app/(auth)"
click node_auth_state "https://github.com/sabbirhossainevan/linkooto/blob/main/store/slices/authSlice.ts"
click node_auth_storage "https://github.com/sabbirhossainevan/linkooto/blob/main/services/authStorage.ts"
click node_buyer_home "https://github.com/sabbirhossainevan/linkooto/tree/main/app/(users)"
click node_buyer_details "https://github.com/sabbirhossainevan/linkooto/tree/main/app/(user_screen)"
click node_cart_order "https://github.com/sabbirhossainevan/linkooto/blob/main/app/(users)/cart.tsx"
click node_payments "https://github.com/sabbirhossainevan/linkooto/blob/main/store/api/paymentApiSlice.ts"
click node_buyer_account "https://github.com/sabbirhossainevan/linkooto/tree/main/app/(user_screen)"
click node_vendor_home "https://github.com/sabbirhossainevan/linkooto/blob/main/app/(tabs)/index.tsx"
click node_vendor_catalog "https://github.com/sabbirhossainevan/linkooto/blob/main/app/(screens)/index.tsx"
click node_vendor_orders "https://github.com/sabbirhossainevan/linkooto/blob/main/app/(tabs)/order.tsx"
click node_vendor_profile "https://github.com/sabbirhossainevan/linkooto/blob/main/app/(screens)/VendorProfileScreen.tsx"
click node_messaging "https://github.com/sabbirhossainevan/linkooto/blob/main/services/socket.ts"
click node_api_layer "https://github.com/sabbirhossainevan/linkooto/blob/main/store/api/apiSlice.ts"
click node_language "https://github.com/sabbirhossainevan/linkooto/blob/main/context/LanguageContext.tsx"
click node_notifications "https://github.com/sabbirhossainevan/linkooto/blob/main/services/pushNotifications.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_bootstrap,node_onboarding,node_auth_screens,node_auth_state,node_auth_storage toneBlue
class node_buyer_home,node_buyer_details,node_cart_order,node_payments,node_buyer_account,node_backend toneAmber
class node_vendor_home,node_vendor_catalog,node_vendor_orders,node_vendor_profile toneMint
class node_messaging,node_api_layer,node_language,node_notifications toneRose
class node_buyer_actor,node_vendor_actor toneIndigo
```

## Components

### App entry and identity

- [Session bootstrap](https://github.com/sabbirhossainevan/linkooto/blob/main/app/index.tsx): `app/index.tsx`
- [Onboarding and sign-in](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(onboarding)): `app/(onboarding)`
- [Authentication screens](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(auth)): `app/(auth)`
- [Authentication state](https://github.com/sabbirhossainevan/linkooto/blob/main/store/slices/authSlice.ts): `store/slices/authSlice.ts`
- [Persisted credentials](https://github.com/sabbirhossainevan/linkooto/blob/main/services/authStorage.ts): `services/authStorage.ts`

### Buyer marketplace

- [Buyer discovery](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(users)): `app/(users)`
- [Products and vendors](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(user_screen)): `app/(user_screen)`
- [Cart and orders](https://github.com/sabbirhossainevan/linkooto/blob/main/app/(users)/cart.tsx): `app/(users)/cart.tsx`
- [Payment and invoices](https://github.com/sabbirhossainevan/linkooto/blob/main/store/api/paymentApiSlice.ts): `store/api/paymentApiSlice.ts`
- [Buyer account support](https://github.com/sabbirhossainevan/linkooto/tree/main/app/(user_screen)): `app/(user_screen)`

### Vendor operations

- [Vendor dashboard](https://github.com/sabbirhossainevan/linkooto/blob/main/app/(tabs)/index.tsx): `app/(tabs)/index.tsx`
- [Product management](https://github.com/sabbirhossainevan/linkooto/blob/main/app/(screens)/index.tsx): `app/(screens)/index.tsx`
- [Vendor orders](https://github.com/sabbirhossainevan/linkooto/blob/main/app/(tabs)/order.tsx): `app/(tabs)/order.tsx`
- [Business profile](https://github.com/sabbirhossainevan/linkooto/blob/main/app/(screens)/VendorProfileScreen.tsx): `app/(screens)/VendorProfileScreen.tsx`

### Shared services

- [Chat and connections](https://github.com/sabbirhossainevan/linkooto/blob/main/services/socket.ts): `services/socket.ts`
- [API query layer](https://github.com/sabbirhossainevan/linkooto/blob/main/store/api/apiSlice.ts): `store/api/apiSlice.ts`
- [Language preferences](https://github.com/sabbirhossainevan/linkooto/blob/main/context/LanguageContext.tsx): `context/LanguageContext.tsx`
- [Push notifications](https://github.com/sabbirhossainevan/linkooto/blob/main/services/pushNotifications.ts): `services/pushNotifications.ts`

### Other components

- **Buyer**
- **Vendor**
- **Marketplace backend**

## Connections

- Buyer → Onboarding and sign-in: starts app
- Vendor → Onboarding and sign-in: starts app
- Onboarding and sign-in → Authentication screens: continues to
- Session bootstrap → Persisted credentials: loads credentials
- Session bootstrap → Authentication state: restores session
- Session bootstrap → Marketplace backend: refreshes session
- Vendor dashboard → API query layer: queries stats and orders
- Buyer discovery → API query layer: queries profile and vendors
- Products and vendors → API query layer: loads marketplace data
- Cart and orders → API query layer: loads cart and orders
- Payment and invoices → API query layer: requests payment data
- Product management → API query layer: manages products
- Vendor orders → API query layer: loads orders
- Business profile → API query layer: updates business data
- API query layer → Marketplace backend: sends API requests
- Products and vendors → Chat and connections: opens conversations
- Chat and connections → Marketplace backend: exchanges messages
- Buyer account support → Push notifications: views notifications
- Buyer → Language preferences: selects language
