31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# Blastoise iOS Sketch
|
|
|
|
Native SwiftUI sketch for the Blastoise/MusicRoom server.
|
|
|
|
## What It Does
|
|
|
|
- Defaults to `http://mhsgroove.peterino.com:3001`.
|
|
- Signs in or signs up with the server.
|
|
- Loads rooms, queue state, people, library, and playlists.
|
|
- Connects to a room WebSocket and streams `/api/tracks/:id` through `AVPlayer`.
|
|
- Applies server timestamp sync and drift correction.
|
|
- Supports local library playback, queue/play-next actions, queue jumps/removes, and playback mode cycling.
|
|
- Uses one compact broadcast-console theme.
|
|
|
|
## Code Layout
|
|
|
|
- `BlastoisePingApp.swift` - app entrypoint.
|
|
- `ContentView.swift` - signed-in/signed-out shell and tab routing.
|
|
- `Models/AppTypes.swift` - API response models and shared enums.
|
|
- `State/AppModel.swift` - app state, server requests, WebSocket sync, uploads, and playback coordination.
|
|
- `UI/Theme.swift` - pixel-art palette, typography, reusable view chrome, and time formatting.
|
|
- `Views/` - focused SwiftUI screens and reusable row/panel components.
|
|
|
|
## Open
|
|
|
|
```bash
|
|
open ios/BlastoisePing/BlastoisePing.xcodeproj
|
|
```
|
|
|
|
The app currently allows arbitrary HTTP loads in `Info.plist` so it can reach the existing plain-HTTP test server and local development servers. Narrow that before any public distribution.
|