# monierate/monierate-website architecture

> Architecture diagram of the GitHub repository monierate/monierate-website, 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/monierate/monierate-website
- Repository: https://github.com/monierate/monierate-website

## Overview

Monierate is a currency and foreign-exchange information website: visitors compare provider quotes, convert currencies, explore markets and historical rates, and browse provider directories. A representative workflow is a visitor opening a conversion page; its server loader resolves currencies and rates, optionally enriches the result with provider quotes, then returns page data for display. Other documented product areas include market history and spread/index views, exchange collections, bank-code information, a public API, billing, and editorial content. The graph follows the supplied route and loader excerpts; wiring for unsampled subsystems is shown only where the tree supports their existence, not their internal calls.

Main entry points: [`src/routes/(main)/converter/[conversion=conversion]/+page.server.ts`](https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/converter/%5Bconversion%3Dconversion%5D/%2Bpage.server.ts) (Conversion loader), [`src/routes/(main)/(discover)`](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/(discover)) (Rate discovery), [`src/routes/(main)/markets/[code]/+page.server.ts`](https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/markets/%5Bcode%5D/%2Bpage.server.ts) (Pair history loader), [`src/routes/(main)/exchanges`](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/exchanges) (Exchange directory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_conversion["Conversion and discovery"]
  node_conversion_routes["Conversion pages"]
  node_conversion_loader["Conversion loader<br/>[+page.server.ts]"]
  node_converter_hub_loader["Converter hub<br/>[+page.server.ts]"]
  node_currency_service["Currency service"]
  node_pair_service["Pair service<br/>[pair.service.ts]"]
  node_global_rate_service["Global rate service"]
  node_converter_ui["Converter interface"]
  node_discover_routes["Rate discovery"]
end

subgraph group_markets["Market intelligence"]
  node_market_routes["Market pages"]
  node_market_loader["Pair history loader<br/>[+page.server.ts]"]
  node_market_services["Market services"]
  node_market_ui["Market views"]
end

subgraph group_directory["Provider directory"]
  node_exchange_routes["Exchange directory"]
  node_exchange_services["Changer services<br/>[changer.service.ts]"]
  node_collections["Curated collections<br/>[collections.ts]"]
end

subgraph group_platform["API and accounts"]
  node_api_routes["Public API routes"]
  node_api_services["API services<br/>[api.ts]"]
  node_billing["Billing services<br/>[billing.ts]"]
  node_listing_submit["Listing submission<br/>[+server.ts]"]
end

subgraph group_content["Content and tools"]
  node_blog_routes["Blog pages"]
  node_bank_routes["Bank-code pages"]
  node_sitemap["Sitemap endpoint<br/>[+server.ts]"]
end

node_visitor(("Visitor"))
node_account_api{{"Account API"}}

node_visitor -->|"opens"| node_conversion_routes
node_conversion_routes -->|"loads conversion"| node_conversion_loader
node_conversion_loader -->|"fetches currencies"| node_currency_service
node_conversion_loader -->|"fetches pairs"| node_pair_service
node_conversion_loader -->|"resolves rates"| node_global_rate_service
node_conversion_loader -->|"fetches providers"| node_exchange_services
node_conversion_loader -->|"returns page data"| node_converter_ui
node_visitor -->|"opens rates"| node_discover_routes
node_discover_routes -->|"loads providers"| node_exchange_services
node_discover_routes -->|"loads pair quotes"| node_pair_service
node_discover_routes -->|"returns view data"| node_market_ui
node_visitor -->|"opens markets"| node_market_routes
node_market_routes -->|"loads pair history"| node_market_loader
node_market_loader -->|"creates data services"| node_market_services
node_market_loader -->|"checks history access"| node_billing
node_market_loader -->|"returns history data"| node_market_ui
node_visitor -->|"browses providers"| node_exchange_routes
node_exchange_routes -->|"loads listings"| node_exchange_services
node_exchange_routes -->|"loads collections"| node_collections
node_exchange_routes -->|"returns directory"| node_visitor
node_visitor -->|"requests data"| node_api_routes
node_visitor -->|"reads articles"| node_blog_routes
node_visitor -->|"looks up bank codes"| node_bank_routes
node_visitor -->|"submits listing"| node_listing_submit
node_listing_submit -->|"forwards submission"| node_account_api
node_visitor -->|"requests sitemap"| node_sitemap

click node_conversion_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/converter"
click node_conversion_loader "https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/converter/%5Bconversion%3Dconversion%5D/%2Bpage.server.ts"
click node_converter_hub_loader "https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/converter/%2Bpage.server.ts"
click node_currency_service "https://github.com/monierate/monierate-website/blob/main/src/lib/services/currency.service.ts"
click node_pair_service "https://github.com/monierate/monierate-website/blob/main/src/lib/services/pair.service.ts"
click node_global_rate_service "https://github.com/monierate/monierate-website/blob/main/src/lib/services/globalRate.service.ts"
click node_converter_ui "https://github.com/monierate/monierate-website/tree/main/src/lib/components/converter"
click node_discover_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/(discover)"
click node_market_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/markets"
click node_market_loader "https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/markets/%5Bcode%5D/%2Bpage.server.ts"
click node_market_services "https://github.com/monierate/monierate-website/tree/main/src/lib/services"
click node_market_ui "https://github.com/monierate/monierate-website/tree/main/src/lib/components/markets"
click node_exchange_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/exchanges"
click node_exchange_services "https://github.com/monierate/monierate-website/blob/main/src/lib/services/changer.service.ts"
click node_collections "https://github.com/monierate/monierate-website/blob/main/src/lib/server/collections.ts"
click node_api_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/api"
click node_api_services "https://github.com/monierate/monierate-website/blob/main/src/lib/services/api.ts"
click node_billing "https://github.com/monierate/monierate-website/blob/main/src/lib/server/billing.ts"
click node_listing_submit "https://github.com/monierate/monierate-website/blob/main/src/routes/(compact)/list-your-platform/%2Bserver.ts"
click node_blog_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/blog"
click node_bank_routes "https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/bank-codes"
click node_sitemap "https://github.com/monierate/monierate-website/blob/main/src/routes/sitemap.xml/%2Bserver.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_conversion_routes,node_conversion_loader,node_converter_hub_loader,node_currency_service,node_pair_service,node_global_rate_service,node_converter_ui,node_discover_routes toneBlue
class node_market_routes,node_market_loader,node_market_services,node_market_ui toneAmber
class node_exchange_routes,node_exchange_services,node_collections,node_account_api toneMint
class node_api_routes,node_api_services,node_billing,node_listing_submit toneRose
class node_blog_routes,node_bank_routes,node_sitemap,node_visitor toneIndigo
```

## Components

### Conversion and discovery

- [Conversion pages](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/converter): `src/routes/(main)/converter`
- [Conversion loader](https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/converter/%5Bconversion%3Dconversion%5D/%2Bpage.server.ts): `src/routes/(main)/converter/[conversion=conversion]/+page.server.ts`
- [Converter hub](https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/converter/%2Bpage.server.ts): `src/routes/(main)/converter/+page.server.ts`
- [Currency service](https://github.com/monierate/monierate-website/blob/main/src/lib/services/currency.service.ts): `src/lib/services/currency.service.ts`
- [Pair service](https://github.com/monierate/monierate-website/blob/main/src/lib/services/pair.service.ts): `src/lib/services/pair.service.ts`
- [Global rate service](https://github.com/monierate/monierate-website/blob/main/src/lib/services/globalRate.service.ts): `src/lib/services/globalRate.service.ts`
- [Converter interface](https://github.com/monierate/monierate-website/tree/main/src/lib/components/converter): `src/lib/components/converter`
- [Rate discovery](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/(discover)): `src/routes/(main)/(discover)`

### Market intelligence

- [Market pages](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/markets): `src/routes/(main)/markets`
- [Pair history loader](https://github.com/monierate/monierate-website/blob/main/src/routes/(main)/markets/%5Bcode%5D/%2Bpage.server.ts): `src/routes/(main)/markets/[code]/+page.server.ts`
- [Market services](https://github.com/monierate/monierate-website/tree/main/src/lib/services): `src/lib/services`
- [Market views](https://github.com/monierate/monierate-website/tree/main/src/lib/components/markets): `src/lib/components/markets`

### Provider directory

- [Exchange directory](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/exchanges): `src/routes/(main)/exchanges`
- [Changer services](https://github.com/monierate/monierate-website/blob/main/src/lib/services/changer.service.ts): `src/lib/services/changer.service.ts`
- [Curated collections](https://github.com/monierate/monierate-website/blob/main/src/lib/server/collections.ts): `src/lib/server/collections.ts`

### API and accounts

- [Public API routes](https://github.com/monierate/monierate-website/tree/main/src/routes/api): `src/routes/api`
- [API services](https://github.com/monierate/monierate-website/blob/main/src/lib/services/api.ts): `src/lib/services/api.ts`
- [Billing services](https://github.com/monierate/monierate-website/blob/main/src/lib/server/billing.ts): `src/lib/server/billing.ts`
- [Listing submission](https://github.com/monierate/monierate-website/blob/main/src/routes/(compact)/list-your-platform/%2Bserver.ts): `src/routes/(compact)/list-your-platform/+server.ts`

### Content and tools

- [Blog pages](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/blog): `src/routes/(main)/blog`
- [Bank-code pages](https://github.com/monierate/monierate-website/tree/main/src/routes/(main)/bank-codes): `src/routes/(main)/bank-codes`
- [Sitemap endpoint](https://github.com/monierate/monierate-website/blob/main/src/routes/sitemap.xml/%2Bserver.ts): `src/routes/sitemap.xml/+server.ts`

### Other components

- **Visitor**
- **Account API**

## Connections

- Visitor → Conversion pages: opens
- Conversion pages → Conversion loader: loads conversion
- Conversion loader → Currency service: fetches currencies
- Conversion loader → Pair service: fetches pairs
- Conversion loader → Global rate service: resolves rates
- Conversion loader → Changer services: fetches providers
- Conversion loader → Converter interface: returns page data
- Visitor → Rate discovery: opens rates
- Rate discovery → Changer services: loads providers
- Rate discovery → Pair service: loads pair quotes
- Rate discovery → Market views: returns view data
- Visitor → Market pages: opens markets
- Market pages → Pair history loader: loads pair history
- Pair history loader → Market services: creates data services
- Pair history loader → Billing services: checks history access
- Pair history loader → Market views: returns history data
- Visitor → Exchange directory: browses providers
- Exchange directory → Changer services: loads listings
- Exchange directory → Curated collections: loads collections
- Exchange directory → Visitor: returns directory
- Visitor → Public API routes: requests data
- Visitor → Blog pages: reads articles
- Visitor → Bank-code pages: looks up bank codes
- Visitor → Listing submission: submits listing
- Listing submission → Account API: forwards submission
- Visitor → Sitemap endpoint: requests sitemap
