Skip to content
Yulibeth Rivero edited this page Jun 10, 2024 · 54 revisions

ITA Challenges

ITA Challenges és una aplicació de la plataforma educativa IT Academy, dissenyada perquè els alumnes accedeixin a reptes de programació, participin en activitats educatives i segueixin el seu progrés, amb la finalitat de millorar les seves habilitats de programació. Desenvolupada pels Desenvolupadors Junior de la IT Academy, l'aplicació ofereix una interfície intuïtiva i eficient.

Aquesta eina està dirigida a desenvolupadors i altres professionals de la comunitat IT Academy, incloent-hi alumnes que busquen perfeccionar les seves habilitats i mentors que proporcionen orientació i feedback. ITA Challenges fomenta l'aprenentatge continu i el desenvolupament tècnic a través de reptes estructurats per nivells de dificultat i tipus de llenguatge.


Aspectes Funcionals

Per a més detalls sobre els aspectes funcionals de l'aplicació, estan detallats en el següent enllaç: Disseny a Figma.

1. Llistat de Reptes

A la pàgina de reptes, l'usuari pot accedir al llistat de reptes. Aquests es poden filtrar al menú lateral per:

  • Llenguatge: Javascript, Java, Python i PHP.
  • Dificultat: Fàcil, Mitjà i Difícil.
  • Progrés: No començats, Manca completar i Completats.

Aquest llistat també es pot ordenar per popularitat o data.

2. Detall i Opcions d'un repte

En fer clic a un repte, s'accedeix al detall d'aquest. Hi ha quatre pestanyes:

  • Detalls: Es mostra l'explicació del repte. Quan s'ha fet login es mostra un editor de codi i mitjançant un botó de verificació es mostra o s'amaga el text explicatiu.
  • Solucions: Es mostren solucions d'altres usuaris a aquest mateix repte.
  • Recursos: S'ofereixen recursos que poden ajudar a la resolució del repte.
  • Relacionat: Es mostren altres reptes amb característiques similars.

Per poder enviar la solució del repte s'ha de fer login o registrar-se si no s'ha fet prèviament.

Per poder veure les solucions del repte d'altres participants l'usuari ha d'haver enviat prèviament la solució d'aquest repte.

Instal·lació

Els procediments per dur a terme la instal·lació estan detallats en el següent enllaç.

Configuració

Entre les principals eines i dependències utilitzades es troben les següents:

Per a més detalls sobre les dependències específiques i les seves versions, consulta l'arxiu package.json del projecte.

Directrius de Codificació

Les directrius de codificació per al projecte ITA Challenges es troben detallades a l'arxiu GUIDELINES_CA.md.

Arquitectura 'ITA Challenges'

En la gràfica següent es detallen els elements que conformen l'aplicació:

Arquitectura-'ITA-Challenges

Components

Aquest projecte es basa en una arquitectura de components. Cada component té la seva pròpia responsabilitat i pot ser reutilitzat en diferents parts del projecte. Es descriuen els més rellevants per al projecte.

StarterComponent

El StarterComponent es troba al fitxer starter.component.ts. És responsable de la funcionalitat inicial de l'aplicació i maneja la lògica principal de la pàgina d'inici.

Funcionalitat

El StarterComponent s'encarrega de la gestió dels reptes (challenges) a l'aplicació. Aquest component interactua amb el servei StarterService per obtenir els reptes i manejar la paginació dels mateixos.

A més, aquest component també maneja la funcionalitat de filtrat dels reptes. Els filtres es manegen a través del component FiltersModalComponent, que s'obre quan s'invoca el mètode openModal().

ChallengeComponent

El component ChallengeComponent es troba al fitxer challenge.component.ts. S'encarrega de manejar i presentar els detalls d'un repte específic a l'aplicació.

Funcionalitat

El propòsit principal del ChallengeComponent és carregar i mostrar els detalls d'un repte específic. Això inclou informació com el títol del repte, la data de creació, el nivell de dificultat, els detalls del repte, les solucions proposades i els llenguatges de programació permesos per al repte.

ChallengeCardComponent

El component ChallengeCardComponent es troba al fitxer challenge-card.component.ts. S'utilitza per mostrar la informació d'un repte en una targeta.

Funcionalitat

El component ChallengeCardComponent s'utilitza per mostrar la informació d'un repte en una targeta en el lloc de l'aplicació on es necessiti. Cada targeta conté el títol del repte, els llenguatges de programació associats, la data de creació, el nivell de dificultat i la popularitat del repte. En fer clic en una targeta, l'usuari és redirigit a la pàgina de detalls del repte corresponent.

ChallengeInfoComponent

El component ChallengeInfoComponent es troba al fitxer challenge-info.component.ts. Aquest component és part del mòdul de reptes i s'utilitza per mostrar informació detallada sobre un repte específic.

Funcionalitat

El component ChallengeInfoComponent s'utilitza per mostrar informació detallada sobre un repte específic. Això inclou la descripció del repte, exemples, notes, popularitat, llenguatges de programació permesos i solucions. A més, permet a l'usuari enviar una solució al repte i veure els reptes relacionats.

components-ita-challenges

Diagrama Layout 'ITA Challenges'

A continuació es representa l'estructura i disposició dels components clau de l'aplicació:

new_layout_IT_challenge3

Serveis

En la gràfica següent es detallen els serveis que conformen l'aplicació:

services-ita-challenges2

Interceptors

JWT Interceptor

JwtInterceptor implementa la interfície HttpInterceptor d'Angular. S'utilitza per interceptar i potencialment modificar les sol·licituds HTTP a l'aplicació. Obté el token d'autenticació de TokenService i verifica si la URL de la sol·licitud es correspon amb la definida a l'entorn. Si ambdues condicions es compleixen, envia la sol·licitud sense modificacions.

Helpers

Cookie Encryption Helper

S'utilitza l'API Web Crypto per encriptar i desencriptar cookies. Quan s'executa, genera una clau secreta utilitzant la contrasenya proporcionada a l'entorn i la guarda. Els seus mètodes són els següents:

  • generateSecretKey: Genera una clau secreta utilitzant l'algoritme PBKDF2 i la retorna. La clau es deriva de la contrasenya proporcionada, utilitzant un hash SHA-256 i 1000 iteracions.

  • setSecureCookie: Encripta el valor de la cookie utilitzant la clau secreta i l'algoritme AES-GCM, i després guarda la cookie encriptada. El valor encriptat es converteix en una cadena utilitzant la funció btoa abans de ser emmagatzemat.

  • getSecureCookie: Obtè la cookie encriptada, la desencripta utilitzant la clau secreta i l'algoritme AES-GCM, i després retorna el valor original de la cookie.

API's consumides

  • ITA-Challenges

    Manté el repositori de reptes de programació i permet als usuaris aportar i validar solucions als reptes proposats.

  • ITA-Wiki

    Proporciona recursos de programació en diferents llenguatges.

  • ITA-SSO

    Gestió d'usuaris.

Testing

Per obtenir detalls sobre les proves del projecte ITA Challenges, es pot revisar el fitxer README.md.

Deployment

Troba instruccions detallades sobre com desplegar l'aplicació ITA Challenges al fitxer README.md.

FAQs

Explora respostes a preguntes freqüents sobre el projecte ITA Challenges al fitxer README.md.