# zahidrahman47/job-mission-backend architecture

> Architecture diagram of the GitHub repository zahidrahman47/job-mission-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/zahidrahman47/job-mission-backend
- Repository: https://github.com/zahidrahman47/job-mission-backend

## Overview

This is a job-search tracking API: users authenticate, capture or import opportunities, manage applications and related companies/contacts, record activity, and track reminders; analytics and exports provide reporting and portability. The main request path is Express app → mounted API routers → feature controllers → domain services → repositories and MongoDB. Application services coordinate related domain services and transactions. The tree and excerpts support the application/auth flow and route mounting; several other feature implementations are unsampled, so their internal calls are not asserted.

Main entry points: [`src/routes.ts`](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/routes.ts) (API router), [`src/modules/applications/applications.service.ts`](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/applications/applications.service.ts) (Applications), [`src/db/connect.ts`](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/db/connect.ts) (MongoDB), [`src/modules/auth/auth.service.ts`](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/auth/auth.service.ts) (Authentication)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["API runtime"]
  node_app["HTTP application<br/>[app.ts]"]
  node_router["API router<br/>[routes.ts]"]
  node_authmw["Auth middleware<br/>[require-auth.ts]"]
end

subgraph group_identity["Identity and accounts"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_users["User accounts<br/>[users.service.ts]"]
end

subgraph group_jobsearch["Job search domain"]
  node_applications["Applications"]
  node_status["Status rules<br/>[status-machine.ts]"]
  node_companies["Companies"]
  node_contacts["Contacts"]
  node_activities["Activity timeline"]
  node_reminders["Reminders"]
end

subgraph group_insights["Capture and reporting"]
  node_capture["Email capture"]
  node_imports["Data imports"]
  node_analytics["Analytics"]
  node_exports["Data exports"]
end

subgraph group_platform["Persistence and services"]
  node_store[("MongoDB<br/>[connect.ts]")]
  node_mailer["Email delivery<br/>[mailer.ts]"]
  node_transactions["Transactions<br/>[transaction.ts]"]
  node_validation["Input validation<br/>[validation.ts]"]
end

node_client(("API client"))

node_client -->|"sends requests"| node_app
node_app -->|"mounts API"| node_router
node_router -->|"mounts auth routes"| node_auth
node_router -->|"mounts user routes"| node_users
node_router -->|"mounts application routes"| node_applications
node_router -->|"mounts activity routes"| node_activities
node_router -->|"mounts company routes"| node_companies
node_router -->|"mounts contact routes"| node_contacts
node_router -->|"mounts reminder routes"| node_reminders
node_router -->|"mounts capture routes"| node_capture
node_router -->|"mounts import routes"| node_imports
node_router -->|"mounts analytics routes"| node_analytics
node_router -->|"mounts export routes"| node_exports
node_authmw -->|"resolves sessions"| node_auth
node_applications -->|"uses transitions"| node_status
node_applications -->|"resolves company"| node_companies
node_applications -->|"loads contacts"| node_contacts
node_applications -->|"loads reminders"| node_reminders
node_applications -->|"records activity"| node_activities
node_applications -->|"loads user data"| node_users
node_applications -->|"runs transactions"| node_transactions
node_auth -->|"looks up accounts"| node_users
node_auth -->|"sends messages"| node_mailer
node_applications -.->|"persists records"| node_store
node_companies -.->|"persists records"| node_store
node_contacts -.->|"persists records"| node_store
node_activities -.->|"persists events"| node_store
node_reminders -.->|"persists reminders"| node_store
node_client -.->|"submits input"| node_validation

click node_app "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/app.ts"
click node_router "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/routes.ts"
click node_authmw "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/middleware/require-auth.ts"
click node_auth "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/auth/auth.service.ts"
click node_users "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/users/users.service.ts"
click node_applications "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/applications/applications.service.ts"
click node_status "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/applications/status-machine.ts"
click node_companies "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/companies/companies.service.ts"
click node_contacts "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/contacts/contacts.service.ts"
click node_activities "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/activities/activities.service.ts"
click node_reminders "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/reminders/reminders.service.ts"
click node_capture "https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/capture"
click node_imports "https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/imports"
click node_analytics "https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/analytics"
click node_exports "https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/exports"
click node_store "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/db/connect.ts"
click node_mailer "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/lib/mailer.ts"
click node_transactions "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/db/transaction.ts"
click node_validation "https://github.com/zahidrahman47/job-mission-backend/blob/main/src/lib/validation.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_router,node_authmw,node_client toneBlue
class node_auth,node_users toneAmber
class node_applications,node_status,node_companies,node_contacts,node_activities,node_reminders toneMint
class node_capture,node_imports,node_analytics,node_exports toneRose
class node_store,node_mailer,node_transactions,node_validation toneIndigo
```

## Components

### API runtime

- [HTTP application](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/app.ts): `src/app.ts`
- [API router](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/routes.ts): `src/routes.ts`
- [Auth middleware](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/middleware/require-auth.ts): `src/middleware/require-auth.ts`

### Identity and accounts

- [Authentication](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [User accounts](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/users/users.service.ts): `src/modules/users/users.service.ts`

### Job search domain

- [Applications](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/applications/applications.service.ts): `src/modules/applications/applications.service.ts`
- [Status rules](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/applications/status-machine.ts): `src/modules/applications/status-machine.ts`
- [Companies](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/companies/companies.service.ts): `src/modules/companies/companies.service.ts`
- [Contacts](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/contacts/contacts.service.ts): `src/modules/contacts/contacts.service.ts`
- [Activity timeline](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/activities/activities.service.ts): `src/modules/activities/activities.service.ts`
- [Reminders](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/modules/reminders/reminders.service.ts): `src/modules/reminders/reminders.service.ts`

### Capture and reporting

- [Email capture](https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/capture): `src/modules/capture`
- [Data imports](https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/imports): `src/modules/imports`
- [Analytics](https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/analytics): `src/modules/analytics`
- [Data exports](https://github.com/zahidrahman47/job-mission-backend/tree/main/src/modules/exports): `src/modules/exports`

### Persistence and services

- [MongoDB](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/db/connect.ts): `src/db/connect.ts`
- [Email delivery](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/lib/mailer.ts): `src/lib/mailer.ts`
- [Transactions](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/db/transaction.ts): `src/db/transaction.ts`
- [Input validation](https://github.com/zahidrahman47/job-mission-backend/blob/main/src/lib/validation.ts): `src/lib/validation.ts`

### Other components

- **API client**

## Connections

- API client → HTTP application: sends requests (evidence: `src/app.ts`)
- HTTP application → API router: mounts API (evidence: `src/app.ts`)
- API router → Authentication: mounts auth routes (evidence: `src/routes.ts`)
- API router → User accounts: mounts user routes (evidence: `src/routes.ts`)
- API router → Applications: mounts application routes (evidence: `src/routes.ts`)
- API router → Activity timeline: mounts activity routes (evidence: `src/routes.ts`)
- API router → Companies: mounts company routes (evidence: `src/routes.ts`)
- API router → Contacts: mounts contact routes (evidence: `src/routes.ts`)
- API router → Reminders: mounts reminder routes (evidence: `src/routes.ts`)
- API router → Email capture: mounts capture routes (evidence: `src/routes.ts`)
- API router → Data imports: mounts import routes (evidence: `src/routes.ts`)
- API router → Analytics: mounts analytics routes (evidence: `src/routes.ts`)
- API router → Data exports: mounts export routes (evidence: `src/routes.ts`)
- Auth middleware → Authentication: resolves sessions (evidence: `src/middleware/require-auth.ts`)
- Applications → Status rules: uses transitions (evidence: `src/modules/applications/applications.service.ts`)
- Applications → Companies: resolves company (evidence: `src/modules/applications/applications.service.ts`)
- Applications → Contacts: loads contacts (evidence: `src/modules/applications/applications.service.ts`)
- Applications → Reminders: loads reminders (evidence: `src/modules/applications/applications.service.ts`)
- Applications → Activity timeline: records activity (evidence: `src/modules/applications/applications.service.ts`)
- Applications → User accounts: loads user data (evidence: `src/modules/applications/applications.service.ts`)
- Applications → Transactions: runs transactions (evidence: `src/modules/applications/applications.service.ts`)
- Authentication → User accounts: looks up accounts (evidence: `src/modules/auth/auth.service.ts`)
- Authentication → Email delivery: sends messages (evidence: `src/modules/auth/auth.service.ts`)
- Applications → MongoDB: persists records
- Companies → MongoDB: persists records
- Contacts → MongoDB: persists records
- Activity timeline → MongoDB: persists events
- Reminders → MongoDB: persists reminders
- API client → Input validation: submits input
