# muhammedakay/foto-secim-app architecture

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

- Interactive diagram: https://gitdiagram.com/muhammedakay/foto-secim-app
- Repository: https://github.com/muhammedakay/foto-secim-app

## Overview

FotoSecim is a local Windows wedding-photo selection app. The user chooses a source folder and album settings, selects regular photos, optionally selects a cover and table photo, then copies the chosen images into the album folder. The README documents these stages and outputs; the sampled source confirms the Tkinter photo-card interactions and image preview/caching. Most implementation is in one file, so several responsibilities share that path; detailed internal wiring beyond the excerpts is not asserted.

Main entry points: [`foto_secim.py`](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py) (Setup screen), [`assets/icons`](https://github.com/muhammedakay/foto-secim-app/tree/main/assets/icons) (Interface icons)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_setup["Album setup"]
  node_app["Tkinter app<br/>[foto_secim.py]"]
  node_setup_ui["Setup screen<br/>[foto_secim.py]"]
  node_source_folder["Source folder"]
  node_icons["Interface icons"]
end

subgraph group_selection["Photo selection"]
  node_gallery["Photo gallery<br/>[foto_secim.py]"]
  node_photo_card["Photo cards<br/>[foto_secim.py]"]
  node_regular_selection["Regular picks<br/>[foto_secim.py]"]
  node_special_selection["Cover and table picks<br/>[foto_secim.py]"]
end

subgraph group_output["Album output"]
  node_output_folder["Album folder"]
  node_copy_output["Named photo copies<br/>[foto_secim.py]"]
end

subgraph group_imaging["Image viewing"]
  node_preview["Large preview<br/>[foto_secim.py]"]
  node_image_handling["Image loading and cache<br/>[foto_secim.py]"]
end

node_user(("User"))

node_user -->|"sets folder and options"| node_setup_ui
node_setup_ui -->|"chooses photos from"| node_source_folder
node_app -->|"shows"| node_setup_ui
node_setup_ui -->|"starts selection"| node_gallery
node_source_folder -->|"provides photos"| node_gallery
node_gallery -->|"displays photos"| node_photo_card
node_user -->|"clicks or double-clicks"| node_photo_card
node_photo_card -->|"dispatches selection"| node_regular_selection
node_regular_selection -->|"continues when complete"| node_special_selection
node_user -->|"selects optional photos"| node_special_selection
node_photo_card -->|"opens on double-click"| node_preview
node_preview -->|"requests image"| node_image_handling
node_gallery -->|"loads thumbnails"| node_image_handling
node_image_handling -->|"reads image files"| node_source_folder
node_app -->|"copies completed picks"| node_copy_output
node_regular_selection -->|"provides selected photos"| node_copy_output
node_special_selection -->|"provides cover and table"| node_copy_output
node_copy_output -->|"writes named copies"| node_output_folder
node_app -->|"loads interface icons"| node_icons

click node_app "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_setup_ui "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_gallery "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_photo_card "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_regular_selection "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_special_selection "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_preview "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_image_handling "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_copy_output "https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py"
click node_icons "https://github.com/muhammedakay/foto-secim-app/tree/main/assets/icons"

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_app,node_setup_ui,node_source_folder,node_icons,node_user toneBlue
class node_gallery,node_photo_card,node_regular_selection,node_special_selection toneAmber
class node_output_folder,node_copy_output toneMint
class node_preview,node_image_handling toneRose
```

## Components

### Album setup

- [Tkinter app](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- [Setup screen](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- **Source folder**
- [Interface icons](https://github.com/muhammedakay/foto-secim-app/tree/main/assets/icons): `assets/icons`

### Photo selection

- [Photo gallery](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- [Photo cards](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- [Regular picks](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- [Cover and table picks](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`

### Album output

- **Album folder**
- [Named photo copies](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`

### Image viewing

- [Large preview](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`
- [Image loading and cache](https://github.com/muhammedakay/foto-secim-app/blob/main/foto_secim.py): `foto_secim.py`

### Other components

- **User**

## Connections

- User → Setup screen: sets folder and options
- Setup screen → Source folder: chooses photos from
- Tkinter app → Setup screen: shows
- Setup screen → Photo gallery: starts selection
- Source folder → Photo gallery: provides photos
- Photo gallery → Photo cards: displays photos
- User → Photo cards: clicks or double-clicks
- Photo cards → Regular picks: dispatches selection
- Regular picks → Cover and table picks: continues when complete
- User → Cover and table picks: selects optional photos
- Photo cards → Large preview: opens on double-click
- Large preview → Image loading and cache: requests image
- Photo gallery → Image loading and cache: loads thumbnails
- Image loading and cache → Source folder: reads image files
- Tkinter app → Named photo copies: copies completed picks
- Regular picks → Named photo copies: provides selected photos
- Cover and table picks → Named photo copies: provides cover and table
- Named photo copies → Album folder: writes named copies
- Tkinter app → Interface icons: loads interface icons
