Git Product home page Git Product logo

ip-locator's Introduction

IP Locator

IP Locator est une application web qui permet de localiser une adresse IP. Elle est construite avec JavaScript et utilise plusieurs dépendances clés pour fonctionner.

Technologies utilisées

  • JavaScript : Langage de programmation principal.
  • Express : Framework pour construire l'API.
  • Mongoose : Outil pour interagir avec MongoDB.
  • Swagger UI : Utilisé pour documenter l'API.
  • Dotenv : Utilisé pour gérer les variables d'environnement.

Installation

  1. Clonez ce dépôt sur votre machine locale.
  2. Naviguez jusqu'au répertoire du projet et exécutez npm install pour installer les dépendances.
  3. Créez un fichier .env à la racine du projet et ajoutez-y vos variables d'environnement (par exemple, les informations de connexion à la base de données MongoDB).
  4. Exécutez npm run dev pour démarrer le serveur de développement.

Utilisation

Une fois le serveur démarré, vous pouvez accéder à l'API à l'adresse http://localhost:8080. La documentation de l'API est disponible à http://localhost:8080/api-docs.

Licence

Ce projet est sous licence ISC. Voir le fichier LICENSE pour plus d'informations.

ip-locator's People

Contributors

imjxlian avatar todonik avatar

Watchers

 avatar

ip-locator's Issues

Créer les routes du WebService

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir appeler plusieurs routes du système.

  • Solution
    Implémenter les routes avec les différents verbes HTTP.

  • Critères d’acceptation
    En cas d'erreur, le serveur renvoi un message d'erreur cohérent et verbeux.

Changer le comportement de la recherche IP du front

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir accéder aux informations d'une IP et la voir sur la carte sans forcement que celle-ci soit enregistrée dans ma BDD.

Solution
Dans le front, faire un appel axios vers l'API ip-api.com

Critères d’acceptation
L'utilisateur peut voir son point sur la carte et les infos de l'IP dans un cadre à droite de l'écran.

Lier la base de données au back

  • Fonctionnel
    En tant que développeur, je souhaite lier la base de données mongo à mon backend.

  • Solution
    Utiliser le package mongodb pour se connecter à la base (MongoDB ATLAS).

  • Critères d’acceptation
    Lors de l'exécution avec Node, le serveur se connecte bien à la bd.

Ajouter un endpoint pour la recherche simple

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir connaître la localisation d'une IP sans pour autant l'enregistrer dans ma base de données.

Solution
Dans le back, ajouter un endpoint /ip/search qui retourne simplement la réponse de l'api ip-api.com

Critères d’acceptation
L'utilisateur peut voir son point sur la carte et les infos de l'IP dans un cadre à droite de l'écran.

Consommer le WebService dans la vue

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir avoir des données dynamiques sur le site.

  • Solution
    Implémenter la consommation du web service.

  • Critères d’acceptation
    L'utilisateur navigue sans encombre et les données sont dynamiques.

Afficher l'historique des points recherchés

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir voir tous les points précédemment recherchés.

  • Solution
    Utiliser le GET du web service.

  • Critères d’acceptation
    L'utilisateur peut voir ses anciennes recherches.

Faire le schéma de la base de données

  • Fonctionnel
    En tant que développeur, je souhaite mettre en place le schéma de la base de données.

  • Solution
    Utiliser les commandes mongo pour mettre en place nos tables, propriétés.

  • Critères d’acceptation
    La base de données est correctement configurée et atteignable.

Afficher la carte

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir afficher l'adresse postale en fonction d'une IP.

  • Solution
    Implémenter OpenStreetMap sur le front en Vue.

  • Critères d’acceptation
    Après avoir entré l'adresse IP en question, OpenStreetMap redirige vers l'adresse en question.

Récupérer les adresses par nom

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir afficher les détails d'une adresse de pirate via son nom.

  • Solution
    Implémenter le verbe GET sur /adresse/{nom}.

  • Critères d’acceptation
    Lors du GET, le serveur renvoie une 200 et les données en question.

Ajouter plusieurs IP visuellement via CSV

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir ajouter plusieurs adresses IP dans la base de manière visuelle en uploadant un fichier CSV.

Solution
Mettre en place un formulaire d'upload de fichier CSV.

Critères d’acceptation
A la validation du formulaire, si le fichier est correctement rédigé, les IP valides, alors celles-ci sont enregistrées en BD.

Afficher le détail et la position des IP enregistrées

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir voir le détails des IP enregistrées et leur position sur la carte lorsque je clique sur l'une d'entre elles dans ma liste à gauche de l'écran.

