# facundodlf/argendo-ku architecture

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

- Interactive diagram: https://gitdiagram.com/facundodlf/argendo-ku
- Repository: https://github.com/facundodlf/argendo-ku

## Overview

ArgenDo-Ku is a browser-based Sudoku generator and printable playbook. Users choose a difficulty, generate paired puzzles, enter answers, and switch to solution sheets or print. The UI uses the Sudoku engine to generate solved grids and remove clues, and stores game progress in browser local storage for recovery. The README documents responsive presentation and printing; source excerpts do not show the HTML wiring or print implementation, so those links are documented rather than inferred from unsampled code.

Main entry points: [`js/ui.js`](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js) (UI controller), [`index.html`](https://github.com/facundodlf/argendo-ku/blob/main/index.html) (Application page), [`css/styles.css`](https://github.com/facundodlf/argendo-ku/blob/main/css/styles.css) (Responsive presentation), [`js/sudoku-engine.js`](https://github.com/facundodlf/argendo-ku/blob/main/js/sudoku-engine.js) (Sudoku engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Browser application"]
  node_page["Application page<br/>[index.html]"]
  node_ui["UI controller<br/>[ui.js]"]
  node_progress["Progress recovery<br/>[ui.js]"]
  node_storage[("Browser storage")]
end

subgraph group_sudoku["Sudoku domain"]
  node_engine["Sudoku engine<br/>[sudoku-engine.js]"]
  node_book["Puzzle book<br/>[ui.js]"]
end

subgraph group_experience["Player experience"]
  node_play["Interactive play<br/>[ui.js]"]
  node_solutions["Solution sheets<br/>[ui.js]"]
  node_presentation["Responsive presentation<br/>[styles.css]"]
  node_printing["Print output<br/>[index.html]"]
end

node_player(("Player"))

node_player -->|"opens"| node_page
node_player -->|"chooses difficulty"| node_book
node_book -->|"generates grids"| node_engine
node_book -->|"creates puzzles"| node_play
node_player -->|"enters answers"| node_play
node_player -->|"views solutions"| node_solutions
node_ui -->|"renders pages"| node_book
node_ui -->|"renders sheets"| node_solutions
node_ui -->|"checks answers"| node_play
node_ui -->|"saves and restores"| node_storage
node_player -->|"prints PDF"| node_printing
node_page -.->|"styled by"| node_presentation
node_player -->|"uses responsive layout"| node_presentation

click node_page "https://github.com/facundodlf/argendo-ku/blob/main/index.html"
click node_ui "https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js"
click node_engine "https://github.com/facundodlf/argendo-ku/blob/main/js/sudoku-engine.js"
click node_book "https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js"
click node_play "https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js"
click node_solutions "https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js"
click node_progress "https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js"
click node_presentation "https://github.com/facundodlf/argendo-ku/blob/main/css/styles.css"
click node_printing "https://github.com/facundodlf/argendo-ku/blob/main/index.html"

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_page,node_ui,node_progress,node_storage toneBlue
class node_engine,node_book toneAmber
class node_play,node_solutions,node_presentation,node_printing toneMint
class node_player toneIndigo
```

## Components

### Browser application

- [Application page](https://github.com/facundodlf/argendo-ku/blob/main/index.html): `index.html`
- [UI controller](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js): `js/ui.js`
- [Progress recovery](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js): `js/ui.js`
- **Browser storage**

### Sudoku domain

- [Sudoku engine](https://github.com/facundodlf/argendo-ku/blob/main/js/sudoku-engine.js): `js/sudoku-engine.js`
- [Puzzle book](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js): `js/ui.js`

### Player experience

- [Interactive play](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js): `js/ui.js`
- [Solution sheets](https://github.com/facundodlf/argendo-ku/blob/main/js/ui.js): `js/ui.js`
- [Responsive presentation](https://github.com/facundodlf/argendo-ku/blob/main/css/styles.css): `css/styles.css`
- [Print output](https://github.com/facundodlf/argendo-ku/blob/main/index.html): `index.html`

### Other components

- **Player**

## Connections

- Player → Application page: opens (evidence: `README.md`)
- Player → Puzzle book: chooses difficulty (evidence: `README.md`)
- Puzzle book → Sudoku engine: generates grids (evidence: `js/ui.js`)
- Puzzle book → Interactive play: creates puzzles (evidence: `js/ui.js`)
- Player → Interactive play: enters answers (evidence: `README.md`)
- Player → Solution sheets: views solutions (evidence: `README.md`)
- UI controller → Puzzle book: renders pages (evidence: `js/ui.js`)
- UI controller → Solution sheets: renders sheets (evidence: `js/ui.js`)
- UI controller → Interactive play: checks answers (evidence: `js/ui.js`)
- UI controller → Browser storage: saves and restores (evidence: `js/ui.js`)
- Player → Print output: prints PDF (evidence: `README.md`)
- Application page → Responsive presentation: styled by
- Player → Responsive presentation: uses responsive layout (evidence: `README.md`)
