How airencracken/songstead works
Songstead is a self-hosted music-recommendation inbox for small communities. Members submit music links and choose an audience; the server previews metadata, stores recommendations, and presents Recent, shelf/history, search, listening feedback, likes, comments and timestamped annotations. Owners also manage accounts, invitations and settings, while users can export history and operators can back up or restore data. The graph follows the documented user workflow and sampled server/store calls; several README capabilities have only directory-level paths because their implementation files were not excerpted.
Main entry points: music.go Recommendations · main.go CLI and server · store.go SQLite store · web.go HTTP application
Components 21
Application entry
- CLI and server
cmd/songstead/main.go - HTTP application
internal/web/web.go
Member experience
- Recommendations
internal/web/music.go - Post management
internal/web/posts.go - Profiles
internal/web/profiles.go - Search
internal/web/search.go - Administration
internal/web/admin.go - Discussion links
internal/web/integration.go
Music domain
- Link preview
internal/web/previews.go - Music metadata
internal/media/metadata.go - Timestamp comments
internal/store/annotations.go
Persistence and operations
- Inbox and music state
internal/store/inbox.go - Search queries
internal/store/search.go - Accounts and access
internal/store/administration.go - SQLite store
internal/store/store.go - History export
internal/store/export.go - Snapshot restore
internal/store/snapshot.go - Automatic backups
cmd/songstead/automatic_backup.go - Member data
internal/store
Other components
- Community member
- Owner
Connections 25
- Community member → HTTP application: uses
README.md - Owner → HTTP application: administers
README.md - CLI and server → HTTP application: serves
- HTTP application → Recommendations: routes requests
- HTTP application → Administration: routes requests
- Recommendations → Inbox and music state: stores posts
- Recommendations → Link preview: requests previews
- Link preview → Music metadata: fetches metadata
internal/web/previews.go - Recommendations → Post management: edits posts
- Post management → Inbox and music state: updates posts
- Search → Search queries: searches music
internal/web/search.go - Search → Member data: searches comments
internal/web/search.go - Administration → Accounts and access: manages accounts
internal/web/admin.go - Discussion links → Timestamp comments: uses timestamps
internal/web/integration.go - Recommendations → Timestamp comments: shows annotations
- Profiles → Member data: loads profiles
internal/web/profiles.go - Recommendations → Member data: loads member data
internal/web/music.go - CLI and server → SQLite store: opens store
cmd/songstead/main.go - CLI and server → Snapshot restore: restores snapshot
cmd/songstead/main.go - CLI and server → Automatic backups: starts backups
cmd/songstead/main.go - Automatic backups → SQLite store: takes snapshots
cmd/songstead/automatic_backup.go - CLI and server → History export: exports history
- SQLite store → Inbox and music state: persists inbox
- SQLite store → Accounts and access: persists accounts
- SQLite store → Member data: persists member data