A ideia deste projeto é construir um eco sistema de dados e informações referente as minhas atividades diárias; utilizando as mais diversas ferramentas e aplicações diferentes. Idealmente quero utilizar frameworks e linguagens diferentes;
Dado o contexto algumas escolhas não faram sentido do ponto de vista de uma arquitetura ideal, porém o objetivo maior aqui é aprender.
Foi definido as seguintes separações:
- domínio: Um domínio pode ter vários sub-domínios, cada domínio deve delimitar sua área conforme os dados.
- sub-domínio: É uma especificação dentro do domínio, onde deve limitar a algum dado em específico.
| Domínio | Sub domínio | Description |
|---|---|---|
| health | sleep | Responsável por mapear o sono |
| health | exercise | Trata dos exercícios físicos |
| health | nutrition | Nutrição, alimentos líquidos e sólidos |
| view | view | Aplicações pra visualização de dados |
| data | data | Ferramentas que lida com dados, como o mysql |
| health | supplementation | Suplementos como creatina, whey, etc |
| health | body-measurements | Medidas de membros e peso |
| financial | ----- | ----- |
| automation | tracking | Rastreamento de pessoas |
| orchestration | subscription | Lida com a orquestração de eventos |
| vehicle | ----- | ----- |
| infrastructure | servers | ----- |
| infrastructure | network | ----- |
| infrastructure | github | Responsável por deixar os repositórios organizados |
- Uma aplicação pode lidar com mais de um sub domínio.
- ----- significa que ainda não foi completamente mapeado e não tem aplicação que lide com isso.
| Componente | Domínio | Sub domínio | Description |
|---|---|---|---|
| BodyTrack | health | sleep | --- |
| NutriTrack | health | nutrition | --- |
| life-exercises | health | exercise | Atualmente registra as idas na academia |
| assistant-link | health | exercise | Legado que cria eventos a partir de request http do HA |
| Strava | health | exercise | Usado para mapear minha corridas e pedaladas |
| strava-map | health | exercise | Script que coleta minha atividades no strava e gera um json das rotas para o grafana |
| EventSync | orchestration | --- | Orquestra os eventos entre os protocolos MQTT e AMQP |
| Mosquitto | orchestration | --- | Broker MQTT para comunicação com o Home Assistant |
| RabbitMQ | orchestration | --- | Ferramenta usada para fila de eventos, mais em : eventos |
| Orchestrator-Subscription | orchestration | subscription | Ela faz a orquestração dos eventos, criando e deletando filas. |
| Grafana | view | --- | Ferramenta usada para visualização dos dados em forma de gráficos |
| MySQL | data | --- | Banco de dados relacional |
| Redis | data | --- | Banco de dados chave valor usado pelos serviços |
| Json store | data | --- | Um repositório git que age como armazenamento de json que é usado para visualização no grafana |
| cron-backup | data | --- | Realiza o backup do banco mysql |
| rclone | data, automation | --- | Copia os backups locais para a nuvem |
| home assistant | automation | --- | Usado para automações |
| home assistant app mobile | automation | --- | App mobile do HA |
| Action schedule | automation | --- | Actions no github que são disparadas por schedule e sobe alguma task na infra local |
| coredns | infrastructure | network | Servidor DNS interno |
| swag | infrastructure | network | Proxy reverso |
| Cloudflare Tunnel | infrastructure | network | Usado para expor aplicações na internet |
| glances | infrastructure | --- | Monitoramento linux |
| portainer | infrastructure | --- | Monitoramento docker |
| Repo inspector | infrastructure | github | Defini padrões/regras que o repo deve seguir, e faz uma checagem para ver se esta seguindo |
| Google Drive | data | --- | Armazenamento de backups |
| Application | Language | Framework | Others |
|---|---|---|---|
| BodyTrack | Kotlin | Spring Boot | gradle |
| EventSync | C# | .NET | |
| NutriTrack | Java | Quarkus | gradle |
| life-exercises | Kotlin | ||
| assistant-link | Python | Spring Boot | gradle, Testcontainers |
| Orchestrator-Subscription | Go | ||
| Repo inspector | Python | uv |
Para ver a evolução acesse: diagrama/out_pdf
- Updated on: 2025-05-30 | Updated by: Igor Alves
- Created on: 2024-10-29 | Created by: Igor Alves


