# Spina, a modern Backbone
  
**GitHub:** https://github.com/beanbaginc/spina
**NPM:** https://www.npmjs.com/package/@beanbag/spina
**Status:** Under active development / released / used in production
At [Beanbag](https://www.beanbaginc.com), we make heavy of [Backbone.js](https://backbonejs.org). We like it for the ability to cleanly separate how we store state and process logic from how we display it.
Unfortunately, there are problems with Backbone when writing modern-day JavaScript. So we set out to solve some of these. The result is Spina.
Spina wraps Backbone, rather than replacing it, and makes it more suitable for modern JavaScript development.
It introduces the following:
1. Restored ability to define `defaults`, `url`, etc. as attributes in ES6-based Backbone subclasses (using `class ... extends ...`)
2. A fixed order of initialization for subclasses when using ES6 classes.
3. Improvements to views:
1. Easier model event registration (similar to DOM event registration)
2. Better control over render behavior.
4. Improved typing for TypeScript.
5. Mixins for classes.
6. Full compatibility with code already using Backbone.