Solution
Au clic, récupérer les informations de l'objet dans la liste et hydrater le composant de détail + hydrater le plugin OpenStreetMap avec les infos long/lat.

Critères d’acceptation
Le point est correctement placée sur la carte et les détails sont affichés dans le volet de droite.

Modifier une adresse

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir modifier une adresse de pirate.

  • Solution
    Implémenter le verbe PUT sur /adresse.

  • Critères d’acceptation
    Lors du PUT, le serveur renvoie une 200 et les données sont bien modifiées en BD.

Améliorer le endpoint search

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir rechercher une adresse IP dans le client.

Solution
Améliorer la gestion d'erreur du backend en implémentant la recherche par IP dans le /search. Si dispo en BD, on renvoi l'objet sauvegardé, sinon on fait la requête vers l'API ip-api.com.

Critères d’acceptation
A la validation du formulaire, l'IP est bien affichée sur le client avec ses infos et la possibilité de la modifier.

Supprimer une adresse

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir supprimer une adresse de pirate.

  • Solution
    Implémenter le verbe DELETE sur /adresse.

  • Critères d’acceptation
    Lors du DELETE, le serveur renvoie une 200 et les données sont bien supprimées en BD.

Importer des données via CSV

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir importer des adresses de pirate en masse.

  • Solution
    Implémenter le verbe POST sur /adresse/csv

  • Critères d’acceptation
    Lors du POST, le serveur renvoie une 200 et les données sont bien enregistrées en BD.

Afficher l'ensemble des IP enregistrées

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir voir sur la gauche de l'application, l'ensemble des IP enregistrées en BDD.

Solution
Programmer un tableau sur la gauche qui utilise le GET sur /ip en vue d'obtenir toutes les IPs existantes.

Critères d’acceptation
Toutes les IP sont affichées.

Ajouter du contrôle d'erreur pour les actions CRUD

  • Fonctionnel
    En tant qu’utilisateur, je souhaite être informé en cas d'erreur sur le système.

  • Solution
    Implémenter des try and catch sur les différents verbes.

  • Critères d’acceptation
    En cas d'erreur, le serveur renvoi un message d'erreur cohérent et verbeux.

Mettre à jour une IP visuellement

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir mettre à jour une adresse IP dans la base de manière visuelle.

Solution
Mettre en place un formulaire de mise à jour d'IP.

Critères d’acceptation
A la validation du formulaire, l'IP est bien mise à jour en BD.

Ajouter une IP visuellement

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir ajouter une adresse IP dans la base de manière visuelle.

Solution
Mettre en place un formulaire de création d'IP.

Critères d’acceptation
A la validation du formulaire, l'IP est bien enregistrée en BD (si nom pas déjà existant).

Intégrer swagger ui

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir accéder à mon webservice facilement depuis mon navigateur.

  • Solution
    Mettre en place swagger-ui sur le projet.

  • Critères d’acceptation
    Le /swagger-ui est atteignable et permet l'envoi de requêtes HTTP.

Ajouter le README

  • Fonctionnel
    En tant qu’utilisateur, je souhaite accéder à une documentation succincte me présentant quelque peu l'architecture du projet.

  • Solution
    Implémenter le readme.

  • Critères d’acceptation
    Le readme est valide et affiché sur la page du repo.

Créer une adresse

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir créer une adresse de pirate.

  • Solution
    Implémenter le verbe POST sur /adresse.

  • Critères d’acceptation
    Lors du PUT, le serveur renvoie une 200 et les données sont bien enregistrées en BD.

Récupérer les adresses

  • Fonctionnel
    En tant qu’utilisateur, je souhaite pouvoir afficher toutes les adresses de pirate.

  • Solution
    Implémenter le verbe GET sur /adresse.

  • Critères d’acceptation
    Lors du GET, le serveur renvoie une 200 et les données.

Supprimer une IP par nom visuellement

Fonctionnel
En tant qu’utilisateur, je souhaite pouvoir supprimer une adresse IP dans la base via son nom et de manière visuelle.

Solution
Mettre en place un formulaire de suppression d'IP via nom.

Critères d’acceptation
A la validation du formulaire, l'IP est bien supprimée en BD (si nom existant).

Créer l'architecture du client

  • Fonctionnel
    En tant que développeur, je souhaite implémenter l'architecture de base de mon repo front.

  • Solution
    Utiliser les commandes d'initialisation du repo.

  • Critères d’acceptation
    Le projet Vue compile et s'exécute sans problèmes.

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.