Skip to content

File Layout

Where everything lives. There's a lot of files, and we're only just getting started.

src/
├── main.ts                  # Mounts Svelte app
├── App.svelte               # Root component, canvas + UI
├── vite-env.d.ts            # Type declarations
└── lib/
    ├── svelte/
    │   └── layout/          # UI components
    │       ├── Box.svelte
    │       ├── Controls.svelte
    │       ├── Details.svelte
    │       ├── Fillets.svelte
    │       ├── Graph.svelte
    │       ├── Main.svelte
    │       └── Separator.svelte
    └── ts/
        ├── common/
        │   ├── Constants.ts           # App-wide constants
        │   ├── Extensions.ts          # Number/String prototype extensions
        │   └── Testworthy_Utilities.ts  # General utilities (tu singleton)
        ├── draw/
        │   ├── Colors.ts              # Color utilities + stores
        │   └── SVG_Paths.ts           # SVG path generators (svg_paths singleton)
        ├── managers/
        │   └── Preferences.ts         # localStorage wrapper
        ├── render/
        │   ├── index.ts               # re-exports singletons
        │   ├── Animation.ts
        │   ├── Camera.ts
        │   ├── Input.ts
        │   ├── Render.ts
        │   └── Scene.ts
        ├── runtime/
        │   └── Identifiable.ts        # Base class with id/hid
        ├── state/
        │   └── S_Mouse.ts             # Mouse state encapsulation
        ├── tests/
        │   ├── Angle.test.ts
        │   ├── Colors.test.ts
        │   ├── Coordinates.test.ts
        │   ├── Extensions.test.ts
        │   ├── Render.test.ts
        │   └── Testworthy_Utilities.test.ts
        └── types/
            ├── index.ts               # re-exports
            ├── Angle.ts               # Orientation, Quadrant, Direction
            ├── Coordinates.ts         # Point, Size, Rect, Polar, Point3, Size3, Block
            ├── Enumerations.ts        # App-wide enums
            ├── Interfaces.ts          # Projected, O_Scene
            └── Types.ts               # Type aliases (Dictionary, Integer, etc.)

Entry

The front door. Svelte mounts, canvas renders, managers wake up.

FileWhat it does
main.tsMounts App.svelte
App.svelteRenders canvas, calls init(canvas) on mount

Common

Shared foundations that everything else relies on.

FileWhat it does
Constants.tsApp-wide constants
Extensions.tsNumber/String prototype extensions (isBetween, hash, etc.)
Testworthy_Utilities.tsGeneral utilities, exported as tu singleton

Draw

Visual utilities for colors and SVG generation.

FileExportWhat it does
Colors.tscolorsColor utilities, reactive stores for theme colors
SVG_Paths.tssvg_pathsSVG path string generators (fillets, etc.)

Types

Geometry primitives, enums, interfaces—imported everywhere.

FileWhat it does
Angle.tsAngle class, T_Quadrant, T_Orientation, Direction enums
Coordinates.tsPoint, Size, Rect, Polar, Point3, Size3, Block classes
Enumerations.tsApp-wide enums (T_Signal, T_Persistence, T_Predicate, etc.)
Interfaces.tsProjected, O_Scene interfaces
Types.tsType aliases (Dictionary, Integer, callbacks)

Managers

Singletons that own specific concerns.

FileExportWhat it does
Preferences.tspreferenceslocalStorage read/write wrapper

Render

3D rendering pipeline singletons.

FileExportWhat it does
Scene.tssceneO_Scene CRUD, hierarchy
Camera.tscameraView/projection matrices
Render.tsrenderProjection pipeline, draw calls
Input.tsinputMouse events → rotation
Animation.tsanimationrAF loop, tick callbacks

Runtime

Base classes for objects that need identity and lifecycle.

FileWhat it does
Identifiable.tsBase class with id (string) and hid (hash)

State

Encapsulated snapshots. Pass these around instead of raw events.

FileWhat it does
S_Mouse.tsEncapsulates mouse event state (up, down, double, long, etc.)

Layout Components

Svelte components for the panel UI.

FileWhat it does
Main.svelteTop-level layout, orchestrates regions
Box.svelteContainer with separators on edges
Separator.svelteDivider with optional fillets
Fillets.svelteDecorative curved corners
Controls.svelteTop toolbar region
Details.svelteRight panel region
Graph.svelteMain canvas region