# renziscool12/campaign-management architecture

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

- Interactive diagram: https://gitdiagram.com/renziscool12/campaign-management
- Repository: https://github.com/renziscool12/campaign-management

## Overview

This is a small, console-based campaign management application. A user chooses actions in the menu; the view gathers input and invokes managers for campaign, organizer, and participant operations. Campaign creation builds a domain object and appends its string representation to a text file; campaign listing, updates, and deletion operate on the manager’s in-memory collection. Organizer and participant records are also held in memory. The README gives no further capability details, so the map follows the shown source and does not infer persistence or workflows beyond it.

Main entry points: [`CampaignManagementMVC/view/menu.py`](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/view/menu.py) (Campaign menu), [`CampaignManagementMVC/main.py`](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/main.py) (Application entry), [`CampaignManagementMVC/controller/CampaignController.py`](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/CampaignController.py) (Campaign manager), [`CampaignManagementMVC/controller/OrganizerController.py`](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/OrganizerController.py) (Organizer manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Console interface"]
  node_entry["Application entry<br/>[main.py]"]
  node_view["Campaign menu<br/>[menu.py]"]
end

subgraph group_management["Management"]
  node_campaign_manager["Campaign manager"]
  node_organizer_manager["Organizer manager"]
  node_participant_manager["Participant manager"]
end

subgraph group_domain["Domain and storage"]
  node_campaign["Campaign model<br/>[campaign.py]"]
  node_organizer["Organizer model<br/>[Organizer.py]"]
  node_participant["Participant model<br/>[Participant.py]"]
  node_person["Person base model<br/>[Person.py]"]
  node_file_handler["Campaign file handler<br/>[fillehandler.py]"]
  node_campaign_file[("Campaign text file")]
end

node_user(("User"))

node_user -->|"chooses actions"| node_view
node_entry -->|"creates"| node_campaign_manager
node_entry -->|"creates"| node_organizer_manager
node_entry -->|"creates"| node_participant_manager
node_entry -->|"starts menu"| node_view
node_view -->|"manages campaigns"| node_campaign_manager
node_view -->|"adds organizers"| node_organizer_manager
node_view -->|"adds participants"| node_participant_manager
node_campaign_manager -->|"creates"| node_campaign
node_campaign_manager -->|"saves campaign"| node_file_handler
node_file_handler -->|"appends text"| node_campaign_file
node_organizer_manager -->|"creates"| node_organizer
node_participant_manager -->|"creates"| node_participant
node_organizer -->|"inherits from"| node_person
node_participant -->|"inherits from"| node_person

click node_entry "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/main.py"
click node_view "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/view/menu.py"
click node_campaign_manager "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/CampaignController.py"
click node_organizer_manager "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/OrganizerController.py"
click node_participant_manager "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/ParticipantController.py"
click node_campaign "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/campaign.py"
click node_organizer "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Organizer.py"
click node_participant "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Participant.py"
click node_person "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Person.py"
click node_file_handler "https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/filehandler/fillehandler.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_entry,node_view,node_user toneBlue
class node_campaign_manager,node_organizer_manager,node_participant_manager toneAmber
class node_campaign,node_organizer,node_participant,node_person,node_file_handler,node_campaign_file toneMint
```

## Components

### Console interface

- [Application entry](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/main.py): `CampaignManagementMVC/main.py`
- [Campaign menu](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/view/menu.py): `CampaignManagementMVC/view/menu.py`

### Management

- [Campaign manager](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/CampaignController.py): `CampaignManagementMVC/controller/CampaignController.py`
- [Organizer manager](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/OrganizerController.py): `CampaignManagementMVC/controller/OrganizerController.py`
- [Participant manager](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/controller/ParticipantController.py): `CampaignManagementMVC/controller/ParticipantController.py`

### Domain and storage

- [Campaign model](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/campaign.py): `CampaignManagementMVC/model/campaign.py`
- [Organizer model](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Organizer.py): `CampaignManagementMVC/model/Organizer.py`
- [Participant model](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Participant.py): `CampaignManagementMVC/model/Participant.py`
- [Person base model](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/model/Person.py): `CampaignManagementMVC/model/Person.py`
- [Campaign file handler](https://github.com/renziscool12/campaign-management/blob/main/CampaignManagementMVC/filehandler/fillehandler.py): `CampaignManagementMVC/filehandler/fillehandler.py`
- **Campaign text file**

### Other components

- **User**

## Connections

- User → Campaign menu: chooses actions (evidence: `CampaignManagementMVC/view/menu.py`)
- Application entry → Campaign manager: creates (evidence: `CampaignManagementMVC/main.py`)
- Application entry → Organizer manager: creates (evidence: `CampaignManagementMVC/main.py`)
- Application entry → Participant manager: creates (evidence: `CampaignManagementMVC/main.py`)
- Application entry → Campaign menu: starts menu (evidence: `CampaignManagementMVC/main.py`)
- Campaign menu → Campaign manager: manages campaigns (evidence: `CampaignManagementMVC/view/menu.py`)
- Campaign menu → Organizer manager: adds organizers (evidence: `CampaignManagementMVC/view/menu.py`)
- Campaign menu → Participant manager: adds participants (evidence: `CampaignManagementMVC/view/menu.py`)
- Campaign manager → Campaign model: creates (evidence: `CampaignManagementMVC/controller/CampaignController.py`)
- Campaign manager → Campaign file handler: saves campaign (evidence: `CampaignManagementMVC/controller/CampaignController.py`)
- Campaign file handler → Campaign text file: appends text (evidence: `CampaignManagementMVC/filehandler/fillehandler.py`)
- Organizer manager → Organizer model: creates (evidence: `CampaignManagementMVC/controller/OrganizerController.py`)
- Participant manager → Participant model: creates (evidence: `CampaignManagementMVC/controller/ParticipantController.py`)
- Organizer model → Person base model: inherits from (evidence: `CampaignManagementMVC/model/Organizer.py`)
- Participant model → Person base model: inherits from (evidence: `CampaignManagementMVC/model/Participant.py`)
