Datebook — agenda clienti e appuntamenti
Gli appuntamenti dello studio su un calendario, con clienti e incassi a portata di mano.
spazio dati «studio-pro» — il collante della suite: sul tuo dispositivo, multi-utente con un invito (link o QR), cifrato end-to-end.
oppure aprila come app unica
Si integra con: Hourglass — stesso spazio dati.
Cosa registra
- Ora (es. 15:30)
- Prestazione / motivo
- Importo (€)
- Nome e cognome
- Telefono
- Note (preferenze, storico...)
Composta da 3 micro app
Un compito ciascuna, sugli stessi dati: ogni micro app legge e scrive lo spazio dati condiviso «studio-pro» (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.
Le micro app condivise sono il ponte tra le soluzioni: gli stessi dati alimentano anche Hourglass.
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.
- Usala subito. Premi «Usa questa app»: si apre subito nel tuo browser, già pronta, con i dati salvati solo sul tuo dispositivo.
- I tuoi dati restano tuoi. Tutto è memorizzato in locale sul dispositivo, separato per ogni app: niente account, niente server, niente da configurare.
- Rendila tua. Il testo qui sotto è l'app per intero: copialo, cambia campi, viste e parole, e le modifiche diventano subito interattive.
- 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
# 📅 Datebook
Gli appuntamenti dello studio su un calendario, con clienti e incassi a portata di mano.
:::::page{title="Agenda" icon="📅"}
## Il mese in un colpo d'occhio
::::form{path="appuntamenti" id="fap"}
::input{form="fap" field="data" type="date" required="true" legend="Giorno"}
::input{form="fap" field="ora" placeholder="Ora (es. 15:30)" required="true"}
::select-from{from="clienti" form="fap" field="cliente" label="nome" value="nome"}
::input{form="fap" field="prestazione" placeholder="Prestazione / motivo"}
::input{form="fap" field="importo" type="number" placeholder="Importo (€)"}
::add-form{form="fap" path="appuntamenti" label="Fissa appuntamento"}
::::
:::calendar{path="appuntamenti" field="data"}
{ora} {cliente}
:::
:::::
:::::page{title="Clienti" icon="👥"}
## Anagrafica
::::form{path="clienti" id="fcl"}
::input{form="fcl" field="nome" placeholder="Nome e cognome" required="true"}
::input{form="fcl" field="telefono" placeholder="Telefono"}
::input{form="fcl" field="note" placeholder="Note (preferenze, storico...)"}
::add-form{form="fcl" path="clienti" label="Aggiungi cliente"}
::::
:::table{path="clienti" headers="Cliente,Telefono,Note" deletable="true" editform="fcl"}
**{nome}** | {telefono} | {note}
:::
:::::
:::::page{title="Storico e incassi" icon="💶"}
## Tutti gli appuntamenti
:::sort{path="appuntamenti" field="data" order="desc" as="table" headers="Giorno,Ora,Cliente,Prestazione,Importo" deletable="true"}
{data} | {ora} | {cliente} | {prestazione} | € {importo}
:::
**Appuntamenti:** :count[nap]{path="appuntamenti"} —
**Incassato/atteso: € :sum[inc]{path="appuntamenti" field="importo"}**
## Per cliente
:::group-by{path="appuntamenti" field="cliente" as="list"}
{data} {ora} — {prestazione} (€ {importo})
:::
:::::