Edit me

Summary

Based on the Spring Boot framework, the core component is built using Maven and OpenJDK. It relies on a PostgreSQL database and stores files on its filesystem.

Sub-components in detail

Each functional object (budget, campaign, idea, …) has its package in src/main/java folder. In each one of them we create the following structure :

  • a model : the object which will be manipulated through the API
  • an entity : it inherits from the model, it is the object stored in DB
  • a repository : the interface to interact with the DB. Defined methods respects the JPA query lookup strategies
  • a controller : entrypoints of each API endpoint
  • a service : the main logic of each operation. Can be called from the controller or other components

Data Model

Data Model

All database structure (tables, foreign keys, functions, …) are provided using Liquibase. Each change in the structure is described in a changeset and all changesets of a version are regrouped in a changelog file inside the src/main/resources/db/changelog folder.

Tests

Automated tests are written ìn src/test using Cucumber.

Features are destribed in the features folder. Each scenario of a feature is composed of functional steps which needs to be translated in Java to perform the corresponding step. These translations are written in a steps package inside the src/test/java folder.

Finally, when API calls are required, they are implemented in HTTP clients inside a component package.