Interactive-Phylogeny-Team / InteractivePhylogeny

0 stars 0 forks source link

Technologies #1

Closed erikhuck closed 3 years ago

erikhuck commented 3 years ago

Description

We need to establish the technologies that we'll use for this project. For the backend, my initial proposal is to use typescript with node.js and express. For the front ent, we can use typescript with Vue or perhaps react or angular. Git hub pages may be able to host our site. GitHub Pages may also have functionality such that it isn't necessary to set up an express app or use such a server package at all. More research needs to be done to determine this.

Acceptance Criteria

We decided whether or not we want to use typescript, the express package, Vue, or some other technologies in addition to or in place of these ones mentioned. We've made a decision on how to host our domain and to what extent git hub pages removes the need to use some of the technologies mentioned above. A web page of our hosted app is mostly empty but is available on the web.

erikhuck commented 3 years ago

Codecademy TypeScript Cheat Sheet: https://www.codecademy.com/learn/learn-typescript/modules/learn-typescript-types/cheatsheet

Codecademy Typescript Course: https://www.codecademy.com/learn/learn-typescript

jbeatty88 commented 3 years ago

I'm thinking the MERN stack is what will work best, what do you think?

I am setting up the environment now and will run a "test" for GitHub pages. I am fairly certain it will work. As for TypeScript, I know it's crazy popular right now but Tatjana and I probably won't be using it on the frontend (mainly because neither of us have experience with it) but I don't see it being an issue to have that on the backend as the frontend and backend won't share dependencies. Once I have that up an running, I am going to create a new issue for it.

erikhuck commented 3 years ago

@jbeatty88 I don't care if typescript is or isn't used on the front end. I like the idea of MERN stack. I have dabbled in mongoDB and know node libraries that make use of it easier. I'm also aware of a website that allows us to host a mongo database for free.

erikhuck commented 3 years ago

@jbeatty88 We determined previously that phylogeny.io uses a noSQL database so, following their example, perhaps we can go with MongoDB for our database. I think we need to establish more what the requirements are for our data persistence. Other options are using an SQL database or just saving, loading, and updating json files where the backend is stored. If that were the case, I imagine these json files would be stored in the same virtual machine that GitHub Pages uses to host our app, as compared to if we used MongoDB Atlas (https://cloud.mongodb.com) which would separate the data storage from where the app is stored. I should be able to figure out how to get us set up on MongoDB Atlas if we decide to do that.

erikhuck commented 3 years ago

@sarahkateorr Here are some pros and cons of using typescript before we proceed.

Cons

  1. There is extra configuration that needs to be done (I can take care of that)
  2. Every time you want to run your code you need to "transpile" your typescript code into javascript code
  3. Every typescript file gets transpiled into a corresponding javascript file, essentially doubling your code

    Pros

  4. We will probably need to learn it eventually and it'd be nice to do that sooner rather than later
  5. The corresponding java script files are automatically generated and don't need to be maintained at all. In fact, we just shouldn't touch them
  6. Type scripts enforces typing of function parameters, function return types, variable types etc. making the code more readable and maintainable. (We all know how confusing it can be to not know what the types of everything is)
sarahkateorr commented 3 years ago

@erikhuck let's go for typescript. HOWEVER, I am not the fastest learner so you will have to be patient with me. But in the meantime I can help you find articles (& etc...) to make up the time you spend coding while I am figuring it out...

jbeatty88 commented 3 years ago

Each member of the team is using WebStorm IDE (yay!)

Front End:

Back End:

Development will happen primarily on local machines.

VCS via GitHub Project Management will happen via GitHub as well (GitHub Issues and Kanban board)

Please add to this if I missed something.