Hourglass — ore e parcella
Le ore lavorate diventano parcella da sole: registra, controlla, stampa.
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: Datebook — stesso spazio dati.
Cosa registra
- Attività svolta
- Ore (es. 1.5)
- Tariffa oraria (€)
- Cliente
- Riferimento / email
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 Datebook.
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
# ⏳ Hourglass
Le ore lavorate diventano parcella da sole: registra, controlla, stampa.
:::::page{title="Registra" icon="⏱️"}
## Le ore di oggi
::::form{path="voci" id="fvo"}
::input{form="fvo" field="data" type="date" required="true" legend="Giorno"}
::select-from{from="clienti" form="fvo" field="cliente" label="nome" value="nome"}
::input{form="fvo" field="attivita" placeholder="Attività svolta" required="true"}
::input{form="fvo" field="ore" type="number" placeholder="Ore (es. 1.5)" required="true"}
::input{form="fvo" field="tariffa" type="number" placeholder="Tariffa oraria (€)"}
::add-form{form="fvo" path="voci" label="Registra"}
::::
:::table{path="voci" headers="Giorno,Cliente,Attività,Ore,Tariffa,Compenso" deletable="true" editform="fvo"}
{data} | {cliente} | {attivita} | {ore} | € {tariffa} | € {ore*tariffa}
:::
:::::
:::::page{title="Clienti" icon="👥"}
## Per chi lavori
::::form{path="clienti" id="fcl"}
::input{form="fcl" field="nome" placeholder="Cliente" required="true"}
::input{form="fcl" field="riferimento" placeholder="Riferimento / email"}
::add-form{form="fcl" path="clienti" label="Aggiungi cliente"}
::::
:::list{path="clienti" deletable="true"}
**{nome}** — {riferimento}
:::
:::::
:::::page{title="Parcella" icon="🧾"}
## Riepilogo da stampare
::::card{id="parcella" title="Riepilogo prestazioni"}
:::group-by{path="voci" field="cliente" as="table" headers="Giorno,Attività,Ore,Compenso"}
{data} | {attivita} | {ore} | € {ore*tariffa}
:::
**Ore totali: :sum[oret]{path="voci" field="ore"}** ·
**Compenso totale: € :sum[comp]{path="voci" field="ore*tariffa"}**
::::
::print{target="parcella" label="Stampa / PDF parcella"}
:::::