CatalogoVita personale ›Benessere

Vigor — salute e allenamento

Misure, farmaci e allenamenti in un unico diario — coi dati che non escono dal tuo dispositivo.

⚖️ Misure💊 Farmaci🏃 Allenamenti

spazio dati «vigor» — il collante della suite: sul tuo dispositivo, multi-utente con un invito (link o QR), cifrato end-to-end.

▶ Apri la suite (3 micro-app)

oppure aprila come app unica

salutepesofarmaciallenamentocalendariobenessere

Cosa registra

  • Peso (kg)
  • Pressione (es. 120/80)
  • Farmaco / integratore
  • Dose (es. 1 compressa)
  • Orario (es. mattina e sera)
  • Attività...
  • Durata (minuti)

Composta da 3 micro app

Un compito ciascuna, sugli stessi dati: ogni micro app legge e scrive lo spazio dati condiviso «vigor» (col tuo consenso, chiesto alla prima apertura). Tutto resta sul tuo dispositivo — e con un solo invito l'intera suite diventa multi-utente, cifrata end-to-end.

Come funziona

Questa è un'app Reactive: un semplice documento di testo che il browser trasforma in un'app funzionante — moduli, dati dal vivo, tabelle, statistiche e persino grafici, senza installare né configurare nulla.

  1. Usala subito. Premi «Usa questa app»: si apre subito nel tuo browser, già pronta, con i dati salvati solo sul tuo dispositivo.
  2. I tuoi dati restano tuoi. Tutto è memorizzato in locale sul dispositivo, separato per ogni app: niente account, niente server, niente da configurare.
  3. Rendila tua. Il testo qui sotto è l'app per intero: copialo, cambia campi, viste e parole, e le modifiche diventano subito interattive.
  4. Condividila come file. Un'app è un semplice file: salvalo, esportalo o condividilo con un link; e con la collaborazione cifrata più persone modificano gli stessi dati in tempo reale.
Il testo dell'app
# 💪 Vigor

Misure, farmaci e allenamenti in un unico diario — coi dati che non escono dal tuo dispositivo.

:::::page{title="Misure" icon="⚖️"}
## Il diario delle misure

::::form{path="misure" id="fmi"}
::input{form="fmi" field="data" type="date" required="true" legend="Giorno"}
::input{form="fmi" field="peso" type="number" placeholder="Peso (kg)" required="true"}
::input{form="fmi" field="pressione" placeholder="Pressione (es. 120/80)"}
::add-form{form="fmi" path="misure" label="Registra"}
::::

:::table{path="misure" headers="Giorno,Peso,Pressione" deletable="true" editform="fmi"}
{data} | {peso} kg | {pressione}
:::

:::python{data="misure" packages="matplotlib"}
```
import matplotlib.pyplot as plt

rows = data.get("misure", [])
serie = sorted(
    ((r.get("data", ""), float(r.get("peso", 0) or 0)) for r in rows if r.get("peso")),
    key=lambda x: x[0],
)
if len(serie) < 2:
    print("Registra almeno due pesate per vedere l'andamento.")
else:
    fig, ax = plt.subplots(figsize=(6, 3))
    ax.plot([d for d, _ in serie], [p for _, p in serie], marker="o")
    ax.set_ylabel("kg")
    ax.set_title("Andamento del peso")
    plt.xticks(rotation=30)
    plt.tight_layout()
```
:::
:::::

:::::page{title="Farmaci" icon="💊"}
## Cosa prendere e quando

::::form{path="farmaci" id="ffa"}
::input{form="ffa" field="nome" placeholder="Farmaco / integratore" required="true"}
::input{form="ffa" field="dose" placeholder="Dose (es. 1 compressa)"}
::input{form="ffa" field="orario" placeholder="Orario (es. mattina e sera)"}
::add-form{form="ffa" path="farmaci" label="Aggiungi"}
::::

:::list{path="farmaci" deletable="true" editform="ffa"}
**{nome}** — {dose} · {orario}
:::
:::::

:::::page{title="Allenamenti" icon="🏃"}
## Il piano sul calendario

::::form{path="allenamenti" id="fal"}
::input{form="fal" field="data" type="date" required="true" legend="Giorno"}
:::select{form="fal" field="tipo" placeholder="Attività..."}
- Corsa
- Palestra
- Bici
- Nuoto
- Camminata
:::
::input{form="fal" field="durata" type="number" placeholder="Durata (minuti)"}
::add-form{form="fal" path="allenamenti" label="Pianifica"}
::::

:::calendar{path="allenamenti" field="data"}
{tipo} {durata}′
:::

**Sessioni:** :count[nal]{path="allenamenti"} —
**Minuti totali:** :sum[mal]{path="allenamenti" field="durata"}
:::::