A local-first music system for curated libraries, precise playback, and deep listening insight.
  • Go 96.1%
  • PowerShell 3.1%
  • Shell 0.8%
Find a file
Stu Leak 1117488381 Refactor into modular architecture
- Reduce main.go from 311 lines to 26 lines
- Extract app logic to internal/app/app.go
- Extract UI to internal/ui/ui.go
- Add build tag separation (native_media / stub)
- Move FFmpeg DLLs and exe to external/libs/
- Add Windows and Linux build scripts
- Add packets_stub.go for non-native builds
- Update gitignore for exe/dll/db
- Update TODO, DONE, CHANGELOG with full status
- Clean project root: only source and docs
2026-04-12 03:07:53 -04:00
_local Add logo design spec and LT Philosophy for Eternal 2026-04-12 01:54:36 -04:00
assets/logos Add iTunes 2010-style UI shell 2026-04-12 02:29:36 -04:00
cmd/eternal Refactor into modular architecture 2026-04-12 03:07:53 -04:00
docs Refactor into modular architecture 2026-04-12 03:07:53 -04:00
internal Refactor into modular architecture 2026-04-12 03:07:53 -04:00
scripts Refactor into modular architecture 2026-04-12 03:07:53 -04:00
.gitignore Refactor into modular architecture 2026-04-12 03:07:53 -04:00
AGENTS.md Add network features and UI design docs 2026-04-12 02:27:06 -04:00
DONE.md Refactor into modular architecture 2026-04-12 03:07:53 -04:00
go.mod Implement core playback engine and storage 2026-04-12 02:03:42 -04:00
go.sum Implement core playback engine and storage 2026-04-12 02:03:42 -04:00
README.md Add README and Getting Started documentation 2026-04-12 02:38:52 -04:00
TODO.md Refactor into modular architecture 2026-04-12 03:07:53 -04:00

Eternal - Modern Local-First Music Player

A desktop music player inspired by iTunes 2010, built with FFmpeg for local-first audio playback.

Features

  • Local-First: No cloud dependency, all music on your device
  • iTunes 2010 Style: Classic sidebar layout with Library/Playlists
  • FFmpeg Playback: High-quality audio decoding via FFmpeg libraries
  • Optional Network: Discogs/Genius for metadata (with local caching)
  • Insight Engine: Track listening habits locally

Requirements

FFmpeg (Required for Playback)

Download from: https://github.com/BtbN/FFmpeg-Builds/releases

  • Windows: Extract to C:\ffmpeg\ and add C:\ffmpeg\bin to PATH
  • Linux: sudo apt install ffmpeg

See docs/GETTING_STARTED.md for full setup instructions.

Building

Full Build (with FFmpeg)

go build -tags native_media -o eternal.exe ./cmd/eternal

UI Testing Build (no audio)

go build -o eternal.exe ./cmd/eternal

Usage

  1. Run eternal.exe
  2. File → Add Folder to Library (scans ~/Music by default or select folder)
  3. Click a track to play
  4. Use playback controls or Play menu

Project Structure

eternal/
├── cmd/eternal/          # Entry point
├── internal/
│   ├── library/         # Music scanning
│   ├── metadata/        # FFprobe parsing
│   ├── network/        # Discogs/Genius APIs
│   ├── playback/       # FFmpeg engine
│   ├── storage/        # SQLite
│   └── utils/          # Helpers
├── docs/                # Design docs
└── assets/             # Logo

License

MIT