Skip to content

Installing the PWA

Dinary works as a Progressive Web App (PWA) — an app-like experience in your browser, installed directly from the website. No App Store or Google Play needed.

1. Find your server URL

Your URL depends on how you deployed dinary:

  • Tailscale: https://<your-machine>.<tailnet>.ts.net
  • Cloudflare Tunnel: https://dinary.yourdomain.com (the domain you configured)

If using Tailscale

The app is accessible only within your tailnet — Tailscale must be running on your phone to open the URL.

  1. Install Tailscale on your phone (App Store / Google Play).
  2. Log in with the same account you used on the server.
  3. In the Tailscale app, find your server machine — its name is the MagicDNS hostname.
  4. Open https://<that-name>/api/health in the browser to verify it works.

2. Install the PWA

Android (Chrome)

  1. Open your server URL in Chrome.
  2. If prompted by Cloudflare Access, log in with your email (one-time).
  3. Tap the browser menu () → Add to Home ScreenAdd.
  4. The Dinary icon appears on your home screen.

Tip

Chrome may show a banner at the bottom: "Add Dinary to Home screen" — tap it for a one-step install.

iOS (Safari)

  1. Open your server URL in Safari (PWA install only works in Safari on iOS).
  2. If prompted by Cloudflare Access, log in with your email (one-time).
  3. Tap the Share button (□↑) → Add to Home ScreenAdd.
  4. The Dinary icon appears on your home screen.

Warning

iOS does not support PWA install from Chrome or Firefox — you must use Safari.

Using the app

  • Manual entry: enter amount, select category, add an optional comment, and tap Save.
  • QR scan: tap "Scan QR", point the camera at a Serbian fiscal receipt QR code. The amount and date are pre-filled — pick a category and save.
  • Offline: if you have no internet, entries are queued locally and sync automatically when connectivity returns. A badge in the header shows the number of queued entries.

Re-authentication (Cloudflare Access only)

If you use Cloudflare Access, sessions last 30 days by default. When the session expires:

  • The app will prompt you to re-authenticate.
  • Open the app in your browser — Cloudflare shows the login page.
  • After login, any queued entries sync automatically.