# enmanuel1/career-tracker-api architecture

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

- Interactive diagram: https://gitdiagram.com/enmanuel1/career-tracker-api
- Repository: https://github.com/enmanuel1/career-tracker-api

## Overview

This is a NestJS career-tracking API: users authenticate, then manage job applications and related activity, documents, contacts, and preparation materials. Controllers accept API requests and delegate to domain services; services implement domain operations, with Prisma providing persistence. The tree supports these major capabilities, but sampled source is limited, so links between unsampled services and external integrations are omitted.

Main entry points: [`src/main.ts`](https://github.com/enmanuel1/career-tracker-api/blob/main/src/main.ts) (HTTP bootstrap), [`src/core/database/prisma.service.ts`](https://github.com/enmanuel1/career-tracker-api/blob/main/src/core/database/prisma.service.ts) (Prisma persistence), [`src/modules/applications/applications.service.ts`](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/applications.service.ts) (Job applications), [`src/modules/applications/events/application-events.service.ts`](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/events/application-events.service.ts) (Application events)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and identity"]
  node_bootstrap["HTTP bootstrap<br/>[main.ts]"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_users["User profile<br/>[users.service.ts]"]
end

subgraph group_jobs["Application tracking"]
  node_applications["Job applications"]
  node_events["Application events"]
  node_appcontacts["Application contacts"]
  node_appdocs["Application documents"]
  node_contacts["Contact directory"]
  node_outreach["Networking outreach"]
  node_dashboard["Career dashboard"]
end

subgraph group_preparation["Career preparation"]
  node_resumes["Resume versions<br/>[resumes.service.ts]"]
  node_uploads["File uploads<br/>[uploads.service.ts]"]
  node_prep["Preparation tasks"]
  node_resources["Prep resources"]
  node_reminders["Reminders"]
  node_stories["STAR stories"]
  node_templates["Message templates"]
end

subgraph group_platform["Shared platform"]
  node_prisma[("Prisma persistence<br/>[prisma.service.ts]")]
  node_health["Health endpoint"]
end

node_user(("API user"))

node_user -->|"sends requests"| node_bootstrap
node_bootstrap -->|"routes auth"| node_auth
node_bootstrap -->|"routes requests"| node_applications
node_bootstrap -->|"routes requests"| node_users
node_bootstrap -->|"routes requests"| node_events
node_bootstrap -->|"routes requests"| node_appcontacts
node_bootstrap -->|"routes requests"| node_appdocs
node_bootstrap -->|"routes requests"| node_contacts
node_bootstrap -->|"routes requests"| node_outreach
node_bootstrap -->|"routes requests"| node_dashboard
node_bootstrap -->|"routes requests"| node_resumes
node_bootstrap -->|"routes requests"| node_uploads
node_bootstrap -->|"routes requests"| node_prep
node_bootstrap -->|"routes requests"| node_resources
node_bootstrap -->|"routes requests"| node_reminders
node_bootstrap -->|"routes requests"| node_stories
node_bootstrap -->|"routes requests"| node_templates
node_bootstrap -->|"routes requests"| node_health
node_auth -->|"reads and writes"| node_prisma
node_applications -->|"reads and writes"| node_prisma
node_users -->|"reads and writes"| node_prisma
node_events -->|"reads and writes"| node_prisma
node_appcontacts -->|"reads and writes"| node_prisma
node_appdocs -->|"reads and writes"| node_prisma
node_contacts -->|"reads and writes"| node_prisma
node_outreach -->|"reads and writes"| node_prisma
node_dashboard -->|"reads data"| node_prisma
node_resumes -->|"reads and writes"| node_prisma
node_uploads -->|"persists metadata"| node_prisma
node_prep -->|"reads and writes"| node_prisma
node_resources -->|"reads and writes"| node_prisma
node_reminders -->|"reads and writes"| node_prisma
node_stories -->|"reads and writes"| node_prisma
node_templates -->|"reads and writes"| node_prisma
node_applications -->|"creates applied event"| node_events

click node_bootstrap "https://github.com/enmanuel1/career-tracker-api/blob/main/src/main.ts"
click node_auth "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/auth/auth.service.ts"
click node_users "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/users/users.service.ts"
click node_applications "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/applications.service.ts"
click node_events "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/events/application-events.service.ts"
click node_appcontacts "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/application-contacts/application-contacts.service.ts"
click node_appdocs "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/application-documents/application-documents.service.ts"
click node_contacts "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/contacts/contacts.service.ts"
click node_outreach "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/outreach/outreach.service.ts"
click node_dashboard "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/dashboard/dashboard.service.ts"
click node_resumes "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/resumes/resumes.service.ts"
click node_uploads "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/uploads/uploads.service.ts"
click node_prep "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/prep/prep-tasks.service.ts"
click node_resources "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/prep/prep-resources.service.ts"
click node_reminders "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/reminders/reminders.service.ts"
click node_stories "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/star-stories/star-stories.service.ts"
click node_templates "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/templates/templates.service.ts"
click node_prisma "https://github.com/enmanuel1/career-tracker-api/blob/main/src/core/database/prisma.service.ts"
click node_health "https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/health/health.controller.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_auth,node_users,node_user toneBlue
class node_applications,node_events,node_appcontacts,node_appdocs,node_contacts,node_outreach,node_dashboard toneAmber
class node_resumes,node_uploads,node_prep,node_resources,node_reminders,node_stories,node_templates toneMint
class node_prisma,node_health toneRose
```

## Components

### API and identity

- [HTTP bootstrap](https://github.com/enmanuel1/career-tracker-api/blob/main/src/main.ts): `src/main.ts`
- [Authentication](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/auth/auth.service.ts): `src/modules/auth/auth.service.ts`
- [User profile](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/users/users.service.ts): `src/modules/users/users.service.ts`

### Application tracking

- [Job applications](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/applications.service.ts): `src/modules/applications/applications.service.ts`
- [Application events](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/applications/events/application-events.service.ts): `src/modules/applications/events/application-events.service.ts`
- [Application contacts](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/application-contacts/application-contacts.service.ts): `src/modules/application-contacts/application-contacts.service.ts`
- [Application documents](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/application-documents/application-documents.service.ts): `src/modules/application-documents/application-documents.service.ts`
- [Contact directory](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/contacts/contacts.service.ts): `src/modules/contacts/contacts.service.ts`
- [Networking outreach](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/outreach/outreach.service.ts): `src/modules/outreach/outreach.service.ts`
- [Career dashboard](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/dashboard/dashboard.service.ts): `src/modules/dashboard/dashboard.service.ts`

### Career preparation

- [Resume versions](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/resumes/resumes.service.ts): `src/modules/resumes/resumes.service.ts`
- [File uploads](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/uploads/uploads.service.ts): `src/modules/uploads/uploads.service.ts`
- [Preparation tasks](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/prep/prep-tasks.service.ts): `src/modules/prep/prep-tasks.service.ts`
- [Prep resources](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/prep/prep-resources.service.ts): `src/modules/prep/prep-resources.service.ts`
- [Reminders](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/reminders/reminders.service.ts): `src/modules/reminders/reminders.service.ts`
- [STAR stories](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/star-stories/star-stories.service.ts): `src/modules/star-stories/star-stories.service.ts`
- [Message templates](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/templates/templates.service.ts): `src/modules/templates/templates.service.ts`

### Shared platform

- [Prisma persistence](https://github.com/enmanuel1/career-tracker-api/blob/main/src/core/database/prisma.service.ts): `src/core/database/prisma.service.ts`
- [Health endpoint](https://github.com/enmanuel1/career-tracker-api/blob/main/src/modules/health/health.controller.ts): `src/modules/health/health.controller.ts`

### Other components

- **API user**

## Connections

- API user → HTTP bootstrap: sends requests
- HTTP bootstrap → Authentication: routes auth
- HTTP bootstrap → Job applications: routes requests
- HTTP bootstrap → User profile: routes requests
- HTTP bootstrap → Application events: routes requests
- HTTP bootstrap → Application contacts: routes requests
- HTTP bootstrap → Application documents: routes requests
- HTTP bootstrap → Contact directory: routes requests
- HTTP bootstrap → Networking outreach: routes requests
- HTTP bootstrap → Career dashboard: routes requests
- HTTP bootstrap → Resume versions: routes requests
- HTTP bootstrap → File uploads: routes requests
- HTTP bootstrap → Preparation tasks: routes requests
- HTTP bootstrap → Prep resources: routes requests
- HTTP bootstrap → Reminders: routes requests
- HTTP bootstrap → STAR stories: routes requests
- HTTP bootstrap → Message templates: routes requests
- HTTP bootstrap → Health endpoint: routes requests
- Authentication → Prisma persistence: reads and writes
- Job applications → Prisma persistence: reads and writes
- User profile → Prisma persistence: reads and writes
- Application events → Prisma persistence: reads and writes
- Application contacts → Prisma persistence: reads and writes
- Application documents → Prisma persistence: reads and writes
- Contact directory → Prisma persistence: reads and writes
- Networking outreach → Prisma persistence: reads and writes
- Career dashboard → Prisma persistence: reads data
- Resume versions → Prisma persistence: reads and writes
- File uploads → Prisma persistence: persists metadata
- Preparation tasks → Prisma persistence: reads and writes
- Prep resources → Prisma persistence: reads and writes
- Reminders → Prisma persistence: reads and writes
- STAR stories → Prisma persistence: reads and writes
- Message templates → Prisma persistence: reads and writes
- Job applications → Application events: creates applied event
