Hi, Habr! Today we want to briefly present to you the project on which we have been working for the last 10 months. There are 4 of us in the team and, using ruby and js, we created
Staply - an application where it is convenient to work together and store everything.

Foreword
At the moment there are a huge number of applications for storing and sharing data:
cloud storages, instant messengers, various note taking services, etc. But everyone has a couple of flaws. First, they are convenient only for storing a certain type of information (files only or text only). Secondly, it is terribly inconvenient to collect some data, because it is often incomprehensible who sent what, where, when and why. Many services are trying to solve these problems with “add-ons” (the same shared folders as Dropbox and work chat Evernote), but we believe that to eliminate these shortcomings we need a new interface. Therefore, we created Staply.
')
about the project
Staply allows you to create "notebooks" where it is convenient to store anything and work together. The interface is divided into two parts: on the left side are the notes published by the participants of the notebook. Files, links, email addresses and other meta data are extracted from notes automatically and moved to the right side.

Search for notes implemented outside the box: using filters. With their help, you can display, for example, notes containing files or links. Having found the necessary files / links, you can immediately get to the section of the notebook where they were posted.
Additionally, we maximally simplified the structure of the service. There is only one level of notebooks and that's it. Therefore, for example, if I have a notebook for company X, then I am sure that only in this notebook one should look for documents related to this company. The invitation of participants occurs by e-mail.

You can edit your notes at any time. This way you can avoid a large number of notes in a notebook - at any time the notebook will contain only relevant and really important information.
Already, Staply is available on all platforms as a web version.
Used technologies
In short, then:
Hosting - Amazon Web Services:
2 EC2 instances - small for test server, medium - for production version,
S3 - for data storage,
Simple Email Service - to send email from an application,
DB - MySql (in the RDS cloud)
To maintain the service in working condition, we tried to avoid a sharp increase in load, gradually increasing traffic, which allowed us to identify bottlenecks in the system and eliminate them in the operating mode, without emergency situations.
From the very beginning of development, we used Amazon AWS services: - EC2 m1.small instance for the test version and m3.medium for the working t2.micro with Haproxy installed for convenient routing and load balancing when adding new instances.
Written on Rails server running in a bunch of Passenger + Nginx. After a long search for the optimal server, we settled on it as the most stable in terms of memory consumption.
Memory usage in passenger
Under the following load:

The MySql database was launched in the RDS service for daily backups and the ability to quickly increase system capacity without the need to transfer data, since from the earliest beta version, the service was used by clients and there were data in the database that we had to provide.
Simple Email Service (SES)
It integrates perfectly into Rails with Action Mailer, and provides a free quota of 10,000 messages per day.
A few words about the design
The entire design of the project is made in the Sketch app from
Bohemian coding . We decided to do the icons and illustrations in SVG to avoid problems with high-expansion displays. All SVG we have combined into sprites to avoid blinking when the state of icons changes (for example, when clicking).
In principle, everything. We will be glad to hear your ideas and comments.