Arquisoft / wiq_en3b

The Know and Win Application of the wiq_en3b Team. Play at https://kawgame.xyz
https://arquisoft.github.io/wiq_en3b/
6 stars 0 forks source link

Research technologies for client side #4

Closed IyanRobles closed 7 months ago

IyanRobles commented 7 months ago

Look for possible technologies for the client (Didier & Mateo)

didierrc commented 7 months ago

The following markdown file gives an overview of the "desired" (in my opinion) frontend technology that we should use for the project. This will be discussed in the next lab session.

What is React.js???

Basically, React is a libray for web and native UI. Its main feature is to use Components that we can reuse all over our interfaces. Ex: Each "Tweet" structure that we see on X. We just need to change its content.

Why Use it?

Next.js

We have seen the beauty of React but is still a library (bunch of classes and interfaces that we can use in our applications). If we want to build entire apps with React, it recommend to us using one of its frameworks -> Next.js

The only "bad" thing brought to you by ChatGPT

Learning Curve: There may be a learning curve for developers who are new to React. But we are not "regular" devs :) (although 3rd course of SW Engineering is pretty hard :( - always a tradeoff...)

Other Frameworks

  1. Angular
    • Two-Way Data Binding: Simplifies handling user input and application state changes.
    • Strong MVC Architecture: Provides a structured and organized framework for building large-scale applications.
    • Dependency Injection: Facilitates modular and testable code.

Overall, I think Angular facilitates the architectural part since it follows the MVC pattern but I think we can discuss the usage of MicroServices.

An architectural pattern that structures an application as a collection of small, independent, and loosely coupled services. Each service is designed to perform a specific business capability and can be developed, deployed, and scaled independently.

Also, nowadays it is not very recommended it by many people.

  1. Vue.js
    • Approachable: Vue.js is known for its simplicity and easy integration, making it beginner-friendly.
    • Flexibility: Allows developers to incrementally adopt Vue.js into existing projects.
    • Performance: Vue.js has good performance with a small footprint.

Well, I have been researching and Vue is another interesting option to take into account. It has a lot of approval (this may not mean anything) and has good documentation. Although, as far as I have seen, React (or its Framework Next.js) is more used than Vue by big companies like Meta, Amazon, Github, etc.

Links:

Others

The following is not a Final decision, it is just an overview of WHAT technologies we could choose to build our Application. I have used ChatGPT for that. Although it cannot give us the RIGHT answer, it is very helpful when trying to decide/have an opinion about it.

The choice of technology for a web application depends on various factors such as the project requirements, team expertise, scalability needs, and future plans. Considering the context of designing a web application based on the Spanish TV show "Saber y Ganar" and later adapting it for mobile devices, a combination of frontend technologies and frameworks is often a suitable approach.

Here's a suggested technology stack:

  1. Frontend (Web):
  • React.js: React is a popular and widely adopted JavaScript library for building >user interfaces. Its component-based architecture is beneficial for creating >reusable and modular UI elements. React also has a large community and a rich >ecosystem of libraries and tools.

  • HTML, CSS, and JavaScript: These are fundamental technologies for web development. HTML for structuring content, CSS for styling, and JavaScript for adding interactivity. They work seamlessly with React to create a robust frontend.

  1. Frontend (Mobile):

React Native: Since the plan is to later adapt the application for mobile devices, React Native can be a great choice. React Native allows you to build mobile applications using React and JavaScript, sharing a significant portion of the codebase between the web and mobile versions.

  1. Backend:

Node.js with Express: Node.js is a server-side JavaScript runtime, and Express is a minimal and flexible Node.js web application framework. They are well-suited for building scalable and lightweight backend services, providing a good match for the frontend technologies.

  1. Database:

MongoDB: MongoDB is a NoSQL database that works well with Node.js and is suitable for scenarios where a flexible schema and quick iteration are important. It can store the diverse data associated with the TV show application.

  1. API Communication:

RESTful API or GraphQL: Depending on the application's requirements, you can choose between a RESTful API or GraphQL for communication between the frontend and backend. GraphQL provides more flexibility in data retrieval.

  1. Containerization and Orchestration (Optional, for scalability):

Docker and Kubernetes: If scalability and deployment efficiency are crucial, containerizing the application using Docker and orchestrating the containers with Kubernetes can be considered.

Veneiro commented 7 months ago

Frameworks and their Potential Challenges

React.js

Angular

Vue.js

Express.js