# cagedbear83/ijt-marketing architecture

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

- Interactive diagram: https://gitdiagram.com/cagedbear83/ijt-marketing
- Repository: https://github.com/cagedbear83/ijt-marketing

## Overview

Illinois Job Tracker’s repository is the public marketing and support site for a work-search tracking service; it does not contain the tracker application itself. The main visitor journey starts on the landing page, explores product and pricing information, then follows a sign-up link to the separate app. Visitors can also submit a contact form, while company and legal pages provide supporting information. Shared site data, navigation, and presentation components support these routes. The README is empty, so capabilities beyond the sampled source are reflected only where the source index or excerpts support them; the contact API’s downstream behavior is not shown.

Main entry points: [`app/page.tsx`](https://github.com/cagedbear83/ijt-marketing/blob/main/app/page.tsx) (Landing page), [`lib/site.ts`](https://github.com/cagedbear83/ijt-marketing/blob/main/lib/site.ts) (Site content data), [`components/site-nav.tsx`](https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-nav.tsx) (Site navigation), [`components/site-footer.tsx`](https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-footer.tsx) (Site footer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public pages"]
  node_home["Landing page<br/>[page.tsx]"]
  node_product["Product information"]
  node_pricing["Pricing plans<br/>[page.tsx]"]
  node_about["About page<br/>[page.tsx]"]
end

subgraph group_support["Support and policies"]
  node_contact["Contact form<br/>[page.tsx]"]
  node_contact_api["Contact endpoint<br/>[route.ts]"]
  node_legal_pages["Legal pages"]
  node_unsubscribe["Unsubscribe page<br/>[page.tsx]"]
end

subgraph group_shared["Shared site components"]
  node_site_layout["Site layout<br/>[layout.tsx]"]
  node_site_nav["Site navigation<br/>[site-nav.tsx]"]
  node_site_footer["Site footer<br/>[site-footer.tsx]"]
  node_logo["Brand logo<br/>[logo.tsx]"]
  node_app_link["App link<br/>[app-link.tsx]"]
  node_ui_bits["Page UI<br/>[ui-bits.tsx]"]
  node_legal_layout["Legal layout<br/>[legal.tsx]"]
end

subgraph group_data["Site configuration"]
  node_site_data["Site content data<br/>[site.ts]"]
end

node_visitor(("Site visitor"))
node_app_service["Tracker app"]

node_visitor -->|"visits"| node_home
node_visitor -->|"opens"| node_contact
node_home -->|"links to"| node_product
node_home -->|"links to"| node_pricing
node_home -->|"starts signup"| node_app_service
node_contact -->|"POSTs form"| node_contact_api
node_pricing -->|"links to signup"| node_app_service
node_site_layout -->|"renders"| node_site_nav
node_site_layout -->|"renders"| node_site_footer
node_site_nav -->|"renders"| node_logo
node_site_footer -->|"renders"| node_logo
node_site_nav -->|"uses"| node_app_link
node_site_footer -->|"uses"| node_app_link
node_app_link -->|"gets app URL"| node_site_data
node_site_nav -->|"reads navigation"| node_site_data
node_site_footer -->|"reads site details"| node_site_data
node_home -->|"reads content"| node_site_data
node_pricing -->|"reads plans"| node_site_data
node_home -->|"uses"| node_ui_bits
node_contact -->|"uses"| node_ui_bits
node_legal_pages -->|"renders"| node_legal_layout
node_legal_layout -->|"uses"| node_ui_bits
node_legal_pages -->|"reads site details"| node_site_data

click node_home "https://github.com/cagedbear83/ijt-marketing/blob/main/app/page.tsx"
click node_product "https://github.com/cagedbear83/ijt-marketing/tree/main/app"
click node_pricing "https://github.com/cagedbear83/ijt-marketing/blob/main/app/pricing/page.tsx"
click node_about "https://github.com/cagedbear83/ijt-marketing/blob/main/app/about/page.tsx"
click node_contact "https://github.com/cagedbear83/ijt-marketing/blob/main/app/contact/page.tsx"
click node_contact_api "https://github.com/cagedbear83/ijt-marketing/blob/main/app/api/contact/route.ts"
click node_legal_pages "https://github.com/cagedbear83/ijt-marketing/tree/main/app"
click node_unsubscribe "https://github.com/cagedbear83/ijt-marketing/blob/main/app/unsubscribe/page.tsx"
click node_site_layout "https://github.com/cagedbear83/ijt-marketing/blob/main/app/layout.tsx"
click node_site_nav "https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-nav.tsx"
click node_site_footer "https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-footer.tsx"
click node_logo "https://github.com/cagedbear83/ijt-marketing/blob/main/components/logo.tsx"
click node_app_link "https://github.com/cagedbear83/ijt-marketing/blob/main/components/app-link.tsx"
click node_ui_bits "https://github.com/cagedbear83/ijt-marketing/blob/main/components/ui-bits.tsx"
click node_legal_layout "https://github.com/cagedbear83/ijt-marketing/blob/main/components/legal.tsx"
click node_site_data "https://github.com/cagedbear83/ijt-marketing/blob/main/lib/site.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_home,node_product,node_pricing,node_about toneBlue
class node_contact,node_contact_api,node_legal_pages,node_unsubscribe toneAmber
class node_site_layout,node_site_nav,node_site_footer,node_logo,node_app_link,node_ui_bits,node_legal_layout toneMint
class node_site_data toneRose
class node_visitor,node_app_service toneIndigo
```

## Components

### Public pages

- [Landing page](https://github.com/cagedbear83/ijt-marketing/blob/main/app/page.tsx): `app/page.tsx`
- [Product information](https://github.com/cagedbear83/ijt-marketing/tree/main/app): `app`
- [Pricing plans](https://github.com/cagedbear83/ijt-marketing/blob/main/app/pricing/page.tsx): `app/pricing/page.tsx`
- [About page](https://github.com/cagedbear83/ijt-marketing/blob/main/app/about/page.tsx): `app/about/page.tsx`

### Support and policies

- [Contact form](https://github.com/cagedbear83/ijt-marketing/blob/main/app/contact/page.tsx): `app/contact/page.tsx`
- [Contact endpoint](https://github.com/cagedbear83/ijt-marketing/blob/main/app/api/contact/route.ts): `app/api/contact/route.ts`
- [Legal pages](https://github.com/cagedbear83/ijt-marketing/tree/main/app): `app`
- [Unsubscribe page](https://github.com/cagedbear83/ijt-marketing/blob/main/app/unsubscribe/page.tsx): `app/unsubscribe/page.tsx`

### Shared site components

- [Site layout](https://github.com/cagedbear83/ijt-marketing/blob/main/app/layout.tsx): `app/layout.tsx`
- [Site navigation](https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-nav.tsx): `components/site-nav.tsx`
- [Site footer](https://github.com/cagedbear83/ijt-marketing/blob/main/components/site-footer.tsx): `components/site-footer.tsx`
- [Brand logo](https://github.com/cagedbear83/ijt-marketing/blob/main/components/logo.tsx): `components/logo.tsx`
- [App link](https://github.com/cagedbear83/ijt-marketing/blob/main/components/app-link.tsx): `components/app-link.tsx`
- [Page UI](https://github.com/cagedbear83/ijt-marketing/blob/main/components/ui-bits.tsx): `components/ui-bits.tsx`
- [Legal layout](https://github.com/cagedbear83/ijt-marketing/blob/main/components/legal.tsx): `components/legal.tsx`

### Site configuration

- [Site content data](https://github.com/cagedbear83/ijt-marketing/blob/main/lib/site.ts): `lib/site.ts`

### Other components

- **Site visitor**
- **Tracker app**

## Connections

- Site visitor → Landing page: visits (evidence: `app/page.tsx`)
- Site visitor → Contact form: opens (evidence: `app/contact/page.tsx`)
- Landing page → Product information: links to (evidence: `app/page.tsx`)
- Landing page → Pricing plans: links to (evidence: `app/page.tsx`)
- Landing page → Tracker app: starts signup (evidence: `app/page.tsx`)
- Contact form → Contact endpoint: POSTs form (evidence: `app/contact/page.tsx`)
- Pricing plans → Tracker app: links to signup (evidence: `app/pricing/page.tsx`)
- Site layout → Site navigation: renders (evidence: `app/layout.tsx`)
- Site layout → Site footer: renders (evidence: `app/layout.tsx`)
- Site navigation → Brand logo: renders (evidence: `components/site-nav.tsx`)
- Site footer → Brand logo: renders (evidence: `components/site-footer.tsx`)
- Site navigation → App link: uses (evidence: `components/site-nav.tsx`)
- Site footer → App link: uses (evidence: `components/site-footer.tsx`)
- App link → Site content data: gets app URL (evidence: `components/app-link.tsx`)
- Site navigation → Site content data: reads navigation (evidence: `components/site-nav.tsx`)
- Site footer → Site content data: reads site details (evidence: `components/site-footer.tsx`)
- Landing page → Site content data: reads content (evidence: `app/page.tsx`)
- Pricing plans → Site content data: reads plans (evidence: `app/pricing/page.tsx`)
- Landing page → Page UI: uses (evidence: `app/page.tsx`)
- Contact form → Page UI: uses (evidence: `app/contact/page.tsx`)
- Legal pages → Legal layout: renders (evidence: `app/terms/page.tsx`)
- Legal layout → Page UI: uses (evidence: `components/legal.tsx`)
- Legal pages → Site content data: reads site details (evidence: `app/terms/page.tsx`)
