# rickmageddon/portfoliodocumentmanager architecture

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

- Interactive diagram: https://gitdiagram.com/rickmageddon/portfoliodocumentmanager
- Repository: https://github.com/rickmageddon/portfoliodocumentmanager

## Overview

Portfolio Document Manager is a desktop app for maintaining a student portfolio and producing a reflection/accountability document. The README identifies `Release_version/` as the actively supported Tkinter product; the sampled source confirms its main application, JSON-backed state, feedback editing, learning-outcome views, and document construction. The primary flow is student setup → portfolio and feedback management → reflection/document generation. README-documented import/export, semester settings, and PDF/Markdown capabilities are included, but their exact internal wiring is not established by the excerpts.

Main entry points: [`Release_version/main.py`](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py) (Tkinter app)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_main["Tkinter app<br/>[main.py]"]
end

subgraph group_portfolio["Portfolio workflow"]
  node_student_setup["Student setup<br/>[main.py]"]
  node_semester_outcomes["Semester outcomes<br/>[main.py]"]
  node_portfolio_items["Portfolio items<br/>[main.py]"]
  node_feedback["Feedback management<br/>[main.py]"]
  node_github["GitHub links"]
end

subgraph group_document["Document output"]
  node_reflections["Reflection answers<br/>[main.py]"]
  node_document_builder["Document generation<br/>[main.py]"]
  node_markdown["Markdown conversion"]
  node_pdf["PDF generation"]
  node_export["Markdown export<br/>[main.py]"]
end

subgraph group_state["Persistent data"]
  node_json_state[("JSON state")]
  node_backup_restore["Import and export<br/>[main.py]"]
end

node_student(("Student"))

node_student -->|"uses"| node_main
node_main -->|"collects details"| node_student_setup
node_main -->|"selects outcomes"| node_semester_outcomes
node_main -->|"manages items"| node_portfolio_items
node_main -->|"manages feedback"| node_feedback
node_main -->|"collects answers"| node_reflections
node_main -->|"generates document"| node_document_builder
node_document_builder -.->|"converts content"| node_markdown
node_document_builder -.->|"renders PDF"| node_pdf
node_document_builder -->|"offers export"| node_export
node_main -->|"reads and writes"| node_json_state
node_main -->|"supports backup"| node_backup_restore
node_main -->|"opens links"| node_github

click node_main "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_student_setup "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_semester_outcomes "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_portfolio_items "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_feedback "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_reflections "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_document_builder "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_export "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py"
click node_backup_restore "https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.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_main toneBlue
class node_student_setup,node_semester_outcomes,node_portfolio_items,node_feedback,node_github toneAmber
class node_reflections,node_document_builder,node_markdown,node_pdf,node_export toneMint
class node_json_state,node_backup_restore toneRose
class node_student toneIndigo
```

## Components

### Desktop application

- [Tkinter app](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`

### Portfolio workflow

- [Student setup](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- [Semester outcomes](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- [Portfolio items](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- [Feedback management](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- **GitHub links**

### Document output

- [Reflection answers](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- [Document generation](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`
- **Markdown conversion**
- **PDF generation**
- [Markdown export](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`

### Persistent data

- **JSON state**
- [Import and export](https://github.com/rickmageddon/portfoliodocumentmanager/blob/main/Release_version/main.py): `Release_version/main.py`

### Other components

- **Student**

## Connections

- Student → Tkinter app: uses
- Tkinter app → Student setup: collects details
- Tkinter app → Semester outcomes: selects outcomes
- Tkinter app → Portfolio items: manages items
- Tkinter app → Feedback management: manages feedback
- Tkinter app → Reflection answers: collects answers
- Tkinter app → Document generation: generates document
- Document generation → Markdown conversion: converts content
- Document generation → PDF generation: renders PDF
- Document generation → Markdown export: offers export
- Tkinter app → JSON state: reads and writes
- Tkinter app → Import and export: supports backup
- Tkinter app → GitHub links: opens links
