# sadeenabukhadra/a_maze_ing architecture

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

## Overview

A-Maze-ing turns a KEY=VALUE configuration into a generated maze, computes the entry-to-exit shortest path, exports the maze and path, and offers an interactive terminal view with regeneration and solution toggling. The graph preserves both perfect and looped generation, the reserved 42 pattern, and reusable package behavior. The main wiring is supported by sampled entry-point code; README documents the mode and pattern capabilities, while some implementation details are unsampled.

Main entry points: [`a_maze_ing.py`](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/a_maze_ing.py) (Application entry), [`mazegen/generator.py`](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py) (Generator), [`mazegen/solver.py`](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/solver.py) (BFS solver), [`mazegen/cell.py`](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/cell.py) (Cell walls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Maze workflow"]
  node_config["Maze config<br/>[config.txt]"]
  node_parser["Config parser<br/>[parser.py]"]
  node_app["Application entry<br/>[a_maze_ing.py]"]
end

subgraph group_engine["Maze engine"]
  node_generator["Generator<br/>[generator.py]"]
  node_perfect["Perfect mode<br/>[generator.py]"]
  node_playable["Playable mode<br/>[generator.py]"]
  node_pattern["42 reservation<br/>[generator.py]"]
  node_cell["Cell walls<br/>[cell.py]"]
  node_solver["BFS solver<br/>[solver.py]"]
  node_package["Reusable package<br/>[__init__.py]"]
end

subgraph group_presentation["Terminal and output"]
  node_exporter["Maze exporter<br/>[exporter.py]"]
  node_output["Maze file"]
  node_renderer["Terminal renderer<br/>[renderer.py]"]
end

node_user(("User"))
node_terminal(("Interactive terminal"))

node_user -->|"runs"| node_app
node_user -->|"provides"| node_config
node_app -->|"loads config"| node_parser
node_parser -->|"reads"| node_config
node_app -->|"selects mode"| node_perfect
node_app -->|"selects mode"| node_playable
node_perfect -->|"builds maze"| node_generator
node_playable -->|"builds maze"| node_generator
node_generator -->|"reserves cells"| node_pattern
node_generator -->|"creates grid"| node_cell
node_perfect -->|"carves walls"| node_cell
node_playable -->|"adds loops"| node_cell
node_app -->|"solves maze"| node_solver
node_solver -->|"reads passages"| node_generator
node_solver -->|"returns path"| node_app
node_app -->|"exports result"| node_exporter
node_exporter -->|"reads walls"| node_cell
node_exporter -->|"writes format"| node_output
node_app -->|"creates view"| node_renderer
node_renderer -->|"reads maze"| node_generator
node_renderer -->|"renders menu"| node_terminal
node_terminal -->|"chooses actions"| node_app
node_app -->|"regenerates"| node_perfect
node_package -->|"exports API"| node_generator
node_package -->|"exports API"| node_solver

click node_config "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/config.txt"
click node_parser "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/parser.py"
click node_app "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/a_maze_ing.py"
click node_generator "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py"
click node_perfect "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py"
click node_playable "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py"
click node_pattern "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py"
click node_cell "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/cell.py"
click node_solver "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/solver.py"
click node_exporter "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/exporter.py"
click node_renderer "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/renderer.py"
click node_package "https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/__init__.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_config,node_parser,node_app,node_user toneBlue
class node_generator,node_perfect,node_playable,node_pattern,node_cell,node_solver,node_package toneAmber
class node_exporter,node_output,node_renderer toneMint
class node_terminal toneIndigo
```

## Components

### Maze workflow

- [Maze config](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/config.txt): `config.txt`
- [Config parser](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/parser.py): `parser.py`
- [Application entry](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/a_maze_ing.py): `a_maze_ing.py`

### Maze engine

- [Generator](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py): `mazegen/generator.py`
- [Perfect mode](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py): `mazegen/generator.py`
- [Playable mode](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py): `mazegen/generator.py`
- [42 reservation](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/generator.py): `mazegen/generator.py`
- [Cell walls](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/cell.py): `mazegen/cell.py`
- [BFS solver](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/solver.py): `mazegen/solver.py`
- [Reusable package](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/__init__.py): `mazegen/__init__.py`

### Terminal and output

- [Maze exporter](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/exporter.py): `mazegen/exporter.py`
- **Maze file**
- [Terminal renderer](https://github.com/sadeenabukhadra/a_maze_ing/blob/main/mazegen/renderer.py): `mazegen/renderer.py`

### Other components

- **User**
- **Interactive terminal**

## Connections

- User → Application entry: runs
- User → Maze config: provides
- Application entry → Config parser: loads config
- Config parser → Maze config: reads
- Application entry → Perfect mode: selects mode
- Application entry → Playable mode: selects mode
- Perfect mode → Generator: builds maze
- Playable mode → Generator: builds maze
- Generator → 42 reservation: reserves cells
- Generator → Cell walls: creates grid
- Perfect mode → Cell walls: carves walls
- Playable mode → Cell walls: adds loops
- Application entry → BFS solver: solves maze
- BFS solver → Generator: reads passages
- BFS solver → Application entry: returns path
- Application entry → Maze exporter: exports result
- Maze exporter → Cell walls: reads walls
- Maze exporter → Maze file: writes format
- Application entry → Terminal renderer: creates view
- Terminal renderer → Generator: reads maze
- Terminal renderer → Interactive terminal: renders menu
- Interactive terminal → Application entry: chooses actions
- Application entry → Perfect mode: regenerates
- Reusable package → Generator: exports API
- Reusable package → BFS solver: exports API
