Compare commits
8 Commits
3c9e6a0821
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 32fffa3fee | |||
| 922c2f8bf5 | |||
| e8043def69 | |||
| 4d30e1dd6e | |||
| 7b2a879440 | |||
| 48e121313c | |||
|
6fe34eb370
|
|||
|
bcfccd041b
|
110
cliff.toml
Normal file
110
cliff.toml
Normal file
@@ -0,0 +1,110 @@
|
||||
# git-cliff ~ default configuration file
|
||||
# https://git-cliff.org/docs/configuration
|
||||
#
|
||||
# Lines starting with "#" are comments.
|
||||
# Configuration options are organized into tables and keys.
|
||||
# See documentation for more information on available options.
|
||||
|
||||
[changelog]
|
||||
# template for the changelog header
|
||||
header = """
|
||||
# Changelog\n
|
||||
All notable changes to this project will be documented in this file.\n
|
||||
"""
|
||||
# template for the changelog body
|
||||
# https://keats.github.io/tera/docs/#introduction
|
||||
body = """
|
||||
{% if version %}\
|
||||
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
|
||||
{% else %}\
|
||||
## [unreleased]
|
||||
{% endif %}\
|
||||
{% for group, commits in commits | group_by(attribute="group") %}
|
||||
### {{ group | striptags | trim | upper_first }}
|
||||
{% for commit in commits %}
|
||||
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
|
||||
{% if commit.breaking %}[**breaking**] {% endif %}\
|
||||
{{ commit.message | upper_first }}\
|
||||
{%- for footer in commit.footers -%}
|
||||
{%- if footer.token == "Assisted-by" %} *(🤖 {{ footer.value | split(pat=" ") | first | trim }})*{%- endif -%}
|
||||
{%- endfor %}\
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
{%- set ai_models = [] -%}
|
||||
{%- for commit in commits -%}
|
||||
{%- for footer in commit.footers -%}
|
||||
{%- if footer.token == "Assisted-by" -%}
|
||||
{%- set clean_value = footer.value | split(pat=" ") | first | trim -%}
|
||||
{%- set_global ai_models = ai_models | concat(with=clean_value) -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{%- endfor -%}
|
||||
{%- if ai_models | length > 0 %}
|
||||
### 🤖 AI Assistance Repartition
|
||||
{%- for model in ai_models | unique | sort -%}
|
||||
{%- set_global count = 0 -%}
|
||||
{%- for m in ai_models -%}
|
||||
{%- if m == model -%}
|
||||
{%- set_global count = count + 1 -%}
|
||||
{%- endif -%}
|
||||
{%- endfor %}
|
||||
- **{{ model }}**: {{ count }} commit{% if count > 1 %}s{% endif %}
|
||||
{%- endfor %}
|
||||
{% endif %}\n
|
||||
"""
|
||||
# template for the changelog footer
|
||||
footer = """
|
||||
<!-- generated by git-cliff -->
|
||||
"""
|
||||
# remove the leading and trailing s
|
||||
trim = true
|
||||
# postprocessors
|
||||
postprocessors = [
|
||||
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
|
||||
]
|
||||
# render body even when there are no releases to process
|
||||
# render_always = true
|
||||
# output file path
|
||||
# output = "test.md"
|
||||
|
||||
[git]
|
||||
# parse the commits based on https://www.conventionalcommits.org
|
||||
conventional_commits = true
|
||||
# filter out the commits that are not conventional
|
||||
filter_unconventional = true
|
||||
# process each line of a commit as an individual commit
|
||||
split_commits = false
|
||||
# regex for preprocessing the commit messages
|
||||
commit_preprocessors = [
|
||||
# Replace issue numbers
|
||||
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
|
||||
# Check spelling of the commit with https://github.com/crate-ci/typos
|
||||
# If the spelling is incorrect, it will be automatically fixed.
|
||||
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
|
||||
]
|
||||
# regex for parsing and grouping commits
|
||||
commit_parsers = [
|
||||
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
|
||||
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
|
||||
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
|
||||
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
|
||||
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
|
||||
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
|
||||
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
|
||||
{ message = "^chore\\(release\\): prepare for", skip = true },
|
||||
{ message = "^chore: update CHANGELOG.md", skip = true },
|
||||
{ message = "^chore\\(deps.*\\)", skip = true },
|
||||
{ message = "^chore\\(pr\\)", skip = true },
|
||||
{ message = "^chore\\(pull\\)", skip = true },
|
||||
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
|
||||
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
|
||||
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
|
||||
{ message = ".*", group = "<!-- 10 -->💼 Other" },
|
||||
]
|
||||
# filter out the commits that are not matched by commit parsers
|
||||
filter_commits = false
|
||||
# sort the tags topologically
|
||||
topo_order = false
|
||||
# sort the commits inside sections by oldest/newest order
|
||||
sort_commits = "oldest"
|
||||
102
db/CHANGELOG.md
Normal file
102
db/CHANGELOG.md
Normal file
@@ -0,0 +1,102 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Add changelogs
|
||||
|
||||
## [db-gateway-v1.0.0] - 2026-06-04
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(db)* Add influx in db stack
|
||||
- *(db)* Add traefik config example with actual server
|
||||
- *(db)* Add rabittmq as mqtt stack
|
||||
- *(db)* Add influx gateway from previous project
|
||||
- *(db)* Add mqtt gateway from previous project
|
||||
- *(db)* Merge datapoint and message
|
||||
- *(db)* Add SubscribeTyped function and refactor DataPoint structure
|
||||
- *(db)* Add initial main implementation
|
||||
- *(db)* Add rest gateway
|
||||
- *(db)* Add GET current value endpoint
|
||||
- *(db)* Add GET history endpoint
|
||||
- *(db)* Add mapping *(🤖 Junie:gemini-3-flash)*
|
||||
- *(db)* Add swagger doc *(🤖 Junie:gemini-3-flash)*
|
||||
- *(db)* Add parameter for time window in history endpoint
|
||||
- *(db)* Add basic auth
|
||||
- *(db)* Add deploiement stack
|
||||
- *(db)* Add node tag for influx
|
||||
- *(db)* Remove CO2PPM data over 1'000'000'000
|
||||
- *(db)* Add battery field
|
||||
- *(db)* Add battery REST endpoint *(🤖 Junie:claude-sonnet-4.6)*
|
||||
- *(db)* Get mapping dynamically from file *(🤖 Junie:claude-sonnet-4.6)*
|
||||
- *(db)* Add endpoint to export influx data to csv *(🤖 Junie:claude-sonnet-4.6)*
|
||||
- *(server)* Add traefik entry for ui dashboard
|
||||
- *(db)* Add co2 watchdog on each room *(🤖 Junie:gemini-3-flash)*
|
||||
- *(db)* Add co2-status endpoint in REST API *(🤖 Junie:gemini-3-flash)*
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(db)* Add missing entrypoint for influx explorer *(🤖 Gemini:gemini-3.1-pro)*
|
||||
- *(db)* Add missing hostname for influx access in traefik
|
||||
- *(db)* Wrong mqtt port
|
||||
- *(db)* Typo in certResolver
|
||||
- *(db)* Fail if now defaut user / password for mqtt
|
||||
- *(db)* Allow gRPC proxy in traefik *(🤖 Gemini:gemini-3.1-pro)*
|
||||
- *(db)* Proper api url instead of using swagger doc url
|
||||
- *(db)* CORS request *(🤖 Gemini:gemini-3.1-pro)*
|
||||
- *(db)* Url for api start with https
|
||||
- *(db)* Get rooms from mapping file
|
||||
- *(db)* Set time interval for influx limitations
|
||||
- *(db)* Set higher file limit for influx limitations
|
||||
- *(db)* Remove authorization for battery status endpoint
|
||||
- *(db)* Window -> window_open
|
||||
- *(db)* Push data with partial mapping
|
||||
- *(db)* Filter random value
|
||||
- *(db)* Mqtt hostname to keep internal config identique in case of rebuild
|
||||
- *(db)* Add the room in the returned json
|
||||
- *(db)* Return time in RFC3339 to avoid breakchange *(🤖 Junie:claude-opus-4.8)*
|
||||
- *(db)* Return window tag in room status
|
||||
- *(db)* Return only high co2 room for co2-status endpoint
|
||||
- *(db)* Return error directly
|
||||
|
||||
### 🚜 Refactor
|
||||
|
||||
- *(db)* Move package
|
||||
- *(db)* Unify env getters
|
||||
- *(db)* Split campus and room mapping error detection
|
||||
- *(db)* Map room and node on REST API
|
||||
- *(db)* Add flag to run without MQTT part
|
||||
- *(db)* Adapt SQL query for 5 min average
|
||||
- *(db)* Round averages in SQL queries
|
||||
- *(db)* Using moving average for room history *(🤖 Junie:gemini-3-flash)*
|
||||
- *(db)* Change order for history
|
||||
- *(db)* Add constante for max QOS
|
||||
- *(db)* Add constante for defaultTimeout
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- *(db)* Add deployement documentation
|
||||
- *(db)* Fix typo in doc
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Init
|
||||
- *(db)* Typo and respect go guidelines
|
||||
- *(db)* Get InfluxDB token by secrets *(🤖 Gemini:gemini-3-flash)*
|
||||
- *(db)* Update critical dependancy
|
||||
- *(db)* Add pre-commit for swagger documentation
|
||||
- *(db)* Add local gitignore
|
||||
- *(db)* Set 30min before offline for battery endpoint
|
||||
|
||||
### 🤖 AI Assistance Repartition
|
||||
- **Gemini:gemini-3-flash**: 1 commit
|
||||
- **Gemini:gemini-3.1-pro**: 3 commits
|
||||
- **Junie:claude-opus-4.8**: 1 commit
|
||||
- **Junie:claude-sonnet-4.6**: 3 commits
|
||||
- **Junie:gemini-3-flash**: 5 commits
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
BIN
doc_resources/nodes/hts221.pdf
Normal file
BIN
doc_resources/nodes/hts221.pdf
Normal file
Binary file not shown.
BIN
doc_resources/nodes/lps22hb-1.pdf
Normal file
BIN
doc_resources/nodes/lps22hb-1.pdf
Normal file
Binary file not shown.
BIN
doc_resources/nodes/lps22hb.pdf
Normal file
BIN
doc_resources/nodes/lps22hb.pdf
Normal file
Binary file not shown.
59
gateway/CHANGELOG.md
Normal file
59
gateway/CHANGELOG.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Remove useless gitkeep file
|
||||
- Add changelogs
|
||||
|
||||
## [gateway-v1.0.0] - 2026-06-04
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- Add BLE-to-MQTT gateway implementation
|
||||
- *(gateway)* Add configuration file
|
||||
- *(gateway)* Implement BLE-to-MQTT gateway *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(gateway)* Add MQTTS support with TLS and authentication *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(gateway)* Add battery level support (key 0x05)
|
||||
- *(gateway)* Add deduplication and continuous BLE scan *(🤖 Claude:claude-sonnet-4-6)*
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(gateway)* Fix architecture diagram code block in README
|
||||
- *(gateway)* Fix architecture diagram code block in README
|
||||
- *(gateway)* Fix payload decoding endianness and skip preamble Switch temperature and CO2 decoding from little-endian to big-endian to match the Zephyr firmware implementation. Skip the 2-byte company id preamble (0xffff) at the start of the manufacturer data payload.
|
||||
- *(gateway)* Replace UUID filter with manufacturer data preamble filter
|
||||
- *(gateway)* Replace UUID filter with manufacturer data preamble filter
|
||||
- *(gateway)* Fix BLE filtering and MQTT connection validation
|
||||
- *(gateway)* Use exact payload size filter and improve robustness
|
||||
- *(gateway)* Revert CO2 range check and add MQTT auto-reconnect
|
||||
|
||||
### 🚜 Refactor
|
||||
|
||||
- *(gateway)* Switch from GATT connection to passive BLE advertising *(🤖 Claude:claude-sonnet-4-6)*
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- Add gateway README
|
||||
- Add overnight test results and measurements graph
|
||||
- Add overnight test results section to README
|
||||
- *(gateway)* Add README with architecture and MQTT interface *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(gateway)* Document MQTT_PASSWORD environment variable in README
|
||||
- *(gateway)* Add deployment checklist, systemd service and update README
|
||||
- *(gateway)* Update README with battery field, security fixes and warnings
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Init
|
||||
- *(gateway)* Add Python dependencies file
|
||||
- *(gateway)* Exclude config.json from repo, add example config
|
||||
- *(gateway)* Use placeholder values in config.example.json
|
||||
- *(gateway)* Update config.example.json with TLS and auth fields
|
||||
|
||||
### 🤖 AI Assistance Repartition
|
||||
- **Claude:claude-sonnet-4-6**: 5 commits
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
62
nodes/CHANGELOG.md
Normal file
62
nodes/CHANGELOG.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Add changelogs
|
||||
|
||||
## [project-submission] - 2026-06-04
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Remove useless gitkeep file
|
||||
- Remove zephyr sample file
|
||||
- Remove release file from repo
|
||||
|
||||
## [nodes-v1.1.0] - 2026-06-04
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(nodes)* Adding management of read error on each values, hence
|
||||
- *(nodes)* Add the battery level in the ble frame
|
||||
- *(nodes)* Adding battery percent as new key/value in the BLE frame
|
||||
- *(nodes)* Using an explicit thread, as it may cause the huge battery usage
|
||||
- *(nodes)* Setting the fastest BLE advertising frequency to 1 minute instead of 2
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(nodes)* Changing incorrect comment
|
||||
- *(nodes)* Using MAC address as BT_ADDR
|
||||
- *(nodes)* Reduce battery consumption
|
||||
|
||||
### 📚 Documentation
|
||||
|
||||
- *(nodes)* Adding comments in the nodes code
|
||||
|
||||
## [nodes-v1.0.0] - 2026-06-04
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(nodes)* WIP supervisor first implementation
|
||||
- *(nodes)* Adding thermometer and hygrometer
|
||||
- *(nodes)* WIP adding first implementation for BLE advertising.
|
||||
- *(nodes)* Adding co2_level retrieval
|
||||
- *(nodes)* Adding window status reading
|
||||
- *(nodes)* Adding nodes firmware v1.0
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(nodes)* Adjusting broadcasted data to fit definition
|
||||
- *(nodes)* Fixing switch device tree and wrong ordering of ble values
|
||||
- *(nodes)* Properly fetching data from temp/hygro sensor
|
||||
- *(nodes)* Co2 level fetched as desibed in the documentation
|
||||
- *(nodes)* Changing window status sensor to have unequipped nodes return 'window is closed' status
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Init
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
BIN
nodes/measures/ppk2-20260525T193804.png
Normal file
BIN
nodes/measures/ppk2-20260525T193804.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 59 KiB |
BIN
nodes/measures/ppk2-20260525T193809.ppk2
Normal file
BIN
nodes/measures/ppk2-20260525T193809.ppk2
Normal file
Binary file not shown.
32
notification_service/CHANGELOG.md
Normal file
32
notification_service/CHANGELOG.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(notification)* Spring Boot Teams notification service (#19)
|
||||
- *(notification)* Add mock mode for local testing without backend (#19 #21)
|
||||
- *(notification-service)* Replace Teams with Telegram notifications *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(notification-service)* Add Dockerfile, actuator health and alert deduplication *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(notification-service)* Adapt to Go backend /api/v1/rooms/high-co2 endpoint
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(notification)* Remove non-existent starter-scheduling dep, target Java 17
|
||||
|
||||
### 🧪 Testing
|
||||
|
||||
- *(notification-service)* Add unit tests and clean up Co2Level *(🤖 Claude:claude-sonnet-4-6)*
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- *(notification-service)* Add CI/CD pipeline with Docker, SSH deploy and API credentials
|
||||
- *(notification-service)* Add SAST, dependency scan and DAST security gates
|
||||
- Add changelogs
|
||||
|
||||
### 🤖 AI Assistance Repartition
|
||||
- **Claude:claude-sonnet-4-6**: 3 commits
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
94
report/self-assessment/remi.typ
Normal file
94
report/self-assessment/remi.typ
Normal file
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// Description: Main document to stitch everything together
|
||||
//
|
||||
#import "/metadata.typ": *
|
||||
#import "/tail/bibliography.typ": *
|
||||
#import "/tail/glossary.typ": *
|
||||
#import "/resources/mse-title-page.typ": *
|
||||
#show:make-glossary
|
||||
#register-glossary(entry-list)
|
||||
#set text(region: "gb")
|
||||
|
||||
//-------------------------------------
|
||||
// Template config
|
||||
//
|
||||
#show: thesis.with(
|
||||
option: option + (type: "final"),
|
||||
doc: doc,
|
||||
school: school,
|
||||
date: date,
|
||||
tableof: (toc: false),
|
||||
logos: logos,
|
||||
custom-title-page: mse-title-page(
|
||||
title: [Self-assessment],
|
||||
subtitle: [Team: Pleeeeein deeeee eeeeeeeeeeeeeeeeee],
|
||||
authors: (
|
||||
(name: "Rémi Heredero"),
|
||||
),
|
||||
date: date,
|
||||
),
|
||||
)
|
||||
|
||||
// #show "e": "ee"
|
||||
|
||||
//-------------------------------------
|
||||
// Content
|
||||
//
|
||||
|
||||
/*
|
||||
Un rapport d'auto-évaluation doit dans le grandes lignes :
|
||||
- Reprendre les points qui avaient été annoncé lors de la définition du projet, est-ce que les objectifs et buts de formations fixés en début de projets on été atteints.
|
||||
- Evoquer votre role dans l'équipe, les compétences que vous avez pu mettre à disposition, et celles qui vous ont fait défaut.
|
||||
- Lister les gains en compétences que vous ressentez après ce projet.
|
||||
*/
|
||||
|
||||
#show heading.where(level: 1): (it) => {
|
||||
set text(size: huge)
|
||||
set block(above: 1.2em, below: 1.0em)
|
||||
if it.numbering != none {
|
||||
let num = numbering(it.numbering, ..counter(heading).at(it.location()))
|
||||
let prefix = num + h(0.5em) + text(code-border)[|] + h(0.5em)
|
||||
unshift-prefix(prefix, it.body)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
#show heading.where(level: 2): (it) => {
|
||||
if it.numbering != none {
|
||||
let num = numbering(it.numbering, ..counter(heading).at(it.location()))
|
||||
unshift-prefix(num + h(0.8em), it.body)
|
||||
} else {
|
||||
it
|
||||
}
|
||||
}
|
||||
|
||||
= Introduction
|
||||
|
||||
This report is a self-assessment provided alongside the team report. It is meant to be a personal reflection on the project, and should be read after the team report.
|
||||
|
||||
I want to be upfront, as hinted at in the team report, that this project ran in parallel with a similar hobby project I was doing with some friends. At least, similar regarding my specific tasks.
|
||||
// However, the skills I was developing there directly benefited my work here, and vice versa.
|
||||
|
||||
= Role in the Team
|
||||
|
||||
My primary role was to set up the server, and develop the APIs for the database and cloud data management.
|
||||
|
||||
It also became apparent early on that I'd naturally take on a broader technical role. We decided at the beginning to establish clear Git rules to work efficiently. I was responsible for writing these "Guidelines & Unified Laws for Advanced Gitflow" (GULAG) and making sure everyone respected them. It quickly turned out that I also had to do most of the code reviews. This was quite time-consuming but very formative, especially since we all came into this project with different backgrounds and coding approaches.
|
||||
|
||||
Beyond doing most of the reviews, I also ended up helping my teammates with debugging and code design. I became the team's troubleshooter.
|
||||
|
||||
I was basically the person picking up all the tasks we forgot to plan for at the beginning. I didn't mind this role at all; I like helping out and sharing my knowledge.
|
||||
|
||||
= Objective & skills review
|
||||
|
||||
My initial objective was to #quote(strike[Solve Maxwell's equations])
|
||||
#par(text(size: 0.8em, emph[
|
||||
A data infrastructure is automated, deployed both in productive and development environment. The database is automatically configured and populated by external MeteoSwiss data.
|
||||
The student didn't experiment automatic deploy /configuration and multi-environment.
|
||||
]))
|
||||
|
||||
This objective was partially completed and shifted during the project. I did successfully deploy a server infrastructure with a database and a broker, including the corresponding APIs to push and retrieve data. However, the MeteoSwiss data integration was abandoned because it fell out of scope after one student left the group.
|
||||
The database is indeed automatically configured. I didn't focus on setting up automatic deployment for my part. Another student ended up doing automatic deployment on the project.
|
||||
|
||||
I still learned a lot on this project overall. It wasn't really what I expected technically, but I gained much more experience in technical project management and figuring out how to work with people from very different backgrounds and horizons. I became much more versatile during this project, which, I think, is essential for an engineer. We should all be able to do a bit of everything and communicate with anyone.
|
||||
44
ui/CHANGELOG.md
Normal file
44
ui/CHANGELOG.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [unreleased]
|
||||
|
||||
### 🚀 Features
|
||||
|
||||
- *(ui)* Initialize Angular 18 dashboard project
|
||||
- *(ui)* Create organized folder structure for application
|
||||
- *(ui)* Configure routing with lazy-loaded components
|
||||
- *(ci)* Add Docker build, push and SSH deploy pipeline *(🤖 Claude:claude-sonnet-4-6)*
|
||||
- *(ui)* Implement interactive room map with REST services and unit tests
|
||||
- *(ui)* Interactive room map, detail panel redesign and polling
|
||||
- *(ui)* Dynamic room polling, secure credentials and CO2 levels
|
||||
|
||||
### 🐛 Bug Fixes
|
||||
|
||||
- *(ui)* Add environment.prod.ts for production builds
|
||||
- *(ui)* Address code review feedback
|
||||
- *(ui)* Remove hardcoded credentials and make CO2 spec config-driven
|
||||
|
||||
### 🚜 Refactor
|
||||
|
||||
- *(ui)* Simplify room names and remove dead code
|
||||
|
||||
### 🎨 Styling
|
||||
|
||||
- *(ui)* Apply Prettier formatting
|
||||
- *(ui)* Apply Prettier formatting *(🤖 Claude:claude-sonnet-4-6)*
|
||||
|
||||
### ⚙️ Miscellaneous Tasks
|
||||
|
||||
- Init
|
||||
- *(ui)* Setup GitHub Actions CI/CD pipeline
|
||||
- *(ui)* Remove commented-out gitignore line for environment.prod.ts
|
||||
- *(ui)* Add plan.svg floor plan asset
|
||||
- Remove useless gitkeep file
|
||||
- Add changelogs
|
||||
|
||||
### 🤖 AI Assistance Repartition
|
||||
- **Claude:claude-sonnet-4-6**: 2 commits
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
Reference in New Issue
Block a user