Hi all,
I've just released v0.1.0 of Phoenix - a 'batteries included, but removable' library to wire up and configure Component-based systems. If you've ever wondered whether you really have to copy and paste 'system.clj', 'dev.clj' and 'user.clj' from one Component project to the next, it's well worth having a look at!
Having used Phoenix in anger on a few projects for a couple of weeks, it's now had a fair bit of battle-testing, kinks ironed, and the like - so thought I'd make another post to the list :)
Features added since I last posted:
- Many re-usable Components - CLJS compiler, Aleph, http-kit, JDBC pool, CSS compiler (using Garden) - see https://github.com/james-henderson/phoenix/tree/master/modules/ for more details. These components can be used whether or not you choose to use Phoenix, and, likewise, non-Phoenix components can be used in Phoenix-configured systems - hooray for composability :)
- Support for managing passwords/credentials - you can store these, encrypted, in your configuration, and Phoenix will decrypt them for you.
- Pulling configuration variables from environment variables and JVM properties, in addition to the Phoenix config files
- 'Batteries removable' API - if you need a little more flexibility, or want to compose Phoenix with something else.
- A fair few bugfixes/API changes through usage
There's also a couple of Lein templates to get up and running quickly:
- `lein new phoenix-webapp <my-project> -- :reagent` will get you a working webapp (other options are `:om`, `:om-sablono` or `:flow`).
- If you don't want the CLJS side, `lein new phoenix-api <my-project>` just has an example server-side API.
Would be great to get your thoughts and feedback on this - is this a good way to wire up such systems?
Cheers,
James