Overview & data storage
This application runs entirely in your browser. Your practice data is stored locally using IndexedDB on this device — there is no cloud account and nothing is sent to a server unless you explicitly export a file or print.
Major areas work together: clients, invoices (including payments and optional billable time lines from Session time), treatment goals, time, expenses, schedule (tasks and appointments), and reporting — all offline-first.
Use Settings → Data Backup regularly so you can recover from device loss, browser data clearing, or mistakes. The app title in the sidebar reflects your practice name once you save it in Settings.
Dashboard
The home view leads with the calendar at the top. Use View to switch Week (seven tall day columns), Month (classic grid), or Year (twelve mini months). The prev/next buttons move by week, month, or year depending on the view. Appointments show at their scheduled time (client name when linked). Tasks show on their due date. Click a task or appointment to edit or delete it.
Below the calendar, the Dashboard shows a financial snapshot for the current period (including revenue, amounts due, and bank-related figures derived from your settings and recorded payments).
From the dashboard you may see quick actions such as recording payment where applicable.
Invoices
The Invoices list shows every invoice. Use Sort by to order by issue date (newest first) or by payment due date (oldest due first).
Client search filters the list by client name so you can find work for a specific family quickly.
Each row typically includes View (opens a printable preview in a new window), Edit, Pay (if not yet paid), and Delete. Paid invoices disable the Pay action.
Use New invoice to open the full invoice form. Invoice numbers are assigned automatically when needed.
Creating & editing invoices
Client — Pick an existing client from the dropdown, or check New client and enter their details; those fields are read-only until you choose “new client” mode.
Invoice details — Set the invoice date and tax rate. Use Tax rate preset to apply your default rate or alternate rates (Tax Rate 2 / 3) configured under Settings.
Line items — Use the Select item dropdown on each row. It has two parts: Billable time (this client) lists unbilled time chunks from Session time for the selected client (and chunks already on this invoice while you edit). Services & supplies lists your service catalog. Pick a row to fill quantity, description, unit cost, and taxability; you can still edit numbers for adjustments. Billable time lines default to non-taxable unless you change them. Add line adds another row. New item opens the catalog editor — it does not create billable time; that comes from Session time.
Billable time and invoices — When you put a billable chunk on an invoice, it is allocated to that invoice until you remove the line, delete the invoice, or change the invoice so the chunk is no longer on it — then it returns to the open pool for that client. Deleting an invoice releases any billable lines back to the pool.
Totals at the bottom show subtotal, tax, and grand total based on taxable lines and the invoice tax rate.
Payments & terms — Below line items, set payment terms (due on receipt, Net 7/30, or custom days) to drive the due date preview and printed invoice. Use Record payment for the payment modal, or check Record payment now when saving a new invoice to capture type, amount, and date in one step. The payments table on the invoice supports edit and delete. Paid invoices can still be opened for adjustments.
SOAP notes — Text here is for your clinical records only; it does not appear on the printed invoice. For aggregated SOAP-style documentation across visits, use View SOAP notes on the client card.
Save stores the invoice and returns you to the list; editing an existing invoice updates the same record.
Clients
The Clients view is your master list. Use New client to add someone, or open an existing card to edit.
Clients who have never had an invoice show a New client badge until their first invoice.
Each client card offers:
- New Invoice — Starts an invoice prefilled for this client.
- Schedule — Opens visit scheduling for this client.
- Invoices — Lists that client’s invoices in a modal with View / Edit / Pay shortcuts.
- View SOAP notes — Reads aggregated SOAP notes (including notes tied to invoices for this client).
- Treatment goals — Opens the Treatment Goals list filtered to this client (when enabled on the card).
- Edit / Delete — Maintain or remove the client record.
Schedule
Open Schedule and use Add New. Choose Entry type: Task or Appointment.
- Task — Name, optional description, priority, due date, and completed checkbox. Tasks show on the Dashboard calendar on the due date (by name).
- Appointment — Optional client (pick someone already in Clients—no “new client” from here), date, time, duration, recurrence, and optional notes. Saved as a real appointment; appears on the calendar at that time. The same page lists both tasks and appointments; appointments can be deleted from the list.
From a client card, Schedule still opens the dedicated appointment dialog for that client.
Session time
Record blocks of time for any activity. Choose a context: personal, exercise, business, or client (billable session) (pick a client). For client entries you can mark Billable and set a rate per hour when applicable.
Billable time and invoicing — When you save a billable entry for a client, the app creates a matching row in a separate billable time pool (with its own ID). That pool is not the same list as Services & supplies — it keeps one-off time chunks separate from your catalog. On New Invoice (or edit) for that client, open billable chunks appear under Billable time (this client) in each line’s Select item dropdown so you can add them like any other line. When a chunk is on an invoice, it is tied to that invoice until you remove the line or delete/change the invoice; then it goes back to the open pool for that client.
Deleting and corrections — You cannot delete a billable time log entry while its chunk is still on an invoice (remove it from the invoice first). For rare mistakes (e.g. wrong client), an unbilled chunk can be removed with Remove billable chunk… on the Session time card (strong confirmation). Turning off Billable on an entry removes the pool row only if that chunk is not on an invoice.
Filter the list by client and by date range (this week, this month, or custom). Time entries and billable pool rows are stored locally and are included in JSON backup / restore (time_entries and billable_time_items).
Treatment Goals
Treatment goals track long-term client objectives with an overall description plus a set of actionable steps. A client is required for every treatment goal. Each step has its own due date and a short action description.
On the Treatment Goals list, any treatment goal with at least one step whose due date has passed (and the step is not marked done) will be shown in red as past due.
Creating and updating a treatment goal happens on its dedicated page (similar to invoices): choose a client, click New treatment goal, add steps, then Save treatment goal.
Expenses
Record money going out: category, amount, date, vendor/payee, and optional notes. Edit or delete entries from the list. The Reporting view includes an Expenses by category report for a date range. Expenses are included in backup files and feed into the Dashboard bank-style summary together with payments.
Services & supplies (catalog)
This catalog holds services and billable items you use repeatedly: each entry has a name, default description, unit cost, and whether it is taxable by default. On invoices, these appear in the Services & supplies section of the line-item dropdown.
Billable time is managed separately: it comes from the Session time billable pool and appears in its own part of the invoice line dropdown — it is intentionally not mixed into this catalog so the list stays manageable.
From Settings you can also configure default tax rates and additional tax rate presets used on invoices. Saving tax settings updates the presets available on invoice forms.
Reporting
The Reporting sidebar view builds printable summaries from your local data. You choose one report at a time using the radio options (round buttons — only one can be selected per group, which matches “run this report, not several at once”).
How the screen is laid out
- Date range — Start and End dates at the top apply to most reports. When you first open Reporting, the app may fill in a sensible default range (for example, the first day of the current month through today) if the fields were empty.
- Optional panels — Extra controls appear only when needed. For example, when Time by context is selected, a Client dropdown appears so you can limit the report to one client or leave it on “all” contexts.
- Report groups — Options are grouped under headings (Invoices & revenue, Time & billing, and so on) so related reports stay together.
- Run report — The primary button stays at the bottom. It runs whichever single report is selected.
When the date range is hidden
If you select Balances due by client (current), the date range section is hidden on purpose. That report is a snapshot of what is owed right now across open invoices, not a historical slice by invoice date.
What each report uses and shows
- Sales totals by client — Uses each invoice’s invoice date to decide if it falls in the range. Sums invoice totals by client name and shows a grand total.
- Tax collected — Same date filter (invoice date). Shows taxable amounts, tax amounts, a summary by tax rate, and a per-invoice breakdown. Helpful for reconciliation or remittance notes (the app does not file taxes for you).
- Payments received — Uses each payment’s payment date (cash-basis view). Lists payments in the range and totals by client.
- Time by context — Uses each time entry’s entry date. Groups hours (for example by client name, Personal, Business). Optional client filter limits rows to time logged for that client only.
- Open billable time — Lists unbilled billable time pool rows whose work date falls in the range (still in the “open” pool, not yet on an invoice).
- Expenses by category — Uses each expense’s date. Sums amounts by expense category.
- Product / service sales — Uses invoice date and sums catalog line items only (catalog-backed lines). Billable time lines on invoices are not mixed into this mix report.
- Balances due by client — No date range. Shows current balance due per client and a list of open invoices with balances.
Output and printing
Run report opens a new browser tab with a simple, print-friendly layout (your practice block from Settings appears when configured). Use the browser’s Print dialog (Ctrl+P on Windows/Linux, ⌘P on Mac) to print or Save as PDF. Nothing is uploaded; everything stays on your device.
Settings
Practice details — Name, address, phone, ZIP, and optional logo image shown on printed invoices. Set Initial Bank Balance as the starting point for cash-on-hand tracking in the app.
Tax fields let you define a default rate and two alternate rates; these tie into the tax preset dropdown on invoices.
The lower part of Settings handles data backup — see the next section.
Backup, export & restore
Export Backup — Downloads a JSON file named like invoicing-backup-YYYY-MM-DD.json containing your data snapshot: clients, invoices, SOAP notes, service catalog, practice settings, expenses, appointments, tasks, time entries (time_entries), billable time pool rows (billable_time_items) used for invoice line items, and treatment goals data (goals and goal_steps).
Restore Backup — Choose a previously exported JSON file. The app replaces matching data stores with the file contents and reloads lists. Older backup files that omit tasks, time_entries, billable_time_items, or goal_steps will restore those stores as empty. You should see “Backup restored successfully.” On failure, an error message explains the problem (invalid JSON, wrong structure, etc.).
Important: Restoring overwrites current data in those categories with the backup. If you need to merge two devices, prefer exporting from one and manually reconciling — or restore only on a fresh browser profile.
Automatic backups — Set “Backup Every (minutes)” to a positive number and save. While the app stays open, backups run on that interval. If you grant a folder via the browser’s directory picker, files can be written there; otherwise the app may fall back to downloading a JSON file each time. Status messages appear next to the automatic backup controls.
Keep backup files somewhere safe (external drive, cloud folder you control). They are plain JSON and readable with any text editor.
Printing & browser windows
View on an invoice opens a new browser tab or window with a print-friendly layout. Use the browser’s Print dialog to PDF or paper. Practice logo and details from Settings appear in the header when configured.
Reporting — Run report also opens a new tab with a printable layout. Use the same Print dialog to save as PDF or print.
No sections match your search. Try different keywords or clear the search box.