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> |
||
|---|---|---|
| config | ||
| internal | ||
| .env.example | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
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.