# wasif0410/trajectory architecture

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

## Overview

Trajectory is a personal daily-learning log presented as a browsable desktop OS. The main flow is authored MDX entries and pages → server-side loading and rendering → categorized day/log views inside movable windows; users can also browse summary pages and play the built-in Snake game. The sampled source supports the server data path and major desktop interactions; unsampled view and window wiring is represented only at the documented component level.

Main entry points: [`components/os/Desktop.tsx`](https://github.com/wasif0410/trajectory/blob/main/components/os/Desktop.tsx) (Desktop manager), [`app/page.tsx`](https://github.com/wasif0410/trajectory/blob/main/app/page.tsx) (Page assembly), [`components/os/ArcadeDock.tsx`](https://github.com/wasif0410/trajectory/blob/main/components/os/ArcadeDock.tsx) (Arcade dock), [`lib/audio.ts`](https://github.com/wasif0410/trajectory/blob/main/lib/audio.ts) (Synth audio)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Authored content"]
  node_entry_files["Log entries"]
  node_page_files["Info pages"]
end

subgraph group_server["Server rendering"]
  node_entry_loader["Entry loader<br/>[entries.ts]"]
  node_content_helpers["Content summaries<br/>[content.ts]"]
  node_page["Page assembly<br/>[page.tsx]"]
end

subgraph group_desktop["Desktop experience"]
  node_desktop["Desktop manager<br/>[Desktop.tsx]"]
  node_views["Log views<br/>[views.tsx]"]
  node_file_grid["File browser<br/>[FileGrid.tsx]"]
  node_window["Window chrome<br/>[Window.tsx]"]
  node_taskbar["Launcher and taskbar<br/>[Taskbar.tsx]"]
  node_types["View and OS data<br/>[types.ts]"]
end

subgraph group_extras["Desktop extras"]
  node_arcade["Arcade dock<br/>[ArcadeDock.tsx]"]
  node_snake["Snake game<br/>[Snake.tsx]"]
  node_audio["Synth audio<br/>[audio.ts]"]
  node_browser_storage[("Browser preferences")]
  node_browser_audio["Web Audio"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens site"| node_page
node_entry_files -->|"read MDX"| node_entry_loader
node_page_files -->|"read MDX"| node_entry_loader
node_entry_loader -->|"returns content"| node_page
node_page -->|"derives summaries"| node_content_helpers
node_page -->|"passes rendered data"| node_desktop
node_desktop -->|"renders views"| node_views
node_desktop -->|"manages windows"| node_window
node_desktop -->|"renders controls"| node_taskbar
node_desktop -->|"renders dock"| node_arcade
node_views -->|"renders listings"| node_file_grid
node_desktop -->|"uses view model"| node_types
node_taskbar -->|"controls sound"| node_audio
node_taskbar -->|"reads preferences"| node_browser_storage
node_arcade -->|"starts game"| node_snake
node_arcade -->|"plays effects"| node_audio
node_snake -->|"plays game effects"| node_audio
node_snake -->|"reports score"| node_arcade
node_audio -->|"synthesizes sound"| node_browser_audio

click node_entry_files "https://github.com/wasif0410/trajectory/tree/main/content/entries"
click node_page_files "https://github.com/wasif0410/trajectory/tree/main/content/pages"
click node_entry_loader "https://github.com/wasif0410/trajectory/blob/main/lib/entries.ts"
click node_content_helpers "https://github.com/wasif0410/trajectory/blob/main/lib/content.ts"
click node_page "https://github.com/wasif0410/trajectory/blob/main/app/page.tsx"
click node_desktop "https://github.com/wasif0410/trajectory/blob/main/components/os/Desktop.tsx"
click node_views "https://github.com/wasif0410/trajectory/blob/main/components/os/views.tsx"
click node_file_grid "https://github.com/wasif0410/trajectory/blob/main/components/os/FileGrid.tsx"
click node_window "https://github.com/wasif0410/trajectory/blob/main/components/os/Window.tsx"
click node_taskbar "https://github.com/wasif0410/trajectory/blob/main/components/os/Taskbar.tsx"
click node_types "https://github.com/wasif0410/trajectory/blob/main/components/os/types.ts"
click node_arcade "https://github.com/wasif0410/trajectory/blob/main/components/os/ArcadeDock.tsx"
click node_snake "https://github.com/wasif0410/trajectory/blob/main/components/os/Snake.tsx"
click node_audio "https://github.com/wasif0410/trajectory/blob/main/lib/audio.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_entry_files,node_page_files toneBlue
class node_entry_loader,node_content_helpers,node_page toneAmber
class node_desktop,node_views,node_file_grid,node_window,node_taskbar,node_types toneMint
class node_arcade,node_snake,node_audio,node_browser_storage,node_browser_audio toneRose
class node_visitor toneIndigo
```

## Components

### Authored content

- [Log entries](https://github.com/wasif0410/trajectory/tree/main/content/entries): `content/entries`
- [Info pages](https://github.com/wasif0410/trajectory/tree/main/content/pages): `content/pages`

### Server rendering

- [Entry loader](https://github.com/wasif0410/trajectory/blob/main/lib/entries.ts): `lib/entries.ts`
- [Content summaries](https://github.com/wasif0410/trajectory/blob/main/lib/content.ts): `lib/content.ts`
- [Page assembly](https://github.com/wasif0410/trajectory/blob/main/app/page.tsx): `app/page.tsx`

### Desktop experience

- [Desktop manager](https://github.com/wasif0410/trajectory/blob/main/components/os/Desktop.tsx): `components/os/Desktop.tsx`
- [Log views](https://github.com/wasif0410/trajectory/blob/main/components/os/views.tsx): `components/os/views.tsx`
- [File browser](https://github.com/wasif0410/trajectory/blob/main/components/os/FileGrid.tsx): `components/os/FileGrid.tsx`
- [Window chrome](https://github.com/wasif0410/trajectory/blob/main/components/os/Window.tsx): `components/os/Window.tsx`
- [Launcher and taskbar](https://github.com/wasif0410/trajectory/blob/main/components/os/Taskbar.tsx): `components/os/Taskbar.tsx`
- [View and OS data](https://github.com/wasif0410/trajectory/blob/main/components/os/types.ts): `components/os/types.ts`

### Desktop extras

- [Arcade dock](https://github.com/wasif0410/trajectory/blob/main/components/os/ArcadeDock.tsx): `components/os/ArcadeDock.tsx`
- [Snake game](https://github.com/wasif0410/trajectory/blob/main/components/os/Snake.tsx): `components/os/Snake.tsx`
- [Synth audio](https://github.com/wasif0410/trajectory/blob/main/lib/audio.ts): `lib/audio.ts`
- **Browser preferences**
- **Web Audio**

### Other components

- **Visitor**

## Connections

- Visitor → Page assembly: opens site
- Log entries → Entry loader: read MDX
- Info pages → Entry loader: read MDX
- Entry loader → Page assembly: returns content
- Page assembly → Content summaries: derives summaries
- Page assembly → Desktop manager: passes rendered data
- Desktop manager → Log views: renders views
- Desktop manager → Window chrome: manages windows
- Desktop manager → Launcher and taskbar: renders controls
- Desktop manager → Arcade dock: renders dock
- Log views → File browser: renders listings
- Desktop manager → View and OS data: uses view model
- Launcher and taskbar → Synth audio: controls sound
- Launcher and taskbar → Browser preferences: reads preferences
- Arcade dock → Snake game: starts game
- Arcade dock → Synth audio: plays effects
- Snake game → Synth audio: plays game effects
- Snake game → Arcade dock: reports score
- Synth audio → Web Audio: synthesizes sound
