{"id":18441128,"url":"https://github.com/rrrnld/airsonic-ui","last_synced_at":"2025-04-07T22:32:04.560Z","repository":{"id":35890465,"uuid":"130551730","full_name":"rrrnld/airsonic-ui","owner":"rrrnld","description":"Modern user interface for https://github.com/airsonic/airsonic – CURRENTLY INACTIVE","archived":false,"fork":false,"pushed_at":"2023-03-04T02:38:53.000Z","size":5865,"stargazers_count":26,"open_issues_count":25,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-23T01:41:22.265Z","etag":null,"topics":["airsonic","clojurescript","shadow-cljs"],"latest_commit_sha":null,"homepage":"https://rrrnld.github.io/airsonic-ui","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rrrnld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-22T09:07:45.000Z","updated_at":"2025-02-20T21:02:52.000Z","dependencies_parsed_at":"2024-08-21T19:05:36.146Z","dependency_job_id":null,"html_url":"https://github.com/rrrnld/airsonic-ui","commit_stats":null,"previous_names":["rrrnld/airsonic-ui"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrrnld%2Fairsonic-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrrnld%2Fairsonic-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrrnld%2Fairsonic-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rrrnld%2Fairsonic-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rrrnld","download_url":"https://codeload.github.com/rrrnld/airsonic-ui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247741153,"owners_count":20988343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airsonic","clojurescript","shadow-cljs"],"created_at":"2024-11-06T06:34:53.578Z","updated_at":"2025-04-07T22:31:59.534Z","avatar_url":"https://github.com/rrrnld.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Airsonic Web Client [![CircleCI](https://circleci.com/gh/heyarne/airsonic-ui.svg?style=svg)](https://circleci.com/gh/heyarne/airsonic-ui) [![Greenkeeper badge](https://badges.greenkeeper.io/heyarne/airsonic-ui.svg)](https://greenkeeper.io/)\n\nThis repository contains an alternative web frontend for [airsonic](https://github.com/airsonic/airsonic). The goal is to eventually be able to fully replace the current web interface.\n\n## Implemented So Far\n\n* Login with persisting credentials\n* Browse your library by newest / most recently played / starred\n* Browse artists alphabetically\n* A currently playing queue with next, previous, repeat and shuffle\n* Information about the current track with the ability to seek\n\n## How Do I Host This Myself?\n\nThere are two options:\n\n- You build it yourself by cloning the repository and running `npm run build`\n- You grab a pre-built version from the [gh-pages branch](https://github.com/heyarne/airsonic-ui/tree/gh-pages) (just click the download button)\n\nThe files you receive either way should be identical. There's [an article about setting up nginx](https://github.com/heyarne/airsonic-ui/wiki/Self%E2%80%93hosting) in the repository wiki.\n\nIf you have any questions please ask them in the [airsonic matrix channel](https://riot.im/app/#/room/#airsonic:matrix.org).\n\n## Development\n\nThe project is written in [ClojureScript](https://clojurescript.org/) and uses [re-frame](https://github.com/Day8/re-frame) for structure and peace of mind. The build tool is [shadow-cljs](https://shadow-cljs.github.io/docs/UsersGuide.html), which offers nice editor integration and interoparibility with the whole JavaScript ecosystem.\nIf you haven't worked with re-frame: I highly recommend it. Good resources are the project's [docs](https://github.com/Day8/re-frame/tree/master/docs) and a [post about its building blocks](https://purelyfunctional.tv/guide/re-frame-building-blocks/).\n\nTo build the project make sure you have Node.js (v6.0.0), npm and Java 8 installed in your system.\n\n```\n# after cloning the project, first install all dependencies\n$ npm install\n\n# start a continuous build with hot-code-reloading and continuous testing\n# first build takes a while. open http://localhost:8080\n$ npm run dev\n```\n\nAll other build tasks are defined in the `package.json` (more below).\n\n### Editor Integration\n\nIntegrating shadow-cljs with your editor helps tremendously with development. After having run `npm run dev` as described above you can connect to the REPL and get features like in-editor code execution and code completion / documentation lookup. For further information see [this part of the shadow-cljs user guide](https://shadow-cljs.github.io/docs/UsersGuide.html#_editor_integration). Recommended editors and plugins are Calva for VSCode and CIDER for Emacs (comes with Spacemacs). Make sure to open `localhost:8080` in the browser after starting the `dev:cljs` task to execute ClojureScript code in a live REPL.\n\n### re-frame-10x\n\nre-frame-10x is a debugger that is bundled with the app in development mode. Once you have the build running, hit `Ctrl + h` and the re-frame-10x window will show up:\n\n![re-frame-10x in action](./docs/re-frame-10x.png)\n\nIt provides you with tools to inspect the state of the application, undo and replay events, debug performance issues and more.\n\n## Tests\n\nThis project uses [karma](https://karma-runner.github.io/) for tests. There is a check inside `karma.conf.js` to see whether Firefox is installed (via `which firefox` which probably breaks on Windows 🤷); if that command doesn't fail it will be used as the test runner. Otherwise Chrome will be used. If you have Chromium installed, make sure to set the `CHROME_BIN` environment variable to point to Chromium.\n\n```\n# run tests once\n$ npm test\n```\n\n**Note:** If you want nice console output in your tests, make sure to `(enable-console-print!)`. You can call `println` afterwards like you're used to.\n\n## Deployment\n\n```\n# build and optimize the code once for production\n$ npm run build\n\n# publishes everything via gh-pages\n$ npm run deploy\n```\n\nThere is continuous deployment set up on [circleci](https://circleci.com/gh/heyarne/airsonic-ui) that builds and deploys to `gh-pages` after a commit to the `master` branch.\n\n**Note:** If you have a continuous build running and run `npm run build` or `npm run deploy`, it will delete the compiled tests, causing the continuous tests to not run anymore. This can be fixed by running `npm test` again.\n\nAll build artifacts land in `/public`. Don't change anything in there as changes will be overwritten.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrrnld%2Fairsonic-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frrrnld%2Fairsonic-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frrrnld%2Fairsonic-ui/lists"}