# wingdingo/egglog architecture

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

## Overview

egglog is a browser-based egg-weight logger and analysis tool for hobby hen keepers. The workflow is to enter weights for today, store them as Google Calendar events, retrieve egg events, and view recorded weights in a chart with month, season, and year navigation. The sampled JavaScript supports calendar event listing and mutations, weight parsing, and charting; some page wiring and unsampled implementation details are not verified.

Main entry points: [`js/egglog.js`](https://github.com/wingdingo/egglog/blob/master/js/egglog.js) (App behavior), [`index.html`](https://github.com/wingdingo/egglog/blob/master/index.html) (Web page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interface"]
  node_page["Web page<br/>[index.html]"]
  node_app["App behavior<br/>[egglog.js]"]
end

subgraph group_logging["Egg logging"]
  node_weight_entry["Weight entry<br/>[egglog.js]"]
  node_weight_parser["Weight parser<br/>[egglog.js]"]
  node_calendar_events[("Egg events")]
end

subgraph group_analysis["Weight analysis"]
  node_chart_data["Chart data<br/>[egglog.js]"]
  node_chart["Weight chart<br/>[egglog.js]"]
  node_date_views["Date views<br/>[egglog.js]"]
end

node_keeper(("Hen keeper"))
node_calendar["Google Calendar"]
node_google_charts["Google Charts"]

node_keeper -->|"uses"| node_page
node_page -->|"runs"| node_app
node_app -->|"handles input"| node_weight_entry
node_app -->|"lists events"| node_calendar
node_calendar -->|"returns events"| node_app
node_app -->|"parses weights"| node_weight_parser
node_weight_parser -->|"provides weights"| node_chart_data
node_app -->|"creates or updates"| node_calendar
node_app -->|"deletes events"| node_calendar
node_calendar -->|"stores events"| node_calendar_events
node_app -->|"builds rows"| node_chart_data
node_app -->|"changes date range"| node_date_views
node_chart_data -->|"supplies rows"| node_chart
node_app -->|"draws chart"| node_google_charts

click node_page "https://github.com/wingdingo/egglog/blob/master/index.html"
click node_app "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"
click node_weight_entry "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"
click node_weight_parser "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"
click node_chart_data "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"
click node_chart "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"
click node_date_views "https://github.com/wingdingo/egglog/blob/master/js/egglog.js"

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_page,node_app toneBlue
class node_weight_entry,node_weight_parser,node_calendar_events toneAmber
class node_chart_data,node_chart,node_date_views toneMint
class node_keeper,node_calendar,node_google_charts toneIndigo
```

## Components

### User interface

- [Web page](https://github.com/wingdingo/egglog/blob/master/index.html): `index.html`
- [App behavior](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`

### Egg logging

- [Weight entry](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`
- [Weight parser](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`
- **Egg events**

### Weight analysis

- [Chart data](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`
- [Weight chart](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`
- [Date views](https://github.com/wingdingo/egglog/blob/master/js/egglog.js): `js/egglog.js`

### Other components

- **Hen keeper**
- **Google Calendar**
- **Google Charts**

## Connections

- Hen keeper → Web page: uses
- Web page → App behavior: runs
- App behavior → Weight entry: handles input
- App behavior → Google Calendar: lists events
- Google Calendar → App behavior: returns events
- App behavior → Weight parser: parses weights
- Weight parser → Chart data: provides weights
- App behavior → Google Calendar: creates or updates
- App behavior → Google Calendar: deletes events
- Google Calendar → Egg events: stores events
- App behavior → Chart data: builds rows
- App behavior → Date views: changes date range
- Chart data → Weight chart: supplies rows
- App behavior → Google Charts: draws chart
