# noobdevelopers/j.a.r.v.i.s architecture

> Architecture diagram of the GitHub repository noobdevelopers/j.a.r.v.i.s, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/noobdevelopers/j.a.r.v.i.s
- Repository: https://github.com/noobdevelopers/j.a.r.v.i.s

## Overview

J.A.R.V.I.S is a Python personal voice assistant. The main workflow is spoken input captured by `jarvis.py`, command dispatch, then a spoken response or an action such as opening a browser. The main script directly calls several feature modules; the README documents additional assistant capabilities whose implementation is not shown in the sampled excerpts. Calendar access and the Amazon price script are separate utilities in the tree. Relationships for unsampled modules are omitted unless documented; the graph does not assume they are wired into the assistant.

Main entry points: [`jarvis.py`](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py) (Command loop), [`diction.py`](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/diction.py) (Dictionary), [`loc.py`](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/loc.py) (Location weather), [`news.py`](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/news.py) (News headlines)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_assistant["Voice assistant"]
  node_jarvis["Command loop<br/>[jarvis.py]"]
  node_speech["Speech I/O<br/>[jarvis.py]"]
end

subgraph group_information["Information services"]
  node_wiki["Wikipedia lookup<br/>[jarvis.py]"]
  node_dictionary["Dictionary<br/>[diction.py]"]
  node_weather["Location weather<br/>[loc.py]"]
  node_news["News headlines<br/>[news.py]"]
  node_quotes["Inspirational quotes<br/>[quote.py]"]
end

subgraph group_actions["Assistant actions"]
  node_youtube_search["YouTube search<br/>[youtube.py]"]
  node_browser["Web browser"]
  node_email["Email sending<br/>[jarvis.py]"]
  node_memory["Remembered text<br/>[jarvis.py]"]
  node_desktop["Desktop controls<br/>[jarvis.py]"]
end

subgraph group_utilities["Standalone utilities"]
  node_downloader["YouTube downloader"]
  node_calendar["Calendar events<br/>[calendar.py]"]
  node_amazon["Amazon price alert<br/>[amazon.py]"]
end

node_user(("Voice user"))
node_speech_service["Speech recognition"]
node_news_service["News API"]
node_dictionary_service["Dictionary lookup"]
node_weather_service["Weather API"]
node_smtp["SMTP server"]

node_user -->|"speaks commands"| node_jarvis
node_jarvis -->|"captures input"| node_speech
node_speech -->|"recognizes audio"| node_speech_service
node_jarvis -->|"looks up"| node_wiki
node_jarvis -->|"calls translate"| node_dictionary
node_dictionary -->|"gets meanings"| node_dictionary_service
node_jarvis -->|"calls weather"| node_weather
node_weather -->|"requests conditions"| node_weather_service
node_jarvis -->|"calls headlines"| node_news
node_news -->|"fetches headlines"| node_news_service
node_jarvis -->|"calls tell_quote"| node_quotes
node_jarvis -->|"calls youtube"| node_youtube_search
node_youtube_search -->|"opens results"| node_browser
node_jarvis -->|"opens pages"| node_browser
node_jarvis -->|"sends message"| node_email
node_email -->|"sends mail"| node_smtp
node_jarvis -->|"writes or reads"| node_memory
node_jarvis -->|"runs controls"| node_desktop
node_jarvis -->|"executes script"| node_downloader
node_user -.->|"requests events"| node_calendar
node_calendar -->|"prints events"| node_user
node_amazon -->|"sends alert"| node_smtp

click node_jarvis "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_speech "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_wiki "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_dictionary "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/diction.py"
click node_weather "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/loc.py"
click node_news "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/news.py"
click node_quotes "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/quote.py"
click node_youtube_search "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/youtube.py"
click node_email "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_memory "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_desktop "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py"
click node_downloader "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/youtube_downloader.py"
click node_calendar "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/calendar.py"
click node_amazon "https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/amazon.py"

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_jarvis,node_speech,node_user toneBlue
class node_wiki,node_dictionary,node_weather,node_news,node_quotes toneAmber
class node_youtube_search,node_browser,node_email,node_memory,node_desktop,node_news_service,node_weather_service,node_smtp toneMint
class node_downloader,node_calendar,node_amazon toneRose
class node_speech_service,node_dictionary_service toneIndigo
```

## Components

### Voice assistant

- [Command loop](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`
- [Speech I/O](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`

### Information services

- [Wikipedia lookup](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`
- [Dictionary](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/diction.py): `diction.py`
- [Location weather](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/loc.py): `loc.py`
- [News headlines](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/news.py): `news.py`
- [Inspirational quotes](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/quote.py): `quote.py`

### Assistant actions

- [YouTube search](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/youtube.py): `youtube.py`
- **Web browser**
- [Email sending](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`
- [Remembered text](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`
- [Desktop controls](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/jarvis.py): `jarvis.py`

### Standalone utilities

- [YouTube downloader](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/youtube_downloader.py): `youtube_downloader.py`
- [Calendar events](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/calendar.py): `calendar.py`
- [Amazon price alert](https://github.com/noobdevelopers/j.a.r.v.i.s/blob/master/amazon.py): `amazon.py`

### Other components

- **Voice user**
- **Speech recognition**
- **News API**
- **Dictionary lookup**
- **Weather API**
- **SMTP server**

## Connections

- Voice user → Command loop: speaks commands (evidence: `README.md`)
- Command loop → Speech I/O: captures input (evidence: `jarvis.py`)
- Speech I/O → Speech recognition: recognizes audio (evidence: `jarvis.py`)
- Command loop → Wikipedia lookup: looks up (evidence: `jarvis.py`)
- Command loop → Dictionary: calls translate (evidence: `jarvis.py`)
- Dictionary → Dictionary lookup: gets meanings (evidence: `diction.py`)
- Command loop → Location weather: calls weather (evidence: `jarvis.py`)
- Location weather → Weather API: requests conditions (evidence: `loc.py`)
- Command loop → News headlines: calls headlines (evidence: `jarvis.py`)
- News headlines → News API: fetches headlines (evidence: `news.py`)
- Command loop → Inspirational quotes: calls tell_quote (evidence: `jarvis.py`)
- Command loop → YouTube search: calls youtube (evidence: `jarvis.py`)
- YouTube search → Web browser: opens results (evidence: `youtube.py`)
- Command loop → Web browser: opens pages (evidence: `jarvis.py`)
- Command loop → Email sending: sends message (evidence: `jarvis.py`)
- Email sending → SMTP server: sends mail (evidence: `jarvis.py`)
- Command loop → Remembered text: writes or reads (evidence: `jarvis.py`)
- Command loop → Desktop controls: runs controls (evidence: `jarvis.py`)
- Command loop → YouTube downloader: executes script (evidence: `jarvis.py`)
- Voice user → Calendar events: requests events
- Calendar events → Voice user: prints events (evidence: `calendar.py`)
- Amazon price alert → SMTP server: sends alert (evidence: `amazon.py`)
