# mraza007/python-for-beginners architecture

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

- Interactive diagram: https://gitdiagram.com/mraza007/python-for-beginners
- Repository: https://github.com/mraza007/python-for-beginners

## Overview

This repository is a beginner Python course offered as plain lesson files and as an interactive browser course, followed by three capstone projects. The principal interactive workflow is: a learner selects a module, `web/app.js` loads and renders its lesson, turns examples into editable cells, and runs code in browser-hosted Pyodide; lesson references also let the app load exercises and solutions on demand. The curriculum spans fundamentals, data structures, functions/modules, real-world Python, and OOP. The README documents these capabilities; source excerpts show the browser flow but not every rendering detail.

Main entry points: [`web/app.js`](https://github.com/mraza007/python-for-beginners/blob/master/web/app.js) (Interactive Course App), [`course`](https://github.com/mraza007/python-for-beginners/tree/master/course) (Lesson Markdown), [`projects/01-number-guessing-game`](https://github.com/mraza007/python-for-beginners/tree/master/projects/01-number-guessing-game) (Number Guessing), [`projects/02-mad-libs`](https://github.com/mraza007/python-for-beginners/tree/master/projects/02-mad-libs) (Mad Libs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_curriculum["Python Curriculum"]
  node_fundamentals["Fundamentals 01–08"]
  node_data_structures["Data Structures 09–12"]
  node_functions_modules["Functions &amp; Modules 13–16"]
  node_real_world["Real-World Python 17–19"]
  node_oop["OOP 20–22"]
  node_lesson_content["Lesson Markdown"]
  node_practice_files["Exercises &amp; Solutions"]
end

subgraph group_projects["Capstone Projects"]
  node_guessing_game["Number Guessing"]
  node_mad_libs["Mad Libs"]
  node_todo["To-Do List"]
end

subgraph group_interactive["Browser Course"]
  node_web_app["Interactive Course App<br/>[app.js]"]
  node_pyodide["Pyodide Runtime"]
  node_python_code["Edited Python Code"]
  node_run_output["Code Output"]
end

node_learner(("Learner"))
node_browser(("Web Browser"))

node_learner -->|"opens course"| node_browser
node_browser -->|"loads app"| node_web_app
node_learner -->|"selects module"| node_web_app
node_web_app -->|"fetches lesson"| node_lesson_content
node_lesson_content -->|"lesson text"| node_web_app
node_web_app -->|"loads module"| node_fundamentals
node_web_app -->|"loads module"| node_data_structures
node_web_app -->|"loads module"| node_functions_modules
node_web_app -->|"loads module"| node_real_world
node_web_app -->|"loads module"| node_oop
node_web_app -->|"loads project"| node_guessing_game
node_web_app -->|"loads project"| node_mad_libs
node_web_app -->|"loads project"| node_todo
node_web_app -->|"fetches referenced files"| node_practice_files
node_learner -->|"edits and runs"| node_web_app
node_web_app -->|"submits code"| node_python_code
node_web_app -->|"runs Python"| node_pyodide
node_pyodide -->|"produces output"| node_run_output
node_web_app -->|"displays output"| node_run_output

click node_fundamentals "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_data_structures "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_functions_modules "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_real_world "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_oop "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_guessing_game "https://github.com/mraza007/python-for-beginners/tree/master/projects/01-number-guessing-game"
click node_mad_libs "https://github.com/mraza007/python-for-beginners/tree/master/projects/02-mad-libs"
click node_todo "https://github.com/mraza007/python-for-beginners/tree/master/projects/03-todo-list"
click node_web_app "https://github.com/mraza007/python-for-beginners/blob/master/web/app.js"
click node_lesson_content "https://github.com/mraza007/python-for-beginners/tree/master/course"
click node_practice_files "https://github.com/mraza007/python-for-beginners/tree/master/course"

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_fundamentals,node_data_structures,node_functions_modules,node_real_world,node_oop,node_lesson_content,node_practice_files,node_browser toneBlue
class node_guessing_game,node_mad_libs,node_todo toneAmber
class node_web_app,node_pyodide,node_python_code,node_run_output toneMint
class node_learner toneIndigo
```

## Components

### Python Curriculum

- [Fundamentals 01–08](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [Data Structures 09–12](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [Functions & Modules 13–16](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [Real-World Python 17–19](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [OOP 20–22](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [Lesson Markdown](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`
- [Exercises & Solutions](https://github.com/mraza007/python-for-beginners/tree/master/course): `course`

### Capstone Projects

- [Number Guessing](https://github.com/mraza007/python-for-beginners/tree/master/projects/01-number-guessing-game): `projects/01-number-guessing-game`
- [Mad Libs](https://github.com/mraza007/python-for-beginners/tree/master/projects/02-mad-libs): `projects/02-mad-libs`
- [To-Do List](https://github.com/mraza007/python-for-beginners/tree/master/projects/03-todo-list): `projects/03-todo-list`

### Browser Course

- [Interactive Course App](https://github.com/mraza007/python-for-beginners/blob/master/web/app.js): `web/app.js`
- **Pyodide Runtime**
- **Edited Python Code**
- **Code Output**

### Other components

- **Learner**
- **Web Browser**

## Connections

- Learner → Web Browser: opens course
- Web Browser → Interactive Course App: loads app
- Learner → Interactive Course App: selects module
- Interactive Course App → Lesson Markdown: fetches lesson
- Lesson Markdown → Interactive Course App: lesson text
- Interactive Course App → Fundamentals 01–08: loads module
- Interactive Course App → Data Structures 09–12: loads module
- Interactive Course App → Functions & Modules 13–16: loads module
- Interactive Course App → Real-World Python 17–19: loads module
- Interactive Course App → OOP 20–22: loads module
- Interactive Course App → Number Guessing: loads project
- Interactive Course App → Mad Libs: loads project
- Interactive Course App → To-Do List: loads project
- Interactive Course App → Exercises & Solutions: fetches referenced files
- Learner → Interactive Course App: edits and runs
- Interactive Course App → Edited Python Code: submits code
- Interactive Course App → Pyodide Runtime: runs Python
- Pyodide Runtime → Code Output: produces output
- Interactive Course App → Code Output: displays output
