Tools We Use
Xing is the glue between front-end and back-end applications. It's nothing to trifle with, but it relies on other projects and frameworks to provide the actual frontend and backend.
Backend: Ruby on Rails
Xing uses the venerable Ruby on Rails HTTP framework as its default backend target. Documentation and guides for Rails are freely available on the internet. We recommend:
- Rails Guides is the official documentation.
- Rails Tutorial has served many aspiring Rails programmers well over the years.
Xing adds a number of components to the Rails backend. Mappers and Serializers almost entirely replace traditional Rails views, and Xing Controllers are much simpler and less variable than traditional controllers are. These concepts are explained in greater detail later in this book.
Frontend: AngularJS
The frontend lacks a unified solution that compares to Rails for the backend. Therefore, Xing makes a number of selections from the technology field for its frontend.
- AngularJS 1.4 is the foundation for our tools. AngularJS is well supported, with good tools and documentation.
- UI Router is used for application state management. The API reference is reasonably light and complete. There are some best practices that bear documentation, however.
- A1Atscript reduces the amount of boilerplate Javascript and will ease the transition to AngularJS 2.
- Compass to compile Sass for Xing stylesheets. Granted, this adds a Ruby dependency to the frontend, and we're evaluating alternatives.
Other components
- Build system: Grunt
- Transpiler: Traceur
- Backend Testing: RSpec, json_spec
- Frontend Testing: Jasmine
- E2E Testing: Capybara, Selenium, rspec-steps
- Backend Components: ActiveModel::Serializers