Skip to content

Developer Guide

Raphael LOSSEC edited this page Oct 6, 2026 · 23 revisions

1. Introduction

Objective

The startup PlanetPulse you are working at, as a Software Developer apprentice, is specialising in ecology and environmental monitoring, the company wants to develop a web application to track various environmental indicators by country, such as CO₂ emissions.

You and your team are tasked with designing a functional prototype of this web application; implement, test and deploy it for a presentation of the product to investors.

Project Arborescence

├── README.md
├── .gitignore
├── backend/
│   ├── pom.xml
│   ├── mvnw, mvnw.cmd, .mvn/
│   └── src/
│       ├── main/
│       │   ├── java/co/simplon/planetpulse/
│       │   │   ├── PlanetPulseApplication.java           # Entry point
│       │   └── resources/
│       │       └── application.properties
│       └── test/java/co/planetpulse/                     # Same arborescence
├── frontend/
│   ├── index.html
│   ├── indicators.html                                   # 1 HTML page (MPA)
│   ├── css/
│   │   └── app.css
│   └── js/
│       ├── pages/
│       │   └── indicators-page.js            # 1 css file by page
│       ├── components/                       # Web Component
│       │   ├── app-navbar.js
│       │   └── indicators-table.js 
│       └── utils/
│           └── api.js
├── database/
└── docs/
    ├── mcd/
    └── excalidraw/                           # drafts 

Documentation

In docs and in the code : javadoc

2. Configuration

Java 25

The Web UI must be implemented in native JavaScript with an hybrid MPA/CSR approach, using Web Components and modules Web UI mandatory libraries: Bootstrap, Bootstrap Icons ans Google Fonts (latest versions) The UI is in English Backend must be implemented in Java latest LTS with Spring boot + Maven latest stable versions and any required starter to meet the needs Database is PostgreSQL 18, and must be set up using scripts

3. Getting started

  • Clone the repository
  • Install dependencies
  • Environment variables
  • Database setup
  • Run the application

4. Development workflow

  • Modeling
  • Branching strategy
  • Creating a feature
  • Commit conventions
  • Pull requests
  • Code review

Modelling

After you took an PO issue, create an new issue labelled dev, with same name suffixe by tasks. Analyze the selected po issue, and talk with PO to clarify Business rules. Once, you are confident in the business rules, create the data dictionnary. Next you can create the Merise MCD. You can work on zoning Next you can create the wireframes.

Branch strategy

Gi flow

Commit Conventions

Commit messages must follow this format:

[category] Description #<issue_number>

Categories

Category Description
frontend Frontend-related changes
backend Backend-related changes
database Database schema, queries, or migrations
scripts Scripts and automation
docs Documentation updates
test Tests and test-related changes

Examples

[docs] Add README.md #1
[backend] Add endpoint /users #12
[frontend] Add login page #8
[database] Add users table #5
[test] Add unit tests for authentication #15
[scripts] Add database setup script #7

⚠️ Include the issue number (#<issue_number>) whenever the commit is related to an issue.

Branching Workflow

Follow this workflow when developing a new feature:

  1. Create a feature branch from develop.
  2. Develop the feature on your feature branch. Commit your changes following the commit convention.
  3. Merge the feature branch into develop once the feature is complete and validated.
  4. Open a Pull Request from develop to integration to integrate the changes.

5. Coding Guidelines

  • Naming conventions
  • Code style
  • Architecture principles
  • Error handling
  • Documentation

Naming conventions

General

No Magic numbers ! Constantes : UPPER_SNAKE_CASE

Java

1 file each class, with the same name

Classes : PascalCase function/methods/variabes : camelCase

Javascript

files and directory in kebab-case function/methods/variabes : camelCase Classes : PascalCase

Architecture principles

API : RESTful principles

6 Testing

7 Database

Clone this wiki locally