How Indago Was Made — The Development Details
Hello,
Summer is almost over and so is our internship at Nest Collective. Now we gonna look back to what we did and how we did it.
What is Indago?
Indago is a web application that guides people into the tech industry by giving them the resources to learn the skills they need.
The learning process.
To develop our application we’ve used technologies that were introduced to us during our first week in the workshops given by our awesome mentors (read more about it here). Since we had little to no knowledge about these technologies, and the workshops only served as 101's and how to get started, we had to do some “homework” to learn more about good practices. Fortunately, when we had problems or doubts about something related to the implementation, our mentors were always ready to help.
The architecture.
When we first decided to develop a web app, we also had to think about the possibility of developing a mobile application. Although we didn’t had enough time to create it during our internship, we wanted to ensure that, if we wanted to develop one in the future, we could do it with minimal effort. As such, we decided that our architecture would be a server-client architecture, having a standalone RESTful API and an independent client. Now, if we want to add a mobile app, we just need to implement a mobile client that makes requests to our API.
The back end.
So, for the back end piece, we used the framework Ruby On Rails to create our API. To keep the content of the responses consistent we used ActiveModelSerializers and all the responses have a status according to the outcome of the request.
One of the mentors’ requirements was to test our code, controllers and models. To do this, we used RSpec with Faker, Factory Girl and Should Matchers. Testing our code helped prevent unexpected behaviour and made it easier to find problems during development.
The front end.
Since our application was designed to be a web platform, we used React with Redux and React Router to develop its front end. One of the first things to do was to adopt a file structure, to keep the project organised, so we separated the code into four main categories:
- actions — send the events information to the store;
- reducers — makes the changes to the store according to the action;
- components — dumb components only with layouts;
- containers — smart components with the necessary logic to populate the components.
When developing the components we followed the pattern of stateless functional components and tried to reuse them as much as possible to reduce the amount of code.
The deploy.
To host our application we decided to use two different services, Heroku to host the API and Firebase to host the client. Both of them have CLIs that make the deploy and setup very easy.
Developing Indago allowed us to discover a new world of technologies and methodologies. We are very grateful to our mentors and all the people from Nest Collective that helped us make Indago real.