Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

JavaScript

Juan García
Juan García
10,723 Points

Planning development of an application, looking for advice.

Hello all,

My team and I are beginning to plan the development of an application and I could use some advice deciding which would be the right tools for the job.

Some background: the main purpose of the team is investigating and determining the health of our customers' usage and implementation of a well known API. To that end, we have several tools at our disposal, but the process is quite inefficient, as the data is spread between several data sources and we always need to check several dashboards. Since other teams rely on our investigations, we need to make the process more efficient.

Our goal is creating a single dashboard that will gather all the necessary information, so our team and others are able to determine a customer's health and usage of the API at a glance. It would translate the data into a diagnostic (color flags, charts, FYI's...)

To this end, we have been provided with a web service that returns a JSON object with all the necessary data. Since we are not entirely sure this web service will be properly maintained, we are also considering using some tables we have access to as a data source.

The app will be developed in JavaScript. As I said, I'm trying to decide which tools and frameworks we would require: Node.js, Angular, Express, MongoDB,... We would prefer to keep it as a full JS application (but we are open to suggestions).

I know there are different ways to do things, I'm just looking for opinions and guidance ; )

If I have forgotten any details let me know and I'll complete my question!

Steven Parker
Steven Parker
231,271 Points

What do the members of the team think? Don't any of them have specific preferences about how to proceed?

I keep thinking about how I might feel if my manager decided to poll the general public for opinions about how I should accomplish my current assignment.

Michael Liendo
Michael Liendo
15,326 Points

By what means are you able to obtain the information that is spread out across different dashboards? RSS, CSV, JSON, Scraping?

3 Answers

Ran ShemTov
Ran ShemTov
14,148 Points

Lets take a moment to dicuss Front end frameworks, in a nutshell ofc.

AngularJS uses 2 way data binding to store user input. Besides that it uses a rendering technique that renders the entire html. It's also written inside the HTML (some of it). You can see it as "javascript inside html". Angular2 uses a similar method, only this time it's built with compenents which are injected to one another.

React takes a different approach. It has a virtual dom, the HTML written inside the Javascript, and it uses components and render only what needs to be rendered at the same time, by comparing its virtual DOM, to the DOM you see on the screen. And then ofc, there's the "Icing on the cake". ReactJS unlike many other frontend frameworks, uses uni-directional data binding. Meaning the data in your application flows only in one direction. There's no button that by clicking on it you send a request to an API, for example. In my opinion it makes an application easier to reason about, where you know exactly where this piece of data came from, and how to trace back to the source of data flowing into your application.

Pointing out a personal opinion: I prefer working with components. I prefer bit size chunks of HTML that are injected when they are required. I also like when my HTML is not loaded with directives and so on, so I mainly like to work with Angular2 and React

Michael Liendo
Michael Liendo
15,326 Points

It's like asking if you should buy an iphone or android. If you're building a full javascript-based site then the tools are simply a matter of what your team is most comfortable with. Node and express will most likely be your back-end language, if you don't need a schema then plain mongoDB works, otherwise, mongoose adds structure with a schema-like design while keeping everything stored in JSON (BSON). As for Angular 2 or React, that just comes down to preference. Both are capable. Going back to your database question, that also depends on how you're going to host your data (firebase, AWS, Heroku, company server/db).

In short, your question is opinionated. You've defined the language, You've defined the format, now it's simply a matter of preference.

Ran ShemTov
Ran ShemTov
14,148 Points

NodeJS is asynchonous, meaning you will be able to get data from several API in an unordered manner. If you wish to be a main-data-source getting its data from many other sources. This can come in handy. MongoDB can be good if your deta veries from one source to another. Lets say, if one of your costumers have 3-4 fields of info, but another has 6, because your data sources could tell more about your second costumer, than they could about your first.

AngularJS/React/Angular2 are front end frameworks, which means the decisions regarding these, requires further thinking. which is about how to display the data and selecting the right approach. I'll expand on these in a few hours (I got to go now)