No description
  • PHP 52%
  • Vue 36.5%
  • TypeScript 6.6%
  • Makefile 4.1%
  • JavaScript 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2025-10-13 15:57:00 +03:00
.github build: update release workflow & makefile 2025-06-20 14:04:49 +03:00
.husky feat: initial commit 2025-06-06 18:58:33 +03:00
.tx feat: initial commit 2025-06-06 18:58:33 +03:00
.vscode feat: initial commit 2025-06-06 18:58:33 +03:00
appinfo feat: add videos db, list view 2025-10-06 02:12:37 +03:00
gen chore: clean up gen files 2025-10-06 01:21:04 +03:00
img feat: add icon 2025-10-13 10:23:31 +03:00
l10n feat: initial commit 2025-06-06 18:58:33 +03:00
lib fix: cache bust radio streams on play 2025-10-13 10:23:31 +03:00
src build: fix pnpm build 2025-10-13 15:57:00 +03:00
templates feat: initial commit 2025-06-06 18:58:33 +03:00
tests feat: initial commit 2025-06-06 18:58:33 +03:00
vendor-bin feat: initial commit 2025-06-06 18:58:33 +03:00
.editorconfig feat: initial commit 2025-06-06 18:58:33 +03:00
.gitignore build: update release workflow & makefile 2025-06-20 14:04:49 +03:00
.l10nignore feat: initial commit 2025-06-06 18:58:33 +03:00
.lintstagedrc.cjs chore: update lints/fixers 2025-06-14 00:02:21 +03:00
.php-cs-fixer.dist.php build: exclude gen dir from lints 2025-06-07 00:09:05 +03:00
.phpactor.json feat: initial commit 2025-06-06 18:58:33 +03:00
.prettierignore feat: initial commit 2025-06-06 18:58:33 +03:00
.prettierrc chore: prettier fix 2025-06-07 02:42:38 +03:00
.release-please-manifest.json chore: update version number 2025-06-08 12:14:07 +03:00
CODE_OF_CONDUCT.md feat: initial commit 2025-06-06 18:58:33 +03:00
composer.json feat: podcasts 2025-06-15 02:15:38 +03:00
eslint.config.cjs feat: improve gpodder sync, update queue ui 2025-06-21 20:15:12 +03:00
LICENSE feat: initial commit 2025-06-06 18:58:33 +03:00
Makefile build: update makefile 2025-10-06 01:22:27 +03:00
openapi.json feat: basic video stream support 2025-10-06 10:22:07 +03:00
package.json feat: better mkv support + video.js player 2025-10-06 10:58:30 +03:00
pnpm-lock.yaml feat: better mkv support + video.js player 2025-10-06 10:58:30 +03:00
psalm.xml feat: initial commit 2025-06-06 18:58:33 +03:00
README.md feat: initial commit 2025-06-06 18:58:33 +03:00
release-please-config.json feat: initial commit 2025-06-06 18:58:33 +03:00
scaffold.config.cjs chore: clean up gen files 2025-10-06 01:21:04 +03:00
tsconfig.app.json feat: update album view & api 2025-06-09 15:12:12 +03:00
tsconfig.json feat: initial commit 2025-06-06 18:58:33 +03:00
tsconfig.node.json feat: initial commit 2025-06-06 18:58:33 +03:00
version.txt chore: update version number 2025-06-08 12:14:07 +03:00
vite.config.ts feat: update video error/warning message designs 2025-10-06 11:22:43 +03:00

Jukebox

Jukebox is a Nextcloud app for streaming and organizing all your audio content in one place.
It supports music files, podcasts (with gPodder sync), audiobooks, YouTube videos, and online radio.

Features

  • 🎵 Play local music files
  • 🎙️ Sync and stream podcasts using gPodder
  • 📚 Listen to audiobooks with resume support
  • 📺 Embed and play YouTube videos
  • 📻 Tune in to online radio streams

Installation

Download the app from Nextcloud's App Store through your Nextcloud instance.

If you prefer to download manually, you can download the latest version from GitHub and install directly:

  1. Place this app in nextcloud/apps/ or nextcloud/custom_apps/

  2. Here is a quick installation script you can use as base. Modify the first variable lines to match your setup:

    pushd "/path/to/root/of/nextcloud/custom_apps"
    
    APPVER=$(curl -s https://api.github.com/repos/chenasraf/nextcloud-jukebox/releases/latest | grep tag_name | grep -Eo 'v[^"]+') && \
    curl -L https://github.com/chenasraf/nextcloud-jukebox/releases/download/${APPVER}/jukebox-${APPVER}.tar.gz -o jukebox.tar.gz && \
    tar xfv jukebox.tar.gz && \
    rm -rf jukebox.tar.gz
    
  3. Then enable the app as you normally would from Nextcloud's Apps page.

Contributing

I am developing this package on my free time, so any support, whether code, issues, or just stars is very helpful to sustaining its life. If you are feeling incredibly generous and would like to donate just a small amount to help sustain this project, I would be very very thankful!

Buy Me a Coffee at ko-fi.com

I welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature, don't hesitate to open an appropriate issue and I will do my best to reply promptly.

Development

Automation

Most development processes are automated:

  • GitHub Actions run tests, builds, and validations on each push or pull request.
  • Pre-commit formatting is handled by lint-staged, which automatically formats code before committing:

🛠️ The NPM package husky takes care of installing the pre-commit hook automatically after pnpm install.


Manual Commands

While automation handles most workflows, the following commands are available for local development and debugging:

Build the App

make

Installs dependencies and compiles frontend/backend assets.

Run Tests

make test

Runs unit and integration tests (if available).

Format & Lint

make format   # Auto-fix code style
make lint     # Check code quality

Generate OpenAPI Docs

make openapi

Output is saved to build/openapi/openapi.json.

Packaging for Release

make appstore    # Production build for Nextcloud app store
make source      # Full source package
make distclean   # Clean build artifacts and dependencies

Sign Releases

After uploading the archive to GitHub:

make sign

Downloads the .tar.gz release, verifies it, and prints a SHA-512 signature using your key at ~/.nextcloud/certificates/jukebox.key.