Back

How we make the right app for you (part 2)

Captain's log, stardate d489.y35/AB

Development Dev Shop Ruby on Rails Ruby Rails Angular Capybara Airbrake Capistrano Chef HTML5 Javascript TechStack
Xavier Redó
Founder & CTO
How we make the right app for you (part 2)

Disclaimer: long (and nerdy) post ahead.

In our last entry, we wrote about MarsBased's principles when working for other companies, because we have recently been hired to develop our first client apps.

In this entry, we are breaking down our tool belt.

Frontend Development

MarsBased stands for innovation by using state-of-the-art technologies. HTML5, CSS3 - based on Bootstrap - and client-side JavaScript frameworks like Angular allow us to deliver responsive and highly dynamic websites with an unparalleled User Experience.

The MarsBased Tech Stack

Twitter Bootstrap is a front-end framework created to design websites faster and easier. Its last version adopts a "mobile first" philosophy providing tools to create responsive sites and apps. Nowadays, every competitive website needs to be responsive, due to the rise of mobile traffic in multiple-sized screens or the latest Google algorithm changes, focusing on mobile experience (Google Hummingbird explained here).

Another technology we use is LESS. As a dynamic stylesheet language, LESS introduces variables, functions and operators in your stylesheets and preprocesses them. By doing that, designers can actually focus on designing, without having to write long, repetitive and tedious CSS stylesheets.

As for the JavaScript side, we use Angular. Angular is a JavaScript framework designed to build single-page web applications as if they were native by removing all the JavaScript boilerplate. By doing that, Angular gives the browser the power it needs to transform our ideas into apps.

The most recent addition to the MarsBased tech stack has been CoffeeScript. CoffeeScript allows rewriting JavaScript code with simplicity and elegance. After some research and testing, we integrated both CoffeeScript and Angular with Cookin.me and fell in love with it.

Server Side Development

We are Rubyists! We love Ruby on Rails simplicity, elegance, and cleanliness. While we believe that methodologies are language-agnostic, Ruby and Rails help us follow Agile Development practices. That's the reason why we have chosen tools that let us move quickly through each development stage: building, integrating, testing & releasing.

At MarsBased, we take testing very seriously. We know that our clients might require changes over time, and introduce improvements to their apps. The only way we can ensure delivering these changes without breaking the entire codebase of the project is through testing. Test, test, test and then some.

We have adopted two popular Ruby frameworks for testing. With RSpec and Capybara, we feel very comfortable applying a test-driven development approach from unit testing to building acceptance tests.

For more specific projects, we have a flexible tool belt. According to every project's needs, we've got a broad set of technologies at hand to give our clients exactly what they need:

Deployment

Small teams need to automate and delegate processes to manage recurrent tasks. This is why we use Chef: to automatically provision our servers. Automation spares us from having to log into our servers (this is so last century's!) and guarantees that no human errors will happen during server installations. All the time we save by automating, we can use it in polishing our apps even further.

Because of our background using Chef, we have a custom set of configurations (called cookbooks in Chef jargon) that cover all the possible scenarios we could ever need. We don't need to reinvent the wheel for every project. We can set up a server in less than 30 minutes unless anything uncommon is required.

For deployments, we use Capistrano. This open-source tool is used to automate software deployments without downtime. Fast and simple. It is actually an awesome way to deliver our customers the latest version of their apps seamlessly.

Maintenance

At MarsBased, we know that sometimes things might go wrong. Most of the times, the real cause of a general failure is an error that goes unnoticed for too long.

Our servers run very different services that need to be monitored (Nginx, MySQL or Elasticsearch just to name a few!), so we use Monit to rule them all. Monit sends notifications whenever there is a risk of something failing such as a service being too loaded. It actually allows us to act proactively before any errors arise. But if a service goes down, Monit automatically tries to start it to minimize the downtime as much as possible.

Although Monit itself is very impressive, we also use another error-tracking tool very known by the Ruby community. Airbrake is an exception reporting service Airbrake trusted by over 40k customers, now seamlessly integrated with our tech stack. Simply put, if anyone using our web applications comes across an error message, we'll get a notification in our cell phones with the details of the error in less than a minute.

Nothing is more satisfying than spotting and solving bugs before users have even time to report them.


That's all for today, folks. As you can see, we love talking technologies. Feel free to drop us an e-mail or bring up a conversation on Twitter anytime.

Share this post

Related Articles

Ruby

Five reasons why our clients love Ruby on Rails for their apps

Contrary to popular belief, developing your project using Ruby on Rails won't make it more difficult to maintain. It's a competitive advantage, nowadays.

Read full article
Buildings

What is the best Ruby on Rails CMS?

We have compared the most popular CMS built with Ruby on Rails according to user experience, flexibility to develop on top of them and other Martian criteria.

Read full article
Car rear

So, do you guys do only Ruby for the backend?

This is a question we are asked all too frequently from outside the company. However, we recently asked this very question ourselves. Yes, we only do Ruby and that isn't going to change anytime soon.

Read full article