# njabulorivaldo/event-scheduler-app architecture

> Architecture diagram of the GitHub repository njabulorivaldo/event-scheduler-app, 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/njabulorivaldo/event-scheduler-app
- Repository: https://github.com/njabulorivaldo/event-scheduler-app

## Overview

This is a small interactive command-line event scheduler, started with `python App.py`. The user enters event details, which are format-checked and stored in an in-memory list; they can then list events, delete by title, or search by date or keyword. Listing sorts by date and time before displaying each event. `Event.py` holds the event record and its formatted display behavior. The README documents only how to launch the app; relationships shown here come from the sampled source.

Main entry points: [`App.py`](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py) (Menu loop), [`Event.py`](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/Event.py) (Format display)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["Command line"]
  node_main["Menu loop<br/>[App.py]"]
  node_add["Add event<br/>[App.py]"]
  node_validate["Validate date/time<br/>[App.py]"]
  node_list["List events<br/>[App.py]"]
  node_sort["Sort events<br/>[App.py]"]
  node_delete["Delete by title<br/>[App.py]"]
  node_search["Search events<br/>[App.py]"]
end

subgraph group_domain["Event data"]
  node_events["In-memory events<br/>[App.py]"]
  node_event["Event record<br/>[Event.py]"]
  node_display["Format display<br/>[Event.py]"]
end

node_user(("User"))

node_user -->|"starts and selects"| node_main
node_main -->|"dispatches"| node_add
node_main -->|"dispatches"| node_list
node_main -->|"dispatches"| node_sort
node_main -->|"dispatches"| node_delete
node_main -->|"dispatches"| node_search
node_add -->|"checks input"| node_validate
node_add -->|"creates"| node_event
node_add -->|"appends event"| node_events
node_sort -->|"sorts in place"| node_events
node_delete -->|"filters by title"| node_events
node_search -->|"matches date or text"| node_events
node_list -->|"reads events"| node_events
node_list -->|"calls per event"| node_display
node_display -->|"formats fields"| node_event

click node_main "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_add "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_validate "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_list "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_sort "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_delete "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_search "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_events "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py"
click node_event "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/Event.py"
click node_display "https://github.com/njabulorivaldo/event-scheduler-app/blob/master/Event.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_main,node_add,node_validate,node_list,node_sort,node_delete,node_search,node_user toneBlue
class node_events,node_event,node_display toneAmber
```

## Components

### Command line

- [Menu loop](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Add event](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Validate date/time](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [List events](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Sort events](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Delete by title](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Search events](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`

### Event data

- [In-memory events](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/App.py): `App.py`
- [Event record](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/Event.py): `Event.py`
- [Format display](https://github.com/njabulorivaldo/event-scheduler-app/blob/master/Event.py): `Event.py`

### Other components

- **User**

## Connections

- User → Menu loop: starts and selects
- Menu loop → Add event: dispatches
- Menu loop → List events: dispatches
- Menu loop → Sort events: dispatches
- Menu loop → Delete by title: dispatches
- Menu loop → Search events: dispatches
- Add event → Validate date/time: checks input
- Add event → Event record: creates
- Add event → In-memory events: appends event
- Sort events → In-memory events: sorts in place
- Delete by title → In-memory events: filters by title
- Search events → In-memory events: matches date or text
- List events → In-memory events: reads events
- List events → Format display: calls per event
- Format display → Event record: formats fields
