# norarax-neflinowl/orbit architecture

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

- Interactive diagram: https://gitdiagram.com/norarax-neflinowl/orbit
- Repository: https://github.com/norarax-neflinowl/orbit

## Overview

Orbit is a cross-device productivity app for notes, tasks, calendars, inventories, places, sharing, and encrypted chat. The main user journey is to sign in, work with these shared items, and keep them available across devices; the README describes browser and MAUI clients backed by a shared ASP.NET Core API. The supplied tree contains MAUI/mobile code and selected Core handlers, but not the web client or API hosting and persistence layers. The links below distinguish documented product-level connections from calls visible in the sampled handlers.

Main entry points: [`src/Clients/Orbit.Maui/App.xaml.cs`](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/App.xaml.cs) (MAUI app), [`src/Clients/Orbit.Mobile/Authentication/AuthenticationClient.cs`](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Authentication/AuthenticationClient.cs) (Authentication), [`src/Clients/Orbit.Maui/AppNavigator.cs`](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/AppNavigator.cs) (App navigation), [`src/Clients/Orbit.Mobile/Screens/Startup/StartupViewModel.cs`](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Startup/StartupViewModel.cs) (Startup flow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Client apps"]
  node_maui["MAUI app<br/>[App.xaml.cs]"]
  node_web["Browser client"]
  node_navigation["App navigation<br/>[AppNavigator.cs]"]
  node_localdb[("Local data")]
  node_apiclients["Mobile API clients<br/>[Api]"]
end

subgraph group_identity["Identity and security"]
  node_auth["Authentication"]
  node_session["Session storage"]
end

subgraph group_product["Product features"]
  node_startup["Startup flow"]
  node_signin["Sign-in screen<br/>[SignInPage.xaml.cs]"]
  node_notes["Notes<br/>[NotesViewModel.cs]"]
  node_tasks["Tasks<br/>[TasksViewModel.cs]"]
  node_calendar["Calendar"]
  node_inventory["Inventory"]
  node_places["Places and maps<br/>[PlacesViewModel.cs]"]
  node_sharing["Sharing"]
  node_chat["Encrypted chat"]
end

subgraph group_core["Shared Core"]
  node_login["Login handler"]
  node_contactsquery["Contacts query"]
  node_conversationquery["Conversation query"]
  node_offerquery["Share offer query"]
  node_exportquery["Archive export"]
  node_mapquery["Map link resolver"]
end

node_user(("Orbit user"))
node_api["Shared API"]
node_shortener["Short-link service"]

node_user -->|"uses"| node_maui
node_user -->|"uses"| node_web
node_maui -->|"navigates"| node_navigation
node_maui -->|"uses shared API"| node_api
node_web -->|"uses shared API"| node_api
node_signin -->|"authenticates"| node_auth
node_auth -->|"checks credentials"| node_login
node_auth -->|"stores session"| node_session
node_startup -->|"continues to"| node_navigation
node_contactsquery --> node_conversationquery
node_mapquery -->|"follows shortened link"| node_shortener

click node_maui "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/App.xaml.cs"
click node_navigation "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/AppNavigator.cs"
click node_startup "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Startup/StartupViewModel.cs"
click node_signin "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/Features/Authentication/SignInPage.xaml.cs"
click node_auth "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Authentication/AuthenticationClient.cs"
click node_login "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Users/Login/LoginQueryHandler.cs"
click node_session "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/Platform/SecureSessionStorage.cs"
click node_notes "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Notes/NotesViewModel.cs"
click node_tasks "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Tasks/TasksViewModel.cs"
click node_calendar "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Calendar/CalendarViewModel.cs"
click node_inventory "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Inventory/InventoryViewModel.cs"
click node_places "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Places/PlacesViewModel.cs"
click node_sharing "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Sharing/InvitationViewModel.cs"
click node_chat "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Chat/EncryptedChatMessageSender.cs"
click node_localdb "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Data/OrbitLocalDbContext.cs"
click node_apiclients "https://github.com/norarax-neflinowl/orbit/tree/Coding/src/Clients/Orbit.Mobile/Api"
click node_contactsquery "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Chat/GetContacts/GetContactsQueryHandler.cs"
click node_conversationquery "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Chat/GetConversation/GetConversationQueryHandler.cs"
click node_offerquery "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Sharing/GetShareOffer/GetShareOfferQueryHandler.cs"
click node_exportquery "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Transfer/ExportArchive/ExportArchiveQueryHandler.cs"
click node_mapquery "https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Location/ResolveMapLink/ResolveMapLinkQueryHandler.cs"

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_maui,node_web,node_navigation,node_localdb,node_apiclients,node_user toneBlue
class node_auth,node_session toneAmber
class node_startup,node_signin,node_notes,node_tasks,node_calendar,node_inventory,node_places,node_sharing,node_chat,node_api toneMint
class node_login,node_contactsquery,node_conversationquery,node_offerquery,node_exportquery,node_mapquery toneRose
class node_shortener toneIndigo
```

## Components

### Client apps

- [MAUI app](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/App.xaml.cs): `src/Clients/Orbit.Maui/App.xaml.cs`
- **Browser client**
- [App navigation](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/AppNavigator.cs): `src/Clients/Orbit.Maui/AppNavigator.cs`
- [Local data](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Data/OrbitLocalDbContext.cs): `src/Clients/Orbit.Mobile/Data/OrbitLocalDbContext.cs`
- [Mobile API clients](https://github.com/norarax-neflinowl/orbit/tree/Coding/src/Clients/Orbit.Mobile/Api): `src/Clients/Orbit.Mobile/Api`

### Identity and security

- [Authentication](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Authentication/AuthenticationClient.cs): `src/Clients/Orbit.Mobile/Authentication/AuthenticationClient.cs`
- [Session storage](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/Platform/SecureSessionStorage.cs): `src/Clients/Orbit.Maui/Platform/SecureSessionStorage.cs`

### Product features

- [Startup flow](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Startup/StartupViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Startup/StartupViewModel.cs`
- [Sign-in screen](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Maui/Features/Authentication/SignInPage.xaml.cs): `src/Clients/Orbit.Maui/Features/Authentication/SignInPage.xaml.cs`
- [Notes](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Notes/NotesViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Notes/NotesViewModel.cs`
- [Tasks](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Tasks/TasksViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Tasks/TasksViewModel.cs`
- [Calendar](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Calendar/CalendarViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Calendar/CalendarViewModel.cs`
- [Inventory](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Inventory/InventoryViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Inventory/InventoryViewModel.cs`
- [Places and maps](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Places/PlacesViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Places/PlacesViewModel.cs`
- [Sharing](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Screens/Sharing/InvitationViewModel.cs): `src/Clients/Orbit.Mobile/Screens/Sharing/InvitationViewModel.cs`
- [Encrypted chat](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Clients/Orbit.Mobile/Chat/EncryptedChatMessageSender.cs): `src/Clients/Orbit.Mobile/Chat/EncryptedChatMessageSender.cs`

### Shared Core

- [Login handler](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Users/Login/LoginQueryHandler.cs): `src/Shared/Orbit.Core/Users/Login/LoginQueryHandler.cs`
- [Contacts query](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Chat/GetContacts/GetContactsQueryHandler.cs): `src/Shared/Orbit.Core/Chat/GetContacts/GetContactsQueryHandler.cs`
- [Conversation query](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Chat/GetConversation/GetConversationQueryHandler.cs): `src/Shared/Orbit.Core/Chat/GetConversation/GetConversationQueryHandler.cs`
- [Share offer query](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Sharing/GetShareOffer/GetShareOfferQueryHandler.cs): `src/Shared/Orbit.Core/Sharing/GetShareOffer/GetShareOfferQueryHandler.cs`
- [Archive export](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Transfer/ExportArchive/ExportArchiveQueryHandler.cs): `src/Shared/Orbit.Core/Transfer/ExportArchive/ExportArchiveQueryHandler.cs`
- [Map link resolver](https://github.com/norarax-neflinowl/orbit/blob/Coding/src/Shared/Orbit.Core/Location/ResolveMapLink/ResolveMapLinkQueryHandler.cs): `src/Shared/Orbit.Core/Location/ResolveMapLink/ResolveMapLinkQueryHandler.cs`

### Other components

- **Orbit user**
- **Shared API**
- **Short-link service**

## Connections

- Orbit user → MAUI app: uses
- Orbit user → Browser client: uses
- MAUI app → App navigation: navigates
- MAUI app → Shared API: uses shared API
- Browser client → Shared API: uses shared API
- Sign-in screen → Authentication: authenticates
- Authentication → Login handler: checks credentials
- Authentication → Session storage: stores session
- Startup flow → App navigation: continues to
- Contacts query → Conversation query
- Map link resolver → Short-link service: follows shortened link
