- Clojure 96.1%
- Sass 2.8%
- JavaScript 0.7%
- HTML 0.4%
Squashed commit of the following:
commit c8bf5e0cb4fd95935e06dc46dda38256f5bb970f
Author: Arne Schlüter <arne@schlueter.is>
Date: Wed Aug 1 11:37:43 2018 +0200
Start credential verification only if there are previous credentials
commit 61e6f2e7f2fb4d01e59c71c5980b1b761fa0bf83
Author: Arne Schlüter <arne@schlueter.is>
Date: Wed Aug 1 10:22:31 2018 +0200
Make `dispatches?` helper return a boolean
commit 4dc10acd5f1eae616d62c24e3cb9685e4e595f04
Author: Arne Schlüter <arne@schlueter.is>
Date: Wed Aug 1 09:19:49 2018 +0200
Add joker for linting
commit 7069febff0ed49be5c60e6787bfc9dc5b758917b
Author: Arne Schlüter <arne@schlueter.is>
Date: Tue Jul 31 14:17:41 2018 +0200
Implement navigation as interceptor
FIXME: Unauthorized access doesn't redirect to `#/login?redirect=...`
commit 60f9f03dd86f48234133e76dd57c067afb7a74d4
Author: Arne Schlüter <arne@schlueter.is>
Date: Wed Jul 18 19:35:47 2018 +0200
Make booting explicit and prepare for :navigate interceptor
|
||
|---|---|---|
| src | ||
| test/cljs/airsonic_ui | ||
| .gitignore | ||
| .joker | ||
| .travis.yml | ||
| karma.conf.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| shadow-cljs.edn | ||
Airsonic Web Client 
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
Note: In dev mode this project comes with re-frame-10x. You can hit Ctrl + h to display the overlay and have a time traveling debugger.
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.