# duc-mt/dotfiles architecture

> Architecture diagram of the GitHub repository duc-mt/dotfiles, 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/duc-mt/dotfiles
- Repository: https://github.com/duc-mt/dotfiles

## Overview

Duke’s Dotfiles combines Debian-based machine provisioning with a reusable Bash environment and personal command-line utilities. The main workflow is a user running the bootstrap to upgrade and configure a machine, optionally setting up private identity material. Bash startup files provide the interactive environment; a separate Python utility turns a caught error into a Stack Overflow search. Bootstrap internals and most shell wiring were not sampled, so only README-documented links and directly evidenced utility behavior are shown.

Main entry points: [`bash/bashrc`](https://github.com/duc-mt/dotfiles/blob/master/bash/bashrc) (Bash startup), [`install/bootstrap`](https://github.com/duc-mt/dotfiles/blob/master/install/bootstrap) (Bootstrap), [`py/stuck-overflow.py`](https://github.com/duc-mt/dotfiles/blob/master/py/stuck-overflow.py) (Error search), [`doc/private-keys.tgz.enc`](https://github.com/duc-mt/dotfiles/blob/master/doc/private-keys.tgz.enc) (Encrypted keys)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_provision["Machine provisioning"]
  node_bootstrap["Bootstrap"]
  node_installers["Install scripts"]
  node_privatekeys["Encrypted keys"]
end

subgraph group_shell["Shell environment"]
  node_bashrc["Bash startup"]
  node_bashprofile["Login profile"]
  node_aliases["Shared aliases"]
  node_local_aliases["Local aliases example"]
  node_functions["Shell functions"]
  node_fzf["FZF integration"]
end

subgraph group_tools["Command-line tools"]
  node_bin["Personal commands"]
  node_stuck["Error search<br/>[stuck-overflow.py]"]
  node_pandoc_tools["Document conversion tools"]
end

subgraph group_reference["Reference material"]
  node_cheatsheets["Cheat sheets"]
  node_security_refs["Security references"]
end

node_user(("User"))
node_debian["Debian system"]
node_private_repos["Private key repos"]
node_rich["Rich tracebacks"]
node_browser["Web browser"]
node_stackoverflow["Stack Overflow"]

node_user -->|"runs"| node_bootstrap
node_bootstrap -->|"upgrades and provisions"| node_debian
node_bootstrap -.->|"clones if selected"| node_private_repos
node_bootstrap -.->|"imports if selected"| node_privatekeys
node_user -->|"uses shell"| node_bashrc
node_bashrc -->|"sources"| node_aliases
node_bashrc -->|"loads"| node_functions
node_bashrc -->|"loads"| node_fzf
node_bashrc -.->|"sources if present"| node_local_aliases
node_user -->|"runs commands"| node_bin
node_stuck -->|"installs tracebacks"| node_rich
node_stuck -->|"opens search"| node_browser
node_browser -->|"searches error"| node_stackoverflow
node_user -->|"consults"| node_cheatsheets
node_user -->|"consults"| node_security_refs
node_user -->|"converts documents"| node_pandoc_tools

click node_bootstrap "https://github.com/duc-mt/dotfiles/blob/master/install/bootstrap"
click node_installers "https://github.com/duc-mt/dotfiles/tree/master/install"
click node_privatekeys "https://github.com/duc-mt/dotfiles/blob/master/doc/private-keys.tgz.enc"
click node_bashrc "https://github.com/duc-mt/dotfiles/blob/master/bash/bashrc"
click node_bashprofile "https://github.com/duc-mt/dotfiles/blob/master/bash/bash_profile"
click node_aliases "https://github.com/duc-mt/dotfiles/blob/master/bash/aliases"
click node_local_aliases "https://github.com/duc-mt/dotfiles/blob/master/bash/aliases.local.example"
click node_functions "https://github.com/duc-mt/dotfiles/blob/master/bash/functions"
click node_fzf "https://github.com/duc-mt/dotfiles/tree/master/bash/fzf"
click node_bin "https://github.com/duc-mt/dotfiles/tree/master/bin"
click node_stuck "https://github.com/duc-mt/dotfiles/blob/master/py/stuck-overflow.py"
click node_cheatsheets "https://github.com/duc-mt/dotfiles/tree/master/doc/OpenSource.com-Cheatsheets"
click node_security_refs "https://github.com/duc-mt/dotfiles/tree/master/doc/security"
click node_pandoc_tools "https://github.com/duc-mt/dotfiles/tree/master/doc/pandoc_pdf"

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_installers,node_privatekeys,node_user,node_browser toneBlue
class node_bashrc,node_bashprofile,node_aliases,node_local_aliases,node_functions,node_fzf toneAmber
class node_bin,node_stuck,node_pandoc_tools toneMint
class node_cheatsheets,node_security_refs toneRose
class node_debian,node_private_repos,node_rich,node_stackoverflow toneIndigo
```

## Components

### Machine provisioning

- [Bootstrap](https://github.com/duc-mt/dotfiles/blob/master/install/bootstrap): `install/bootstrap`
- [Install scripts](https://github.com/duc-mt/dotfiles/tree/master/install): `install`
- [Encrypted keys](https://github.com/duc-mt/dotfiles/blob/master/doc/private-keys.tgz.enc): `doc/private-keys.tgz.enc`

### Shell environment

- [Bash startup](https://github.com/duc-mt/dotfiles/blob/master/bash/bashrc): `bash/bashrc`
- [Login profile](https://github.com/duc-mt/dotfiles/blob/master/bash/bash_profile): `bash/bash_profile`
- [Shared aliases](https://github.com/duc-mt/dotfiles/blob/master/bash/aliases): `bash/aliases`
- [Local aliases example](https://github.com/duc-mt/dotfiles/blob/master/bash/aliases.local.example): `bash/aliases.local.example`
- [Shell functions](https://github.com/duc-mt/dotfiles/blob/master/bash/functions): `bash/functions`
- [FZF integration](https://github.com/duc-mt/dotfiles/tree/master/bash/fzf): `bash/fzf`

### Command-line tools

- [Personal commands](https://github.com/duc-mt/dotfiles/tree/master/bin): `bin`
- [Error search](https://github.com/duc-mt/dotfiles/blob/master/py/stuck-overflow.py): `py/stuck-overflow.py`
- [Document conversion tools](https://github.com/duc-mt/dotfiles/tree/master/doc/pandoc_pdf): `doc/pandoc_pdf`

### Reference material

- [Cheat sheets](https://github.com/duc-mt/dotfiles/tree/master/doc/OpenSource.com-Cheatsheets): `doc/OpenSource.com-Cheatsheets`
- [Security references](https://github.com/duc-mt/dotfiles/tree/master/doc/security): `doc/security`

### Other components

- **User**
- **Debian system**
- **Private key repos**
- **Rich tracebacks**
- **Web browser**
- **Stack Overflow**

## Connections

- User → Bootstrap: runs
- Bootstrap → Debian system: upgrades and provisions
- Bootstrap → Private key repos: clones if selected
- Bootstrap → Encrypted keys: imports if selected
- User → Bash startup: uses shell
- Bash startup → Shared aliases: sources
- Bash startup → Shell functions: loads
- Bash startup → FZF integration: loads
- Bash startup → Local aliases example: sources if present
- User → Personal commands: runs commands
- Error search → Rich tracebacks: installs tracebacks
- Error search → Web browser: opens search
- Web browser → Stack Overflow: searches error
- User → Cheat sheets: consults
- User → Security references: consults
- User → Document conversion tools: converts documents
