Two ways to run it
| Browser mode (default) | Team mode | |
|---|---|---|
| Logins | None | Email and password per person |
| Data | Each visitor's own browser | Your own Supabase Postgres database |
| People | One person per browser | Admins and members, with permissions enforced by row-level security |
| Setup | Upload the files | Upload the files, run one SQL file, paste two keys |
Which one you get depends on config.js. With the placeholder values it runs in browser mode. With your Supabase URL and publishable key it runs in team mode.
Option 1: Hostinger Node.js web app
Hostinger can run Node.js apps on its Business web hosting and Cloud plans. You don't need a VPS. InvoiceDesk ships with server.js, a small static server that uses only Node's built-in modules.
Get Hostinger hosting (opens in a new tab, affiliate link)
- Fork the repository on GitHub: github.com/amanverma-gh/invoicedesk.
- In hPanel, go to Websites → Add website and choose Node.js Web App.
- Choose Import Git repository, connect GitHub and pick your fork. (Or choose Upload your files and upload a zip of the folder.)
- In the build settings, use:
Framework preset Other Node.js version 22 (18, 20 and 24 also work) Build command leave empty (there is nothing to build) Entry file server.jsStart command npm start, if asked - Click Deploy. The server listens on the port Hostinger gives it in
PORT, and on 3000 otherwise. - Connect your domain. Every push to your fork redeploys the site.
The Hostinger link is an affiliate link. If you buy through it, the project earns a commission at no extra cost to you. It helps keep InvoiceDesk free.
Option 2: Any static host, or your own computer
Upload the folder to Netlify, Vercel, GitHub Pages, shared hosting via FTP, or an S3 bucket. No build settings are needed. To run it on your own computer:
node server.js
# open http://localhost:3000
Turn on team logins (Supabase)
- Create a free project at supabase.com.
- Open SQL Editor → New query, paste all of
supabase/schema.sqland click Run. It creates the tables, the row-level security policies and the functions. - From Project Settings → API, copy the project URL and the publishable (anon) key into
config.js:
The publishable key is meant to be public. Every permission is enforced by the database, not by the browser.window.INVOICEDESK = { supabaseUrl: 'https://your-project.supabase.co', supabaseKey: 'your-publishable-key' }; - In Authentication → URL Configuration, set the site URL to your domain and add
https://your-domain/app/to the redirect URLs. - For real users, add an SMTP provider (Resend, Brevo, Amazon SES) under Authentication → Emails. Supabase's built-in email is only for testing.
- Open
/app/, create an account and create your business. You are its admin. Invite your team from Team.
Members can create invoices, customers and items and record payments, but can't delete anything. Editing saved invoices is allowed only if the admin turns it on.
Licence
InvoiceDesk uses the Sustainable Use License. Use it and change it for your own business or personal use. Don't sell it, and don't run it as a paid service for other people.