Java Spring-Boot & Core-Java senior 4 geofencing implementation

Job ID: 37180572

Budget: $10 – $200 USD

We look for Java Spring-Boog and Core-Java senior expert with in depth knowledge on how to implement a geofencing for various polygones.

You will get ongoing data into a database table, which contains positions of different devices.
This positions have to be checked and verified about being in a geofenced environment.
It will be required to implement also a unsharp data collection e.g. cloudy weather, where the position may vary and maybe sometimes out of the fence.
On leaving the geofence a remote rest api will be called along with a e-mail will be sent.

Your job will be to implement the logic for the geofencing and to propose java libraries, which will help to solve this problems.

Mandatory!!!!
You have to have a locally running docker container which runs your spring boot application during a CI test / Unit test

Milestones

Assuming following existing classes, which you have to recommend from your suggested libs and apis
- Distance (calculate/gives a distance in meters from a desired point)
- GpsPolygone (defines a arbitrary geo fence in GPS coordinates)
- GpsPosition (any position in GPS coordinate)

MS1:
Implement a service class, which calculates if a given List of GPS coordinates is in a given Polygone
The service is wrapped into interfaces (classes)
- Distance getShortestDistanceToPolygone(GpsPosition, GpsPolygone)
- List<GpsPosition> getGpsPositionsOutsidePolygone(List<GpsPosition>, GpsPolygone)
- List<GpsPosition> getGpsPositionsInsidePolygone(List<GpsPosition>, GpsPolygone)
- Distance getShortestDistanceToPolygone(GpsPosition, GpsPolygone)
- boolean isGpsPositionInsidePolygone(GpsPosition, GpsPolygone)
- implement unit tests, which run & test this code (you provide as a very first step empty JUnit methods as runners which call the interface and use the autowired services)

MS2:
- you expose the services into a REST API
=> provide a REST api definition for clarification before finally implementing it

MS3:
- you provide the openapi definition based from the code (swagger)

MS4:
- you provide the docker environment which makes it possible to test the prior exposed rest api

MS5:
- access an existing database with entities, which contain the GPS positions
- the table schema will be provided to you

MS6:
- implement the e-mail notification

the next milestones will be assigned after the prior 4 are properly done in a new award or a time based offer

MS7+:
- integrate into existing application (PHP based)
- provide authentication and authorization for specific data

Implementations:
- a Interface representing the above methods
- the implementation of the interface
- the gps positions and polygones are predefined under src/test/resources as xlsx, so it can be easily modified by non tech guys for more corner cases

NO UI for now required!
NO database required!
No REST endpoint exposing for the above named methods required! (only consuming the apis in the given links)

Your background is:
- multiple years of experience with GIS / geo spacial data in Java
- multiple years of experience with Java
- multiple years of experience with REST APIs

If you are a good fit, you are open to get more tasks about implementing solutions fully on your own (e.g. with your team)

Budget?
will not be disclosed, place your best bid to get considered

What is next?
We will share you a NDA and afterwards a paid test task.

Payment?
- you estimate in a WBS (optimistic, expected, pessimistic, where optimistic < expected < pessimistic) after getting the task
- we discuss about clearances and effort
- we mutually agree to effort
- we assign you the task after mutually agreed
- you implement & delivery
- we pay
(basically the rules of freelancer)

Closed book vs open book?
We work only on open book.
Closed book means you are unwilling to define a WBS for the work and you add only a price tag to the task.
We are sorry we will not hire you in such a case!

Deliveries?
- in our on premise git (access will be granted to you)
- full sources
- maven
- libs, need prior confirm and we prefer to use mostly latest stable versions
- JDK 17 (mostly LTS)
- your api access code working on our end
- used libs and apis are on latest stable version
- docker compose setup to run locally on your machine and (we will use it on CI/CD, if you are able to handle we place you an addition milestone for it)