# cowglow/mc-scrpt-live architecture

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

- Interactive diagram: https://gitdiagram.com/cowglow/mc-scrpt-live
- Repository: https://github.com/cowglow/mc-scrpt-live

## Overview

MC-SCRPT.LIVE is an artist site for discovering upcoming and past events, videos, audio, downloads, and artist information. Visitors enter through the home page, where route data feeds the event log and the page presents video and audio players; navigation and the footer expose downloads, legal information, language selection, and calendar subscription. Calendar and event-log endpoints provide event data in exportable forms. The tree documents these capabilities, but sampled source does not establish how the page loader obtains its data or how the sync script writes it.

Main entry points: [`src/routes/+page.svelte`](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Bpage.svelte) (Home page), [`src/components/Layout/Footer.svelte`](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/Layout/Footer.svelte) (Footer), [`src/routes/calendar.ics/+server.ts`](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/calendar.ics/%2Bserver.ts) (Calendar export), [`src/routes/+layout.svelte`](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Blayout.svelte) (Site layout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Site experience"]
  node_home["Home page<br/>[+page.svelte]"]
  node_layout["Site layout<br/>[+layout.svelte]"]
  node_legal["Legal page<br/>[+page.svelte]"]
  node_legal_data["Legal route data<br/>[+page.ts]"]
end

subgraph group_events["Event services"]
  node_home_data["Home route data<br/>[+page.ts]"]
  node_event_log["Event log<br/>[EventLog.svelte]"]
  node_event_data["Event data endpoint<br/>[+server.ts]"]
  node_calendar["Calendar export<br/>[+server.ts]"]
  node_ics["ICS formatter"]
  node_event_helpers["Event helpers<br/>[data-loader.ts]"]
  node_sync["Event sync<br/>[sync-events.ts]"]
end

subgraph group_media["Media and downloads"]
  node_download["Downloads page<br/>[+page.svelte]"]
  node_download_data["Download data<br/>[+page.ts]"]
  node_video["Video player<br/>[MediaPlayer.svelte]"]
  node_audio["SoundCloud player"]
end

subgraph group_shared["Shared presentation"]
  node_navigation["Navigation<br/>[NavBar.svelte]"]
  node_footer["Footer<br/>[Footer.svelte]"]
  node_social["Social links<br/>[Menu.svelte]"]
  node_translations["Translations store<br/>[i18n-store.ts]"]
  node_service_worker["Offline cache<br/>[service-worker.ts]"]
end

node_visitor(("Site visitor"))
node_soundcloud(("SoundCloud"))
node_canva(("Canva presentation"))
node_calendar_user(("Calendar subscriber"))

node_visitor -->|"visits"| node_home
node_visitor -->|"opens"| node_download
node_visitor -->|"opens"| node_legal
node_home -->|"uses route data"| node_home_data
node_home -->|"renders"| node_event_log
node_home -->|"renders"| node_video
node_home -->|"renders"| node_audio
node_event_log -.->|"requests history"| node_event_data
node_visitor -->|"requests history"| node_event_data
node_visitor -->|"downloads calendar"| node_calendar
node_calendar -->|"formats events"| node_ics
node_calendar_user -->|"subscribes"| node_calendar
node_audio -.->|"loads audio"| node_soundcloud
node_download -.->|"embeds on consent"| node_canva
node_layout -->|"renders"| node_navigation
node_layout -->|"renders"| node_footer
node_footer -->|"renders"| node_social
node_navigation -->|"reads labels"| node_translations
node_footer -->|"reads labels"| node_translations
node_service_worker -.->|"serves cached pages"| node_visitor

click node_home "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Bpage.svelte"
click node_layout "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Blayout.svelte"
click node_download "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/download/%2Bpage.svelte"
click node_download_data "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/download/%2Bpage.ts"
click node_legal "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/impressum/%2Bpage.svelte"
click node_legal_data "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/impressum/%2Bpage.ts"
click node_home_data "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Bpage.ts"
click node_event_log "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/EventLog/EventLog.svelte"
click node_event_data "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/event-log/data/%2Bserver.ts"
click node_calendar "https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/calendar.ics/%2Bserver.ts"
click node_ics "https://github.com/cowglow/mc-scrpt-live/blob/main/src/lib/create-ics-content.ts"
click node_event_helpers "https://github.com/cowglow/mc-scrpt-live/blob/main/src/lib/data-loader.ts"
click node_sync "https://github.com/cowglow/mc-scrpt-live/blob/main/scripts/sync-events.ts"
click node_video "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/MediaPlayer/MediaPlayer.svelte"
click node_audio "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/SoundCloudPlayer/SoundCloudPlayer.svelte"
click node_navigation "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/Navigation/NavBar.svelte"
click node_footer "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/Layout/Footer.svelte"
click node_social "https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/SocialMedia/Menu.svelte"
click node_translations "https://github.com/cowglow/mc-scrpt-live/blob/main/src/stores/i18n-store.ts"
click node_service_worker "https://github.com/cowglow/mc-scrpt-live/blob/main/src/service-worker.ts"

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_home,node_layout,node_legal,node_legal_data toneBlue
class node_home_data,node_event_log,node_event_data,node_calendar,node_ics,node_event_helpers,node_sync toneAmber
class node_download,node_download_data,node_video,node_audio toneMint
class node_navigation,node_footer,node_social,node_translations,node_service_worker toneRose
class node_visitor,node_soundcloud,node_canva,node_calendar_user toneIndigo
```

## Components

### Site experience

- [Home page](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Bpage.svelte): `src/routes/+page.svelte`
- [Site layout](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Blayout.svelte): `src/routes/+layout.svelte`
- [Legal page](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/impressum/%2Bpage.svelte): `src/routes/impressum/+page.svelte`
- [Legal route data](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/impressum/%2Bpage.ts): `src/routes/impressum/+page.ts`

### Event services

- [Home route data](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/%2Bpage.ts): `src/routes/+page.ts`
- [Event log](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/EventLog/EventLog.svelte): `src/components/EventLog/EventLog.svelte`
- [Event data endpoint](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/event-log/data/%2Bserver.ts): `src/routes/event-log/data/+server.ts`
- [Calendar export](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/calendar.ics/%2Bserver.ts): `src/routes/calendar.ics/+server.ts`
- [ICS formatter](https://github.com/cowglow/mc-scrpt-live/blob/main/src/lib/create-ics-content.ts): `src/lib/create-ics-content.ts`
- [Event helpers](https://github.com/cowglow/mc-scrpt-live/blob/main/src/lib/data-loader.ts): `src/lib/data-loader.ts`
- [Event sync](https://github.com/cowglow/mc-scrpt-live/blob/main/scripts/sync-events.ts): `scripts/sync-events.ts`

### Media and downloads

- [Downloads page](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/download/%2Bpage.svelte): `src/routes/download/+page.svelte`
- [Download data](https://github.com/cowglow/mc-scrpt-live/blob/main/src/routes/download/%2Bpage.ts): `src/routes/download/+page.ts`
- [Video player](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/MediaPlayer/MediaPlayer.svelte): `src/components/MediaPlayer/MediaPlayer.svelte`
- [SoundCloud player](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/SoundCloudPlayer/SoundCloudPlayer.svelte): `src/components/SoundCloudPlayer/SoundCloudPlayer.svelte`

### Shared presentation

- [Navigation](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/Navigation/NavBar.svelte): `src/components/Navigation/NavBar.svelte`
- [Footer](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/Layout/Footer.svelte): `src/components/Layout/Footer.svelte`
- [Social links](https://github.com/cowglow/mc-scrpt-live/blob/main/src/components/SocialMedia/Menu.svelte): `src/components/SocialMedia/Menu.svelte`
- [Translations store](https://github.com/cowglow/mc-scrpt-live/blob/main/src/stores/i18n-store.ts): `src/stores/i18n-store.ts`
- [Offline cache](https://github.com/cowglow/mc-scrpt-live/blob/main/src/service-worker.ts): `src/service-worker.ts`

### Other components

- **Site visitor**
- **SoundCloud**
- **Canva presentation**
- **Calendar subscriber**

## Connections

- Site visitor → Home page: visits
- Site visitor → Downloads page: opens
- Site visitor → Legal page: opens
- Home page → Home route data: uses route data
- Home page → Event log: renders
- Home page → Video player: renders
- Home page → SoundCloud player: renders
- Event log → Event data endpoint: requests history
- Site visitor → Event data endpoint: requests history
- Site visitor → Calendar export: downloads calendar
- Calendar export → ICS formatter: formats events
- Calendar subscriber → Calendar export: subscribes
- SoundCloud player → SoundCloud: loads audio
- Downloads page → Canva presentation: embeds on consent
- Site layout → Navigation: renders
- Site layout → Footer: renders
- Footer → Social links: renders
- Navigation → Translations store: reads labels
- Footer → Translations store: reads labels
- Offline cache → Site visitor: serves cached pages
