Developing Nestatini

Diogo Ferrer
Nest Collective Writing Wall
4 min readOct 2, 2019

Hello again fellow readers,

Our internship at Nest Collective is coming to a close, so let’s get down to the nitty-gritty of how Nestatini was developed over the course of the summer.

What is Nestatini?

Nestatini is a Nest internal management platform that gathers information about its companies, events and nesters. A typical user is able to view information regarding Nest’s companies and its members, search for something in particular, create events and share them on social media. You can read more about it on our previous blog post about the Design Sprint!

Our team of developers

The back-end

Considering we picked up on last year’s internship project, we already had a tech stack defined. The back-end was built using Ruby on Rails and a query language called GraphQL. Due to our lack of experience dealing with Rails and GraphQL’s steep learning curve, the mentors decided it was best to strip down the GraphQL from the platform’s existing code and focus our efforts on learning and coding pure Rails. This meant we had to turn our back-end into a RESTful API that satisfied all the previous and current requirements.

Regarding our PostgreSQL database, while the backbone was there, it still needed a little polishing to fit the reviewed models. Rails’ Active Record Migrations helped a lot with editing the database schema, since it can generate all the corresponding SQL commands from simple Ruby code describing the intended changes.

An interesting challenge we faced was adding search filters to our server. These filters were applied to different attributes and across tables, meaning we had to build complex queries. As a way to simplify the querying process, we made use of Rails’ scope functionality.

We also implemented a simple permissions system that limited user’s access to certain operations like editing and deleting data he did not own.

To ease data exchange and maintain consistency, we thought it was best to serialize our objects. For this, we used the Fast Json API serializer due to its utility and efficiency.

Discussing problems was our everyday routine

The front-end

Despite the overhaul on the website style, we were able to reutilize many components from the existing project. This was one of the many advantages in using React as our front-end framework. On the other hand, we had little to no experience in React, which meant we had to continuously learn while building our app. We have our mentors to thank for making this process as smooth and painless as possible 😊

We tried to structure our project according to the best practices we were taught. With that in mind, we used React Router to help organize our website pages and create the best user flow possible.

One of the libraries we used was Formik, an intuitive and helpful tool. It handles the behind-the-scenes state of a form, making the submission and validation of data much easier and transparent.

One of our goals was to improve the way events were scheduled and shared. This led us to the idea of letting our users create event drafts on their Meetup groups through our platform. In order to provide this solution, we needed to work with the Meetup API. Thus, it was necessary to authenticate the user using OAuth 2.0 and ask him to give our app some permissions. Only then could we send GET and POST requests under the user’s credentials.

Our requests, both to our internal server and external APIs, were made with Ajax due to its simple and clean implementation, making it the most efficient way for us to build all requests.

Throughout the summer we had to make decisions based on what we thought was best for Nestatini. Our approach was to choose options that led to the best practices, performance and reusability of code. We wanted to ensure our work was solid. Nothing comes for free, and this approach meant we had to go through a thorough, time consuming review process to avoid deploying unpolished code.

Everything considered, this has been a great hands-on experience, which made us learn new technologies and methodologies, how to tackle problems as they come up and how to join our efforts as a team (this includes the designers) to get the job done!

--

--