Go to file
Team Goon 2e747c6660 Initial release: v0.1.0-dev1
Clean slate initialization of Goondex - a fast, local-first media indexer.

Features:
- SQLite database with WAL mode and foreign keys
- Full schema for performers, studios, scenes, and tags
- Many-to-many relationships via junction tables
- CRUD stores for all entities with search capabilities
- CLI with performer/studio/scene search commands
- Pluggable scraper architecture with registry
- TPDB client stub (ready for implementation)
- Configuration system via YAML files
- Comprehensive .gitignore and documentation

Architecture:
- cmd/goondex: CLI application with Cobra
- cmd/goondexd: Daemon placeholder for v0.2.0
- internal/db: Database layer with stores
- internal/model: Clean data models
- internal/scraper: Scraper interface and TPDB client
- config/: YAML configuration templates

Database schema includes indexes on common query fields and uses
RFC3339 timestamps for consistency.

Built and tested successfully with Go 1.25.4.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 21:37:26 -05:00
config Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
internal Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
.env.example Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
.gitignore Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
go.mod Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
go.sum Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00
README.md Initial release: v0.1.0-dev1 2025-11-14 21:37:26 -05:00

Goondex

Fast, local-first media indexer for adult content.

Goondex ingests metadata from external sources (TPDB, etc.), normalizes it, and stores it in a small SQLite database for quick search via CLI/TUI and background daemon tasks.

Version

v0.1.0-dev1 - Initial development release

Features (v0.1.0-dev1)

  • SQLite database with WAL mode for performers, studios, scenes, and tags
  • CLI search commands for local database queries
  • Pluggable scraper architecture (TPDB client stubbed)
  • Configuration via YAML files
  • Stash-inspired metadata resolution strategies (coming soon)

Architecture

Scrapers (TPDB, AE, etc.)
    ↓
Metadata Resolver (field strategies, merge rules)
    ↓
SQLite DB (performers, studios, scenes, tags)
    ↓
CLI/TUI + Daemon (search, identify, sync)

Installation

# Clone the repository
git clone https://git.leaktechnologies.dev/stu/Goondex.git
cd Goondex

# Build the CLI
go build -o bin/goondex ./cmd/goondex

# (Optional) Build the daemon
go build -o bin/goondexd ./cmd/goondexd

Configuration

Set your API keys as environment variables:

export TPDB_API_KEY="your-tpdb-api-key"

Edit configuration files in config/:

  • goondex.yml - Runtime settings (database path, cache dir, timeouts)
  • metadata.yml - Field strategies (MERGE/OVERWRITE/IGNORE)
  • source.yml - Scraper sources and priorities

Usage

CLI Commands (v0.1.0-dev1)

# Search performers in local DB
./bin/goondex performer-search "Riley Reid"

# Search studios in local DB
./bin/goondex studio-search "Brazzers"

# Search scenes in local DB
./bin/goondex scene-search "Some Title"

# Show version
./bin/goondex version

Database Schema

  • performers: id, name, aliases, nationality, country, gender, images, bio
  • studios: id, name, parent_id, images, description
  • tags: id, name
  • scenes: id, title, code, date, studio_id, description, images, director, url
  • scene_performers: junction table for scenes ↔ performers
  • scene_tags: junction table for scenes ↔ tags

Roadmap

v0.1.x

  • CLI search commands
  • SQLite stores for all entities
  • TPDB scraper implementation
  • Basic metadata strategies
  • Image cache

v0.2.x

  • Identify/import commands
  • TUI list + preview
  • Alias normalization
  • Full-text search (FTS5)

v0.3.x

  • Daemon (goondexd) with schedules
  • Incremental updates
  • Duplicate scene detection
  • Preview sprite generation

v0.4.x

  • Plugin scrapers
  • Headless HTTP API
  • Web UI

Development

# Run tests (when available)
go test ./...

# Build for development
go build -o bin/goondex ./cmd/goondex

# Run without installing
go run ./cmd/goondex performer-search "test"

Contributing

This is a personal project, but contributions are welcome! Please open an issue before submitting large changes.

License

[Your License Here]

Acknowledgments

Inspired by Stash and its metadata identification flow.