Skip to content

Weekly Meetings

Bernardo Costa edited this page Apr 27, 2019 · 16 revisions

Table of Contents

Meeting 1, 8th of March

Topics

Proposal Structure

  • Introduction reformatting
  • The project structure should be called System Structure and the image should be updated.
  • How the timeline should be initiated
  • Generalize the project's idea instead of specifying functionalities (at this time).

Meeting 2, 15th of March

Topics

Route characterization

  • Route categories:
    • System defined.
    • Attributed to routes by users.
    • Helps to filter searched routes.
  • Route predefined duration time:
    • 1 hour, half a day, full day.
  • How to present the route to the client.

Route Storage

  • Search online for (DBMSs) optimized solutions related to geo locations.

Route Searching

  • Use user input to filter route searching:
    • reduces sample size of returned routes.

Project Production

  • Start by making a walking skeleton (minimalistic version of the system).

Chosen Technologies

  • Confirmed except DBMS if a better solution (instead of PostgreSQL) is found.

Meeting 3, 22nd of March

Topics

Hibernate and JPA

Too much work for little gain, SQL queries are not as controllable as required which is a disadvantage. JDBI suggested as an alternative.

ER Diagram

To be changed. A switch from a 'pure' relational database to hybrid database should occur. PostgreSQL contains documental features: PostgreSQL JSON.

Hypermedia API

Not necessary to implement it, a simpler form of media should suffice due to the private nature of the API.

Github Issues

Use at will but with caution, maximum 10 per week. Less than that desired.

ToDo

  • Study JDBI and implement the server in a minimalistic to test.
  • Improve the ER Diagram with the new considerations.
  • Think of a media form to export the data from the server. Consider always input and output model entities, never expose an entity as is.

Meeting 4, 29th of March

Topics

Offline Mode

Most of the application will not require an internet connection. The routes should be loaded when there is a connection available but must be allowed to be used when offline. The routes should be saved in a persistent fashion (Room). Online mode is only required when searching or saving routes for later usage.

Jdbi

The connection should be handled manually to avoid creation and destruction per database request. Ideally one request to the API requires one connection to handle all the database requests.

Route Creation

Dynamic creation

A user should be able to create a route just by performing it, without having to indicate route points by hand.

Photographs on a route

The user should be able to take pictures while on a route and those pictures can appear when checking the route. Saving performed routes necessary?

Points of interest

A route can have points of interest added by hand by the user.

Progress Report

Should be structured in the following way:

  • Report of the work already made with links to a detailed version presenting results of the work.
  • Analysis of the initial planning. Compare the completed goals with the planned ones.
  • Reasons for the deviation from the planned goals if any.
  • Replan the goals.
  • Risks of the new plan.

API

To facilitate the creation of the API, a standardized structure will be used, in this case, Siren.

Meeting 5, 5th of April

  • Database
    • Category
    • Json
    • Serial identifiers
  • Authentication
  • Communication between Client and Server
  • Current development stage

Database

Category

Should be an entity in the database, with an N to N relation with the table Routes. No subtypes required.

Json

Can be string before inserting into the database, provides more control over the exact json.

Serial identifiers

Can be serial primary keys.

Authentication

Google authentication (id token). A table with authentications can exist in the database with a 1 to 1 relation with a user.

Communication between client and server

Retrofit can be used, but type returned from the API(siren or not) should be considered.

Current development stage

Minimalistic versions of search needs to be implemented. Report of the work done.

Meeting 6, 12th of April

Next meeting is on the 18th of April at 11.00 a.m.

  • Service
    • Exception handling
    • Command object
  • Shared input model
  • HTTPS and HTTP

Service

  • Exception Handling
  • Command object

Exception handling

The handling of exceptions can remain in a controller advice. The exception must be decoupled from the error response. The problem+json type of response should be used in some cases but might not be necessary in others: An internal server error (500) might not need to expose details of the error that occurred, in that case a less detailed response should be built.

Command object

When a controller receives an input object (in the request's body) this object should be converted to a different type that is then passed to a service being called by the controller. The service must be responsible for building the domain object from this command object. It can be considered a DTO. Sometimes an input object will not have all the necessary information to build a domain object and as such, this intermediate command should provide enough information to make the conversion appropriately.

Shared input and output model

The input model of the server and output model of the client application are equal. They could be shared, but with care. Considering factors like deployment of a new API version without the update of the output model of the application (non synchronized updates of the application and API).

HTTPS and HTTP

To be considered at a later phase of the project.

Meeting 7, 18th of April

Next meeting is on the 26th of April at 4.00 p.m.

  • Screens (Search, Route Creation, User Profile, Live tracking)
  • person searching and profile viewing
  • should post return created object?
  • should created routes be in /person/routes or /routes/{personId}
  • exception fields
  • mappers / converters

Meeting 8, 26th of April

  • Progress Report
    • Project Structure
    • Progress
    • Objectives