Git Product home page Git Product logo

welcome's Introduction

Test technique WTTJ

Installation

  • Installer les dépendances : mix deps.get
  • Vérifier les credentials pour Postgres : config/dev.exs
  • Initialiser la BD : mix ecto.setup. (Des données sont déjà insérées dans les seeds !)
  • Installer les dépendances pour les assets : cd assets && npm install
  • Démarrer le serveur : mix phx.server

Organisation de l'application

Modélisation backend

L'application a été modélisée au sein d'un contexte ATS avec les schémas suivants :

  • JobOffer : une offre d'emploi (non persisté car on n'a qu'un seul board ici).
  • Applicant : un candidat.
  • Application : une candidature précise d'un Applicant à une JobOffer (== les cartes dans le board).
  • Stage : étape dans le pipeline de recrutement (== les colonnes du board)

Ordonnancement des cartes

Chaque Application est persistée en base avec une référence de son Stage parent ainsi que son positionnement dans ce Stage.

Pour le réordonnancement de ces Application en base, j'ai introduit un module Position qui essaye d'être le plus générique possible et qui pourra s'appliquer à d'autres schémas plus tard (par exemple pour réordonner les colonnes).

Drag and Drop

J'ai utilisé la bibliothèque react-beautiful-dnd d'Atlassian qui permet d'avoir un haut niveau d'abstraction pour tout ce qui est drag and drop.

Synchronisation client/serveur

Je n'ai pas écrit d'API REST dans le cadre de ce test car toutes les données nécessaires peuvent transiter via la connexion websocket déjà ouverte.

Nous avons les messages suivants :

  • get_job_offer : demande les données initiales au chargement de l'appli React.
  • update_application : met à jour la candidature (dans le cadre de ce test seulement la position)
  • update_application_position : message broadcasté à tous les clients connectés quand la position d'une carte a changé. A noter que le client qui est à l'origine du déplacement de carte ne refait pas de réordonnancement.

Les payloads des messages sont encodés en JSON en implémentant le protocole Jason.Encoder pour chacun des schémas.

L'authentification et l'autorisation de l'utilisateur n'a pas été nécessaire dans le cadre de ce test.

Je reste disponible pour en discuter.

Pierre

welcome's People

Contributors

hurty avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.