# bacharo2307/todo-php architecture

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

## Overview

This PHP todo-list app lets a user manage tasks in a browser, with changes persisted in MySQL and XML import/export. The main workflow is browser interaction through `script.js` to PHP endpoints, which read or update the task store; listing refreshes return rendered HTML. Import reads `taches.xml`, while export returns generated XML. The README documents AJAX refresh and CRUD/import/export capabilities; HTML and styling are present in the tree, but their source was not sampled.

Main entry points: [`script.js`](https://github.com/bacharo2307/todo-php/blob/master/script.js) (AJAX client), [`connect.php`](https://github.com/bacharo2307/todo-php/blob/master/connect.php) (PDO connection), [`importer.php`](https://github.com/bacharo2307/todo-php/blob/master/importer.php) (Import tasks), [`taches.php`](https://github.com/bacharo2307/todo-php/blob/master/taches.php) (List and clear)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_browser["Browser interaction"]
  node_client["AJAX client<br/>[script.js]"]
end

subgraph group_tasks["Task operations"]
  node_list["List and clear<br/>[taches.php]"]
  node_add["Add task<br/>[ajouter.php]"]
  node_edit["Edit task<br/>[modifier.php]"]
  node_remove["Delete task<br/>[supprimer.php]"]
end

subgraph group_storage["Persistence"]
  node_connection["PDO connection<br/>[connect.php]"]
  node_taskdb[("MySQL task store")]
end

subgraph group_xml["XML exchange"]
  node_import["Import tasks<br/>[importer.php]"]
  node_export["Export tasks<br/>[exporter.php]"]
  node_xmlfile["Import XML<br/>[taches.xml]"]
end

node_user(("User"))

node_user -->|"interacts"| node_client
node_client -->|"fetches list"| node_list
node_client -->|"submits task"| node_add
node_client -->|"submits edit"| node_edit
node_client -->|"requests delete"| node_remove
node_client -->|"requests clear"| node_list
node_client -->|"requests import"| node_import
node_client -->|"requests export"| node_export
node_list -->|"returns HTML"| node_client
node_add -->|"returns response"| node_client
node_edit -->|"returns response"| node_client
node_remove -->|"returns response"| node_client
node_import -->|"returns response"| node_client
node_list -->|"requires"| node_connection
node_add -->|"requires"| node_connection
node_edit -->|"requires"| node_connection
node_remove -->|"requires"| node_connection
node_import -->|"requires"| node_connection
node_export -->|"requires"| node_connection
node_connection -->|"connects"| node_taskdb
node_list -->|"reads or clears"| node_taskdb
node_add -->|"inserts"| node_taskdb
node_edit -->|"updates"| node_taskdb
node_remove -->|"deletes"| node_taskdb
node_import -->|"reads"| node_xmlfile
node_import -->|"inserts"| node_taskdb
node_export -->|"reads"| node_taskdb
node_export -->|"returns XML"| node_user

click node_client "https://github.com/bacharo2307/todo-php/blob/master/script.js"
click node_list "https://github.com/bacharo2307/todo-php/blob/master/taches.php"
click node_add "https://github.com/bacharo2307/todo-php/blob/master/ajouter.php"
click node_edit "https://github.com/bacharo2307/todo-php/blob/master/modifier.php"
click node_remove "https://github.com/bacharo2307/todo-php/blob/master/supprimer.php"
click node_import "https://github.com/bacharo2307/todo-php/blob/master/importer.php"
click node_export "https://github.com/bacharo2307/todo-php/blob/master/exporter.php"
click node_connection "https://github.com/bacharo2307/todo-php/blob/master/connect.php"
click node_xmlfile "https://github.com/bacharo2307/todo-php/blob/master/taches.xml"

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_client,node_user toneBlue
class node_list,node_add,node_edit,node_remove toneAmber
class node_connection,node_taskdb toneMint
class node_import,node_export,node_xmlfile toneRose
```

## Components

### Browser interaction

- [AJAX client](https://github.com/bacharo2307/todo-php/blob/master/script.js): `script.js`

### Task operations

- [List and clear](https://github.com/bacharo2307/todo-php/blob/master/taches.php): `taches.php`
- [Add task](https://github.com/bacharo2307/todo-php/blob/master/ajouter.php): `ajouter.php`
- [Edit task](https://github.com/bacharo2307/todo-php/blob/master/modifier.php): `modifier.php`
- [Delete task](https://github.com/bacharo2307/todo-php/blob/master/supprimer.php): `supprimer.php`

### Persistence

- [PDO connection](https://github.com/bacharo2307/todo-php/blob/master/connect.php): `connect.php`
- **MySQL task store**

### XML exchange

- [Import tasks](https://github.com/bacharo2307/todo-php/blob/master/importer.php): `importer.php`
- [Export tasks](https://github.com/bacharo2307/todo-php/blob/master/exporter.php): `exporter.php`
- [Import XML](https://github.com/bacharo2307/todo-php/blob/master/taches.xml): `taches.xml`

### Other components

- **User**

## Connections

- User → AJAX client: interacts
- AJAX client → List and clear: fetches list
- AJAX client → Add task: submits task
- AJAX client → Edit task: submits edit
- AJAX client → Delete task: requests delete
- AJAX client → List and clear: requests clear
- AJAX client → Import tasks: requests import
- AJAX client → Export tasks: requests export
- List and clear → AJAX client: returns HTML
- Add task → AJAX client: returns response
- Edit task → AJAX client: returns response
- Delete task → AJAX client: returns response
- Import tasks → AJAX client: returns response
- List and clear → PDO connection: requires
- Add task → PDO connection: requires
- Edit task → PDO connection: requires
- Delete task → PDO connection: requires
- Import tasks → PDO connection: requires
- Export tasks → PDO connection: requires
- PDO connection → MySQL task store: connects
- List and clear → MySQL task store: reads or clears
- Add task → MySQL task store: inserts
- Edit task → MySQL task store: updates
- Delete task → MySQL task store: deletes
- Import tasks → Import XML: reads
- Import tasks → MySQL task store: inserts
- Export tasks → MySQL task store: reads
- Export tasks → User: returns XML
