Giter VIP home page Giter VIP logo

geocachingjds's Introduction

GeocachingJDS

Back Office épreuve Geocaching Jeux De Sophia

[Work In Progress]

Requirements

Build

git clone https://github.com/MariusMez/GeocachingJDS.git
cd GeocachingJDS && npm install

DEV - Run with Docker

First copy your dump folder named 'geocaching_jds_prd' (wich contain bsons and .gz files) inside the folder dump_mongodb. The database will be automatically populated.

Install with : docker-compose run --rm parse npm install when you update package.json you need to re-run this command.

Then just go with: docker-compose up -d --build

The website is running at http://localhost:1337

The parse dashboard at http://localhost:4040

PRODUCTION - Run with PM2

  • We recommend using PM2 from http://pm2.keymetrics.io
  • Edit file ecosystem.json and change settings accordingly to your installation (contact me for the missing file, or read the PM2 documentation)
  • Run pm2 start ecosystem.json —watch

Monitor

  • You can use pm2 monit / pm2 ls / pm2 stop all / pm2 delete all / pm2 start all / ...
  • View logs: pm2 logs
  • Clearing logs: pm2 flush

Cleaning database files

Connect to Mongo cli : mongo then choose your db with: show dbs then use db_name and connect with db.auth('user', 'password');

First delete olds files: db.fs.files.remove({"uploadDate": {$lt : ISODate("2018-06-06T20:32:13.743Z")}});

Or delete big files: db.fs.files.remove({"length": {$gt : 3000000}}); > 3 Mo

Then in a mongo shell:

function removeChunkIfNoOwner(chunk){
  //Look for the parent file
  var parentCount = db.fs.files.find({'_id' : chunk.files_id}).count();

  if (parentCount === 0 ){
     db.fs.chunks.remove({'_id': chunk._id});
     print("Removing chunk " + chunk._id);
  }
}

Select your database and remove orphaned chunks: db.fs.chunks.find().forEach(removeChunkIfNoOwner);

Backuping Database

mongodump --username 'user' --password 'password' --db geocaching_jds_prd --gzip

Contribution

Pull requests or other contributions are welcome

License

MIT

Contact

Marius (@mezphotos)

geocachingjds's People

Contributors

dependabot[bot] avatar flapouille avatar mariusmez avatar nassimbounouas avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

geocachingjds's Issues

Bug in /found

Rafraichir plusieurs fois la page semble créer plein de logs found

Retrieve/Drop/Discover un TB sur page de foundIt

Quand on loggue, ajouter dans le formulaire la possibilité de :

  • Dropper un TB en saisissant son n°
  • Récupérer un TB en saisissant son n°

optionnel : Discover mais ça peut compliquer les choses et provoquer des erreurs des utilisateurs, je suis pas spécialement pour

bug tb

  • autoriser les drop meme si on a plus de 4 objets
  • bloquer le grab si on a 3 objets
  • flag newCache uniquement sur le premier log

Gérer les cas tordus de Drop/Grab TB

// TODO : gérer le cas ou le TB est présent dans une cache
// Ajouter l'option dans le select : Récupérer dans la cache : nom de la cache
// Gérer les cas d'erreur Grab depuis une autre cache que celui dans lequel il est affecté dans la BDD

Page de profil d'un TB

Lister les champs public

Les caches trouvées, les tb trouvés

Une carte des déplacement idéalement

Mise à dispo d'un fichier GPX

Suggestion de Tontonlou : mettre à dispo un fichier GPX des caches

Alternativement, regarder aussi les listes Gmaps ou autre, l'idée étant de simplifier l'usage en facilitant la saisie des coordonnées dans les applications GPS

Permettre le log d'une cache sans au préalable devoir register un TB

Important pour pas bloquer les gens.

Réflexion en cours : pré-charger la table Géocacheur avec les inscrits pour minimiser le nombre de personnes concernées

Avantage : cela permettra aussi de fiabiliser le choix de l'email qui devra être identique à celui utilisé par les participants sur le site des jeux de sophia.

Création du TB

Déclarer son tb. ca donne un code unique de participant + un code pour le tb

Nom du TB (visible à tous):
Pseudo du propriétaire (visible à tous) :
Email du propriétaire (privé) :
Description (visible à tous) :

Code unique TB (visible à tous):
Code unique propriétaire (privé) :

Add Docker Image

Objectif : simplifier l'onboarding d'un nouveau contributeur développeur sur le projet

Intégrer une mini bdd, le mongodb server, pm2, nodejs, ...

Upload des photos qui fonctionne (très) mal

Environ 1 photo sur 3 n'est pas uploadée.

La taille trop grosse issue du smartphone et un réseau mobile trop faible (free sur Sophia en edge) ne permet visiblement pas d'uploader dans le temps imparti la photo, la transaction est sauvegardée en base mais sans la pièce jointe.

Quelques pistes de résolution:

  • Regarder les différents timeout sur le serveur (nginx, config parse, ...)
  • Voir pour changer le formulaire d'upload et redimensionner l'image coté smartphone avant l'upload
  • Permettre un load d'image asynchrone avec une interface de rattrapage et un id de transaction envoyé par email si pas d'upload détecté

Ajout bouton GRAB/DROP sur la page de profil du TB

Après discussion avec les utilisateurs, nombreux sont ceux qui captent pas bien à sophia (et donc certains pensent à prendre le QR en photo, mais pas tous)

Aussi je pense que le risque est grand que certains prennent des TB sans shooter le QRCode pour le Grab et se contente du Drop ailleurs (ce qui posera problème)

Remettre le bouton comme c'était avant va pe éviter ça
@flapouille ton avis ?

Conformité GDPR

  • A minima préciser une politique de confidentialité sur une page accessible depuis le Footer

  • Mentionner l'usage fait des données et de l'email saisi

Faire une liste de mission

En plus d'une mission à renseigner par l'owner, nous pouvons proposer une liste de missions pré-établies qui permettrons de comptabiliser les scores plus simplement.

Cette liste pourrait être présentée sous forme de cases à cocher par le propriétaire dans le profil/ page de création du TB.

Les photos devront nous permettre de valider la bonne réussite des missions (cela restera subjectif, mais tjr plus facile que coder un système d'attribution automatique des points)

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.