RICM4 2017 2018 - UltraTeam 7.1

=Project presentation=

This project is a project carried out by two teams.

The first team composed of Enzo MOLION and Léo VALETTE UltraTeamMV is in charge of creating a mobile application allowing the members of a team or a group of hikers to locate each other with different information such as walking speed, distance between users, the possibility to see if a user is in distress (e. g. if he has broken a leg), etc.

This application will use the LoRa network with ESP-32 cards, connected via Bluetooth to the team's smartphones to run.

The smartphones of the team, if they are connected to the 3G/4G network, will send through a REST API all the information accumulated during the hike to a server that our team composed of Bastien TERRIER and Hugo GROS-DAILLON will have to set up.

This server will be implemented with the JHipster application generator. It will be a web application allowing hikers to create an account and thanks to the information provided by the mobile application, to visualize the information of the current or completed hike (with the route taken during the hike, average speed, participating members, etc.).

It can also be used to visualize the position of hikers during a hike and display whether a person sent a distress signal with their smartphone. This can be useful in cases where rescue workers are trying to locate the injured person precisely.

= Team =


 * Supervisor : Didier Donsez


 * Members : Hugo GROS-DAILLON, Bastien TERRIER


 * Departement : RICM 4, Polytech Grenoble

= Progress of the project =

The project started January 15th, 2018.

Week 1 (January 15th - January 16th)

 * Indication of preferences for proposed projects.
 * Assignment of project groups according to preferences.

Week 2 (January 22th - January 28th)

 * Discovery of UltraTeam projects from previous years.
 * Unable to execute the 2016-2017 AndroidStudio UltraTeam project due to project errors and lack of documentation.
 * Discovery of jhipster thanks to the eCOM project My Races'' We have to start from this project to make our web application.
 * Requirements.

Week 3 (January 29th - February 04th)
Separation of the two UltraTeam project teams with definition of the specifications for each team.

We decide to recreate a new application with jhipster and not to restart the eCOM project. The eCOM project no longer concerns us.

Document ourselves about the structure of jhipster applications.

Week 4 (February 05th - February 11th)
Skype video conferencing with Didier Donsez to indicate our progress and ask a few questions about jhipster.

Jhipster JDL language discovery

Creation of a database for our application with the jhipster JDL language.

Week 5 (February 12th - February 18th)
Document ourselves about Swagger and the generated REST API by JHipster.

Meeting with the other team to discuss about the model of our web application and the use of the REST API on the mobile application side.

Try adding new fields to create a user with this tutorial

Look at the generator-jhipster-leaflet to add a map to our project.

Week 6 (February 26th - March 4th)
After many tests, we realized that the generator-jhipster-leaflet does not work with the last version of JHipster. We decide to add the leaflet map to our project ourselves, without going through a generator.

We also noted that the tutorial to add extra informations for a User does not work with the last version of JHipster. So we tried to resume the tutorial for the last version of JHipster.

Week 7 (March 05th - March 11th)
During this week, we successfully add a LeafLet Map in the home page (without using the generator-jhipster-leaflet).

Moreover, now we can create a new user (with extra information) and it creates a new Hiker. The hiker is linked to one user (One to One relationship).

Week 8 (March 12th - March 18th)
We requested for an issue on the git of the generator-jhipster-leaflet. The developer answered us :

"This module supports only AngularJS, not Angular or React. So it's normal it doesn't work."

we decided to implement our own generator for Angular.

This week, We documented ourselves about how generator modules work.

We also tried to implement a person's position on the map with a marker for our project.

Week 9 (March 19th - March 25th)
We finally managed to implement our own generator. It works with the last version of Jhipster and with Angular5.

Our module generates a leaflet map in a new page of a monolithic jhipster application with OpenStreetMap.

The npm page of our generator : generator-jhipster-leafletmap

The github : generator-jhipster-leafletmap

we also implemented a person's position on the map for our project.

Week 10 (March 26th - April 01st)
During this week, we had started to select information from our data base. For that, we had to understand JPA queries. In JPA, it's very efficient, we had just to understand the JPA syntax. For instance, if we want to find every Messages of an Hiker in a special Hike we have just to write "findAllBySenderAndHikeOrderByDatetime(Hiker hiker, Hike hike)". The implementation in SQL will be automatically done ( SELECT * FROM Message LEFT JOIN ....).

This first part was in the java repository. Then, we had to work in the webapp repository to access data from the webapp. Actually, it's very easy because we use our service (API).

Week 11 (April 02nd - April 08nd)
During the last week, we finalized our project (fixing some problems). We also had to write the final report, the flyer and the powerpoint. For the presentation, we have created an demo application (containing data / Messages / Hikes and Hikers (cf. targets)).