Files
MSE-SoftwEng/README.md
2025-06-24 21:26:09 +02:00

107 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h1 align="center">
<br>
Software Engineering Project - Team Raclette
<br>
</h1>
This monorepo hosts all parts of the project for the Software Engineering course.
# Table of contents
<p align="center">
<a href="#project-flow">Project flow</a>
<a href="#architecture">Architecture</a>
<a href="#Authors">Authors</a>
<a href="#licence">Licence</a>
</p>
# Project flow
[(Back to top)](#table-of-contents)
For our project, we choose a flow near to a Trunk-based flow.
The Main idea was to keep shot-branch directly merged to the main branch.
We diverge from the Trunk-based flow in the sense that we don't have a release branch. Release would be directly a
tag in the main as we decide to have only atomic commits in the main branch. We don't create a new release on each
merge,
but all merges are releasable.
We also have an additional constraint. We need a semi-linear history on the main branch. This means that we don't
have several branches in parallel in the history.
We need to rebase our own branch before merging it to the main branch.
The purpose of this constraint is to have a clean history and to be able to use the `git bisect` command to find
bugs easily.
# Architecture
[(Back to top)](#table-of-contents)
![2-Container-Server.svg](docs/2-Container-Server.svg)
As required by the course, we have dockerized all parts of the project.
But we deploy all our components on a real server (*.mse.kb28.ch). This server auto-fetches new docker image with the
watchtower service to auto-deploy new versions of the components.
In addition to using our own server, we also push all the time data with other connected sensors.
So, as we have a lot of data, we don't display the 100 last measurements as requested, but the last 24h of
measurements (This design choice was validated by Mr. S. Fringeli).
## Web application
[(Back to top)](#table-of-contents)
The web application is deployed on the server at the following URL: [app.mse.kb28.ch](https://app.mse.kb28.ch). <br>
The most interesting measurement is under Rémi -> Terrasse -> Shed.
More details in [web-app/README.md](web-app/README.md).
## Gateway MQTT / Rest API / influxDB
[(Back to top)](#table-of-contents)
The MQTT part is accessible via the following URL: `mqtt.mse.kb28.ch` on the port `1883`.
The Rest API is accessible via the following URL: [rest.mse.kb28.ch](https://rest.mse.kb28.ch/) with swagger
documentation on the following URL: [rest.mse.kb28.ch/swagger/index.html](https://rest.mse.kb28.ch/swagger/index.html).
## Influx DB
[(Back to top)](#table-of-contents)
The InfluxDB is deployed on the server at the following URL: [influxdb.mse.kb28.ch](http://influx.mse.kb28.ch:8086/).
<br>
Credentials are available [on request](mailto:remi@heredero.ch).
## Pico Sensor
[(Back to top)](#table-of-contents)
Details in [pico-sensor/README.md](pico-sensor/README.md).
## Test environment
[(Back to top)](#table-of-contents)
A partial test environment is deployed on the server. <br>
Web app has a second container with the same code but made a GET request on `/test` instead of `/raclette` for the
development environment. The gateway include a route to `/test` that return the 100 last measurement instead of the
last 24h. Has everything else is still a development environment, the database is the same for the test and
development environment.
# Authors
[(Back to top)](#table-of-contents)
* [Sylvan Arnold](https://github.com/Sylvan22) - Mainly pico-sensor part
* [Rémi Heredero](https://github.com/Klagarge) - Mainly gateway and docker part
* [Yann Sierro](https://github.com/Fastium) - Mainly web-app part
# Licence
[(Back to top)](#table-of-contents)
* This repository is under GPL 3.0
* Some parts can be under other licences, they are specified in the README of the concerned part