# lycorecoil/ika-tracker architecture

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

## Overview

IKA Tracker’s backend is a Node.js microservice system for courier delivery management. The main user workflow is to authenticate and maintain an active subscription, manage couriers, create and assign parcels, then manage delivery slips through the Decharge service. Payment and subscription lifecycle operations are handled separately through Stripe. The graph follows sampled route/controller wiring and README service boundaries; Decharge operations beyond parcels and several service internals are represented only where the tree supports them.

Main entry points: [`Backend/CourierService/src/controllers/agentController.js`](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/controllers/agentController.js) (Agent workflows), [`Backend/DechargeService/src/controllers/colisController.js`](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/controllers/colisController.js) (Parcel workflows), [`Backend/AuthService/app.js`](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/app.js) (Auth service), [`Backend/AuthService/src/controllers/authController.js`](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/controllers/authController.js) (Auth workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_auth_app["Auth service<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[authRouter.js]"]
  node_auth_controller["Auth workflows<br/>[authController.js]"]
  node_user_model[("User records<br/>[usersModel.js]")]
  node_token_service["Token handling<br/>[tokenService.js]"]
end

subgraph group_courier["Courier Management"]
  node_courier_app["Courier service<br/>[app.js]"]
  node_agent_routes["Agent routes<br/>[agentRoutes.js]"]
  node_agent_controller["Agent workflows<br/>[agentController.js]"]
  node_agent_model[("Agent records<br/>[agentModel.js]")]
  node_internal_agent_routes["Agent internal API<br/>[internalRoutes.js]"]
end

subgraph group_decharge["Parcel Operations"]
  node_decharge_app["Decharge service<br/>[app.js]"]
  node_colis_routes["Parcel routes<br/>[colisRoutes.js]"]
  node_colis_controller["Parcel workflows<br/>[colisController.js]"]
  node_colis_model[("Parcel records<br/>[colisModel.js]")]
  node_decharge_routes["Delivery-slip routes<br/>[dechargeRoutes.js]"]
  node_decharge_controller["Delivery-slip workflows"]
  node_decharge_model[("Delivery-slip records<br/>[dechargeModel.js]")]
end

subgraph group_payment["Payments"]
  node_payment_app["Payment service<br/>[app.js]"]
  node_subscription_routes["Subscription routes"]
  node_subscription_controller["Subscription workflows"]
  node_payment_routes["Payment routes<br/>[paymentRoutes.js]"]
  node_payment_controller["Payment workflows"]
  node_webhook_controller["Stripe webhooks"]
  node_stripe_service["Stripe adapter<br/>[stripeService.js]"]
  node_subscription_model[("Subscription records")]
  node_payment_model[("Payment records<br/>[paymentModel.js]")]
end

subgraph group_shared["Shared Middleware"]
  node_service_client["Service client<br/>[serviceClient.js]"]
  node_cache[("Redis cache<br/>[redisCache.js]")]
end

node_user(("User"))
node_stripe["Stripe"]
node_mail["Email provider"]

node_user -->|"uses API"| node_auth_app
node_auth_app -->|"mounts"| node_auth_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"reads/writes"| node_user_model
node_auth_controller -->|"uses tokens"| node_token_service
node_auth_app -->|"connects MongoDB"| node_user_model
node_auth_app -->|"caches auth routes"| node_cache
node_auth_controller -.->|"sends verification mail"| node_mail
node_user -->|"manages couriers"| node_courier_app
node_courier_app -->|"mounts"| node_agent_routes
node_agent_routes -->|"dispatches"| node_agent_controller
node_agent_controller -->|"reads/writes"| node_agent_model
node_agent_controller -->|"requests auth service"| node_service_client
node_service_client -->|"calls internal API"| node_auth_app
node_agent_controller -->|"invalidates entries"| node_cache
node_agent_controller -.->|"sends welcome email"| node_mail
node_courier_app -->|"mounts"| node_internal_agent_routes
node_internal_agent_routes -->|"checks agent"| node_agent_model
node_user -->|"manages deliveries"| node_decharge_app
node_decharge_app -->|"mounts"| node_colis_routes
node_colis_routes -->|"dispatches"| node_colis_controller
node_colis_controller -->|"reads/writes"| node_colis_model
node_colis_controller -->|"checks subscription and agent"| node_service_client
node_colis_controller -->|"invalidates entries"| node_cache
node_colis_controller -->|"checks agent via internal API"| node_agent_routes
node_decharge_app -->|"mounts"| node_decharge_routes
node_decharge_routes -->|"dispatches"| node_decharge_controller
node_decharge_controller -->|"reads/writes"| node_decharge_model
node_user -->|"manages subscription"| node_payment_app
node_payment_app -->|"mounts"| node_subscription_routes
node_subscription_routes -->|"dispatches"| node_subscription_controller
node_subscription_controller -->|"reads/writes"| node_subscription_model
node_subscription_controller -->|"creates/cancels subscription"| node_stripe_service
node_stripe_service -->|"calls API"| node_stripe
node_payment_app -->|"mounts"| node_payment_routes
node_payment_routes -->|"dispatches"| node_payment_controller
node_payment_routes -->|"dispatches webhook"| node_webhook_controller
node_webhook_controller -->|"verifies events"| node_stripe
node_payment_controller -->|"reads/writes"| node_payment_model
node_subscription_controller -->|"syncs subscription status"| node_user_model

click node_auth_app "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/app.js"
click node_auth_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/routers/authRouter.js"
click node_auth_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/controllers/authController.js"
click node_user_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/models/usersModel.js"
click node_token_service "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/utils/tokenService.js"
click node_courier_app "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/app.js"
click node_agent_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/routers/agentRoutes.js"
click node_agent_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/controllers/agentController.js"
click node_agent_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/models/agentModel.js"
click node_internal_agent_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/routers/internalRoutes.js"
click node_decharge_app "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/app.js"
click node_colis_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/routers/colisRoutes.js"
click node_colis_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/controllers/colisController.js"
click node_colis_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/models/colisModel.js"
click node_decharge_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/routers/dechargeRoutes.js"
click node_decharge_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/controllers/dechargeController.js"
click node_decharge_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/models/dechargeModel.js"
click node_payment_app "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/app.js"
click node_subscription_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/routers/subscriptionRoutes.js"
click node_subscription_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/subscriptionController.js"
click node_payment_routes "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/routers/paymentRoutes.js"
click node_payment_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/paymentController.js"
click node_webhook_controller "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/webhookController.js"
click node_stripe_service "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/services/stripeService.js"
click node_subscription_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/models/subscriptionModel.js"
click node_payment_model "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/models/paymentModel.js"
click node_service_client "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/shared-middlewares/middlewares/serviceClient.js"
click node_cache "https://github.com/lycorecoil/ika-tracker/blob/main/Backend/shared-middlewares/redisCache.js"

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_auth_app,node_auth_routes,node_auth_controller,node_user_model,node_token_service,node_user toneBlue
class node_courier_app,node_agent_routes,node_agent_controller,node_agent_model,node_internal_agent_routes toneAmber
class node_decharge_app,node_colis_routes,node_colis_controller,node_colis_model,node_decharge_routes,node_decharge_controller,node_decharge_model toneMint
class node_payment_app,node_subscription_routes,node_subscription_controller,node_payment_routes,node_payment_controller,node_webhook_controller,node_stripe_service,node_subscription_model,node_payment_model toneRose
class node_service_client,node_cache,node_stripe,node_mail toneIndigo
```

## Components

### Authentication

- [Auth service](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/app.js): `Backend/AuthService/app.js`
- [Auth routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/routers/authRouter.js): `Backend/AuthService/src/routers/authRouter.js`
- [Auth workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/controllers/authController.js): `Backend/AuthService/src/controllers/authController.js`
- [User records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/models/usersModel.js): `Backend/AuthService/src/models/usersModel.js`
- [Token handling](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/AuthService/src/utils/tokenService.js): `Backend/AuthService/src/utils/tokenService.js`

### Courier Management

- [Courier service](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/app.js): `Backend/CourierService/app.js`
- [Agent routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/routers/agentRoutes.js): `Backend/CourierService/src/routers/agentRoutes.js`
- [Agent workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/controllers/agentController.js): `Backend/CourierService/src/controllers/agentController.js`
- [Agent records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/models/agentModel.js): `Backend/CourierService/src/models/agentModel.js`
- [Agent internal API](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/CourierService/src/routers/internalRoutes.js): `Backend/CourierService/src/routers/internalRoutes.js`

### Parcel Operations

- [Decharge service](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/app.js): `Backend/DechargeService/app.js`
- [Parcel routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/routers/colisRoutes.js): `Backend/DechargeService/src/routers/colisRoutes.js`
- [Parcel workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/controllers/colisController.js): `Backend/DechargeService/src/controllers/colisController.js`
- [Parcel records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/models/colisModel.js): `Backend/DechargeService/src/models/colisModel.js`
- [Delivery-slip routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/routers/dechargeRoutes.js): `Backend/DechargeService/src/routers/dechargeRoutes.js`
- [Delivery-slip workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/controllers/dechargeController.js): `Backend/DechargeService/src/controllers/dechargeController.js`
- [Delivery-slip records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/DechargeService/src/models/dechargeModel.js): `Backend/DechargeService/src/models/dechargeModel.js`

### Payments

- [Payment service](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/app.js): `Backend/PayementService/app.js`
- [Subscription routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/routers/subscriptionRoutes.js): `Backend/PayementService/src/routers/subscriptionRoutes.js`
- [Subscription workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/subscriptionController.js): `Backend/PayementService/src/controllers/subscriptionController.js`
- [Payment routes](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/routers/paymentRoutes.js): `Backend/PayementService/src/routers/paymentRoutes.js`
- [Payment workflows](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/paymentController.js): `Backend/PayementService/src/controllers/paymentController.js`
- [Stripe webhooks](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/controllers/webhookController.js): `Backend/PayementService/src/controllers/webhookController.js`
- [Stripe adapter](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/services/stripeService.js): `Backend/PayementService/services/stripeService.js`
- [Subscription records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/models/subscriptionModel.js): `Backend/PayementService/src/models/subscriptionModel.js`
- [Payment records](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/PayementService/src/models/paymentModel.js): `Backend/PayementService/src/models/paymentModel.js`

### Shared Middleware

- [Service client](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/shared-middlewares/middlewares/serviceClient.js): `Backend/shared-middlewares/middlewares/serviceClient.js`
- [Redis cache](https://github.com/lycorecoil/ika-tracker/blob/main/Backend/shared-middlewares/redisCache.js): `Backend/shared-middlewares/redisCache.js`

### Other components

- **User**
- **Stripe**
- **Email provider**

## Connections

- User → Auth service: uses API
- Auth service → Auth routes: mounts
- Auth routes → Auth workflows: dispatches
- Auth workflows → User records: reads/writes
- Auth workflows → Token handling: uses tokens
- Auth service → User records: connects MongoDB
- Auth service → Redis cache: caches auth routes
- Auth workflows → Email provider: sends verification mail
- User → Courier service: manages couriers
- Courier service → Agent routes: mounts
- Agent routes → Agent workflows: dispatches
- Agent workflows → Agent records: reads/writes
- Agent workflows → Service client: requests auth service
- Service client → Auth service: calls internal API
- Agent workflows → Redis cache: invalidates entries
- Agent workflows → Email provider: sends welcome email
- Courier service → Agent internal API: mounts
- Agent internal API → Agent records: checks agent
- User → Decharge service: manages deliveries
- Decharge service → Parcel routes: mounts
- Parcel routes → Parcel workflows: dispatches
- Parcel workflows → Parcel records: reads/writes
- Parcel workflows → Service client: checks subscription and agent
- Parcel workflows → Redis cache: invalidates entries
- Parcel workflows → Agent routes: checks agent via internal API
- Decharge service → Delivery-slip routes: mounts
- Delivery-slip routes → Delivery-slip workflows: dispatches
- Delivery-slip workflows → Delivery-slip records: reads/writes
- User → Payment service: manages subscription
- Payment service → Subscription routes: mounts
- Subscription routes → Subscription workflows: dispatches
- Subscription workflows → Subscription records: reads/writes
- Subscription workflows → Stripe adapter: creates/cancels subscription
- Stripe adapter → Stripe: calls API
- Payment service → Payment routes: mounts
- Payment routes → Payment workflows: dispatches
- Payment routes → Stripe webhooks: dispatches webhook
- Stripe webhooks → Stripe: verifies events
- Payment workflows → Payment records: reads/writes
- Subscription workflows → User records: syncs subscription status
