# eskovanne-blip/kyytikalenteri architecture

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

- Interactive diagram: https://gitdiagram.com/eskovanne-blip/kyytikalenteri
- Repository: https://github.com/eskovanne-blip/kyytikalenteri

## Overview

The repository appears to be a browser-based Finnish carpool calendar, with supporting calendar access, backup/restore, and printable reports. The supplied excerpts show these modules’ behavior but not the application shell or the code that invokes them, so the graph does not invent a user-to-screen workflow or connect modules based only on their names. Edges represent only interactions visible in the excerpts; several operations are injected callbacks rather than directly wired services.

Main entry points: [`firebase-auth/calendar-access.js`](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-access.js) (Calendar selection), [`firebase-auth/calendar-pdf.js`](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-pdf.js) (Monthly PDF report), [`firebase-auth/calendar-backup.js`](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js) (Backup snapshot)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Calendar access"]
  node_access["Calendar selection<br/>[calendar-access.js]"]
  node_membership[("Membership and invites")]
end

subgraph group_backup["Backup and restore"]
  node_backup_read["Backup snapshot<br/>[calendar-backup.js]"]
  node_reminder["Backup reminder<br/>[calendar-backup.js]"]
  node_csv_parse["CSV import validation<br/>[calendar-backup.js]"]
  node_restore["Calendar restore<br/>[calendar-backup.js]"]
  node_csv_export["CSV export<br/>[calendar-backup.js]"]
end

subgraph group_reports["Reports and dates"]
  node_pdf["Monthly PDF report<br/>[calendar-pdf.js]"]
  node_images["Report images<br/>[calendar-pdf.js]"]
  node_observances["Finnish observances"]
end

node_user(("Calendar user"))
node_calendar_state[("Calendar state")]
node_jspdf["jsPDF library"]

node_access -->|"checks membership"| node_membership
node_access -->|"finds invites"| node_membership
node_backup_read -->|"reads injected refs"| node_calendar_state
node_restore -->|"updates state"| node_calendar_state
node_csv_parse -->|"validates CSV input"| node_user
node_csv_export -->|"returns CSV text"| node_user
node_reminder -->|"prompts backup"| node_user
node_images -->|"renders through"| node_pdf
node_pdf -->|"draws report with"| node_jspdf

click node_access "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-access.js"
click node_backup_read "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js"
click node_reminder "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js"
click node_csv_parse "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js"
click node_restore "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js"
click node_csv_export "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js"
click node_pdf "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-pdf.js"
click node_images "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-pdf.js"
click node_observances "https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/finland-calendar.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_access,node_membership,node_user toneBlue
class node_backup_read,node_reminder,node_csv_parse,node_restore,node_csv_export,node_calendar_state toneAmber
class node_pdf,node_images,node_observances toneMint
class node_jspdf toneIndigo
```

## Components

### Calendar access

- [Calendar selection](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-access.js): `firebase-auth/calendar-access.js`
- **Membership and invites**

### Backup and restore

- [Backup snapshot](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js): `firebase-auth/calendar-backup.js`
- [Backup reminder](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js): `firebase-auth/calendar-backup.js`
- [CSV import validation](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js): `firebase-auth/calendar-backup.js`
- [Calendar restore](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js): `firebase-auth/calendar-backup.js`
- [CSV export](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-backup.js): `firebase-auth/calendar-backup.js`

### Reports and dates

- [Monthly PDF report](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-pdf.js): `firebase-auth/calendar-pdf.js`
- [Report images](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/calendar-pdf.js): `firebase-auth/calendar-pdf.js`
- [Finnish observances](https://github.com/eskovanne-blip/kyytikalenteri/blob/main/firebase-auth/finland-calendar.js): `firebase-auth/finland-calendar.js`

### Other components

- **Calendar user**
- **Calendar state**
- **jsPDF library**

## Connections

- Calendar selection → Membership and invites: checks membership (evidence: `firebase-auth/calendar-access.js`)
- Calendar selection → Membership and invites: finds invites (evidence: `firebase-auth/calendar-access.js`)
- Backup snapshot → Calendar state: reads injected refs (evidence: `firebase-auth/calendar-backup.js`)
- Calendar restore → Calendar state: updates state (evidence: `firebase-auth/calendar-backup.js`)
- CSV import validation → Calendar user: validates CSV input (evidence: `firebase-auth/calendar-backup.js`)
- CSV export → Calendar user: returns CSV text (evidence: `firebase-auth/calendar-backup.js`)
- Backup reminder → Calendar user: prompts backup (evidence: `firebase-auth/calendar-backup.js`)
- Report images → Monthly PDF report: renders through (evidence: `firebase-auth/calendar-pdf.js`)
- Monthly PDF report → jsPDF library: draws report with (evidence: `firebase-auth/calendar-pdf.js`)
