1
0
Fork 0
mirror of https://github.com/heyarne/airsonic-ui.git synced 2026-05-06 10:23:39 +02:00
Modern user interface for https://github.com/airsonic/airsonic – CURRENTLY INACTIVE
  • Clojure 96.1%
  • Sass 2.8%
  • JavaScript 0.7%
  • HTML 0.4%
Find a file
Arne Schlüter 513169ea71 Implement custom progress indicator and seeking
Squashed commit of the following:

commit 23b9a3deac564bf3753a00238784a6045cb50d46
Author: Arne Schlüter <arne@schlueter.is>
Date:   Sun Oct 14 10:20:08 2018 +0200

    Enable seeking in buffered part and fix drawn x value

commit 9ce4b0941f4a57286f608d2b155658672cac3817
Author: Arne Schlüter <arne@schlueter.is>
Date:   Sun Oct 14 09:40:43 2018 +0200

    Draw seek position and enable seeking played part by click

commit 58cbf2d8035c0eeacaed3da7a68f97d94db4a2b6
Author: Arne Schlüter <arne@schlueter.is>
Date:   Thu Oct 11 21:42:57 2018 +0200

    Add retina canvas

commit 6acb84a67e4bee61e5b9ae6eb15e8159e0431662
Author: Arne Schlüter <arne@schlueter.is>
Date:   Wed Oct 10 17:52:43 2018 +0200

    Implement canvas progress bar
2018-10-14 10:47:25 +02:00
docs Improve docs and simplify dev script 2018-08-22 12:33:38 +02:00
src Implement custom progress indicator and seeking 2018-10-14 10:47:25 +02:00
test/cljs/airsonic_ui Merge incomplete podcast support 2018-10-08 21:15:56 +02:00
.gitignore Restructure app init; fixes #5 and #11 2018-07-09 21:16:28 +02:00
.joker Add a real playlist (#20) 2018-08-20 16:34:52 +02:00
.travis.yml Cache maven deps 2018-05-29 22:47:25 +02:00
karma.conf.js Setup tests 2018-05-28 19:57:03 +02:00
package-lock.json Update shadow-cljs and use relative paths; fixes #17 2018-08-20 19:02:17 +02:00
package.json Provide local version of airsonic logo created by @jooola 2018-08-27 11:16:10 +02:00
README.md Improve docs and simplify dev script 2018-08-22 12:33:38 +02:00
shadow-cljs.edn Remove re-frame-10x from release builds (closes #18) 2018-08-20 18:51:37 +02:00

Airsonic Web Client Build Status

This is just meant for exploration. If you want to see something more serious, take a look at airsonic-ui.

Implemented so far

  • Login
  • Welcome screen (most recently played)
  • Artist detail
  • Album detail
  • Play Track w/ next and previous
  • Currently playing notification

Development

The project is written in ClojureScript and uses re-frame for structure and peace of mind. The build tool is shadow-cljs, which offers nice editor integration and interoparibility with the whole JavaScript ecosystem. If you haven't worked with re-frame: I highly recommend it. Good resources are the project's docs and a post about its building blocks.

To build the project make sure you have Node.js (v6.0.0), npm and Java 8 installed in your system.

# after cloning the project, first install all dependencies
$ npm install

# start a continuous build with hot-code-reloading and continuous testing
# first build takes a while. open http://localhost:8080
$ npm run dev

Editor integration

Integrating 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, which contains instructions for Emacs, Atom, VSCode and other editors. Make sure to open localhost:8080 in the browser to execute ClojureScript code.

re-frame-10x

re-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:

re-frame-10x in action

It provides you with tools to inspect the state of the application, undo and replay events, debug performance issues and more.

Tests

This project uses karma for tests. Make sure to have Google Chrome installed, otherwise the watcher will time out. If you want to run tests continuously in the background, you may want to have Growl installed to show notifications (see setup instructions).

# run tests once
$ npm test

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.

Deployment

# build and optimize the code once for production
$ npm run build

# runs npm run build and publishes everything via gh-pages
$ npm run deploy

All build artifacts will be output in /public. Don't change anything in there as changes will be overwritten.