Day Counter — how many days have passed
Days smoke-free, days since an anniversary, the streak of a habit you're building: set the start date and the app counts on its own, every single day that passes. Unlike a one-off calculator, this one stays saved on your device — built for you to come back to every day and watch the number climb.
What it records
- E.g. Days smoke-free, or Anniversary
How it works
This is a Reactive app: a plain text document that your browser turns into a working app — forms, live data, tables, statistics and even charts, with nothing to install or configure.
- Use it right away. Hit “Use this app”: it opens right in your browser, ready to go, with data saved only on your device.
- Your data stays yours. Everything is stored locally on your device, kept separate for each app: no account, no server, nothing to set up.
- Make it your own. The text below is the entire app: copy it, tweak fields, views and words, and your changes become interactive instantly.
- Share it as a file. An app is a simple file: save it, export it or share it with a link; and with encrypted collaboration several people edit the same data in real time.
The app’s source
# 🔥 Day Counter
Days smoke-free, days since an anniversary, the streak of a habit you're
building: set the start date and the app counts on its own, every single day
that passes. Unlike a one-off calculator, this one stays saved on your
device — built for you to come back to every day and watch the number climb.
::::form{path="goals" id="fob"}
::input{form="fob" field="name" placeholder="E.g. Days smoke-free, or Anniversary" required="true"}
::input{form="fob" field="start" type="date" required="true" legend="Start date"}
::add-form{form="fob" path="goals" label="Start counting"}
::::
:::python{data="goals"}
```
from datetime import date
rows = data["goals"]
today = date.today()
for r in rows:
start = date.fromisoformat(r["start"])
days = (today - start).days
print(f"🔥 {r['name']}: {days} days")
```
:::
## Saved goals
:::table{path="goals" headers="Goal,Start date" deletable="true" editform="fob"}
{name} | {start}
:::
Come back every day to watch the number grow, or add a new goal whenever
you start fresh.