Skip to content

pegasusict/AMM_core

Repository files navigation

Audiophiles' Music Manager - AMM_core

Codacy Badge

AMM is a music management system for very large collections.

It has the following processing capabilities:

  • Importing / Parsing
  • Fingerprinting
  • Silence Trimming
  • Converting
  • Tag Retrieval
  • Art Retrieval
  • Lyrics Retrieval
  • Tagging
  • Renaming / Sorting
  • exporting

Modules

Module Description Progress
Core Server 90%
API client API client 100%
Web Web Interface 10%
TUI CLI/Terminal Client planned
GUI Graphical Client planned
Mobile Mobile Client planned

user login via google oauth, admin approved registration

Per-user playback

The system has a icecast like playbacksystem which works on a per-user basis.

Planned capabilities

audiobook support? crossfading

Local test run

Use the helper script to create local test directories and start the API server:

./scripts/run-local-server.sh

Or via Make:

make run-local

MariaDB run

Set DATABASE_URL to an async MySQL/MariaDB URL (driver: asyncmy) and start uvicorn:

export DATABASE_URL="mysql+asyncmy://amm_user:amm_pass@127.0.0.1:3306/amm_db?charset=utf8mb4"
# Bind to localhost-only by default.
PYTHONPATH="$(pwd)/src" .venv/bin/python -m uvicorn main:app --app-dir src --host 127.0.0.1 --port 8000

Run database migrations manually (optional; startup also runs alembic upgrade head):

make migrate-db

Task retention

Old task rows are cleaned up automatically once per day at startup interval.

  • TASK_RETENTION_ENABLED (default: true)
  • TASK_RETENTION_DAYS (default: 30)

Manual admin trigger via GraphQL mutation:

mutation {
  runTaskRetentionCleanup(olderThanDays: 7)
}

Security-related env vars

  • JWT_SECRET_KEY (required unless ALLOW_INSECURE_DEFAULT_JWT_SECRET=true)
  • ALLOW_INSECURE_DEFAULT_JWT_SECRET (default: false, dev-only fallback)
  • GRAPHIQL_ENABLED (default: false)
  • CORS_ALLOW_ALL (default: false)
  • CORS_ORIGINS (comma-separated allowlist)
  • LOGIN_RATE_LIMIT_ENABLED (default: true)
  • LOGIN_RATE_LIMIT_MAX_ATTEMPTS (default: 5)
  • LOGIN_RATE_LIMIT_WINDOW_SECONDS (default: 60)
  • REFRESH_RATE_LIMIT_ENABLED (default: true)
  • REFRESH_RATE_LIMIT_MAX_ATTEMPTS (default: 20)
  • REFRESH_RATE_LIMIT_WINDOW_SECONDS (default: 60)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages