JoboraSelf-Hosted Job Management: Quotes, Scheduling, Job Costing
Self-hosted field-service software: quotes that turn into jobs, a drag-and-drop schedule board, real job costing and invoices — bought once.
No sign-up, no password — the demo opens already signed in, on sample data.
- Full PHP source included
- Instant download + licence key
- It never phones home
- Compare vs SaaS pricing →
The problem it solves
A small trade business runs on four things that never live in the same place: the quote you sent, the day it is booked for, what it actually cost you, and whether the customer has paid. The quote is in email. The schedule is a whiteboard or a group chat. The costs are in a shoebox. The invoice is in a spreadsheet — and the margin is a feeling you get at the end of the month.
- Field-service SaaS is sold per user, per month, and the tier that includes scheduling is rarely the cheap one
- The one-time scripts in this niche are usually job lists — a title, a status, a date, and nothing that tells you whether the work made money
- The two screens that decide whether the software gets used are the ones most often missing: a schedule you can drag, and a margin you can see
What you get
A week per screen, a lane per technician, a block per visit, positioned by real time. Drag a block to another day or another person and it moves on the server — refused, in plain words, if it would double-book somebody. No JavaScript? Every block carries a plain move form, so the board still works on a locked-down machine.
The drag, the booking form, the REST API and the AI tool all call the same function. A rule that lives in one place cannot disagree with itself, and a test asserts that no second copy of it exists.
Line items with quantity, unit price, per-line tax and an invoice-level discount. Send it, the customer opens a tokenised link with no login, accepts, and the quote converts to a job exactly once — from the button, the public page, the API or an agent, all through one conversion function.
Labour, materials and subcontractor costs logged against the job, against what was quoted. A job nobody quoted shows a margin of unknown — never zero, because zero is a claim and unknown is the truth.
Not a second money engine: the totals and status functions are byte-identical to Invora's, proven by a test that diffs the two function bodies and by Invora's own published reference case reproducing to the cent on both SQLite and MySQL. Integer cents throughout.
A canvas signature captured on a phone, stored with the job and printed on the PDF. A blank pad is refused — a blank filed as a signature is worse than none.
Byte-sniffed image uploads against the visit, so a file that claims to be a photo has to actually be one.
A customer-facing quote PDF, a customer-facing invoice PDF, and an internal job sheet that carries the margin — the one document you do not send out.
Eight MCP tools over the same guards a person faces: an agent can read the board, quote, and book — and every read-only tool says so in its own annotation. Signing, deleting and taking payments are deliberately not on the list.
- MCP endpoint with read-only or full API keys
- Roles with email invitations and a last-admin guard
- Append-only audit trail across browser, API and agent
- Your logo and colours on every PDF
- Scheduled backups with a guided dry-run restore
- Optional single sign-on (OIDC)
The 3.1 wave gave the catalogue a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Every outbound path ships switched off, runs on your own credentials, and can never break the thing that triggered it. This app gained no new outbound path in 3.1 — its pass rewrote the honest-limitations list against the shipped code instead, which is the more useful change when the product was already complete.
See it running — right now, on sample data
No sign-up, no password — it opens already signed in, and resets itself. Click around freely.
Open the live demoIs Jobora right for you?
Before the price, not after it: what Jobora deliberately does not do. We publish this on every product because the wrong purchase costs you more than the price.
- One business per installation. Your team shares it with viewer / member / admin roles. Two trading companies means two installations.
- No payment processing, ever. An invoice can carry your payment link. Marking it paid records a fact; it does not reconcile with anything.
- No stock control. A material line is a cost against a job, not a draw from an inventory.
- Recurring work is not automated. There is no "every third Tuesday" rule that generates jobs.
- The customer sees one document at a time. No login, no history, no list of their jobs.
- Email is off until you switch it on, and it goes through your own SMTP server. No relay.
- A signature is captured, not verified. Not identity verification, not eIDAS-qualified. On a server without GD the blank-pad check falls back to a size floor, so a very small signature could be refused.
- The margin is only as honest as what you log.
- No offline mode.
- English only.
Still the right fit? See the price → · Not sure — see who should stay with the SaaS →
Pricing — one-time, yours forever
- ✔ Full source included — PHP you can read and change
- ✔ No subscription. One payment, yours forever
- ✔ It never phones home
- ✔ Your data stays on your server
- ✔ 14-day refunds — we’d rather refund than argue
- ✔ Offline test suite in the box — run it before you rely on it
- ✔ If we ever stop: after 1 year the domain limit lifts, after 3 years your copy relicenses to MIT — it’s in the licence
Not ready to own it? Ownware Cloud runs selected apps from $12/month — and after 12 paid months the perpetual self-host licence is yours.
Read before you buy — what the zip looks like inside
jobora/
README.md · QUICKSTART.txt · LICENSE.txt
app/
index.php · router.php · config.sample.php · Dockerfile
src/ the classes — plain PHP 8, no framework, no Composer
controllers/ every route handler
views/ every screen
tests/ the offline test suite — run it yourself: php tests/run.php
bin/ packaging · seeding · maintenance scripts
API.md the REST + webhook + MCP reference
Nothing is obfuscated or encoded. What you read is what runs.
What the same job costs rented
Every figure is read from the vendor’s own pricing page and carries the date it was read.
Core $49/mo billed monthly with no commitment (1 user); Connect $139/mo, Grow $199/mo, Plus $499/mo
3 months of Jobber equals the one-time $129.00.
Source, read 2026-08-22 →Basic $59/mo billed annually ($79/mo month-to-month), 1 user included; Essentials $149/mo, Max $299/mo
3 months of Housecall Pro equals the one-time $129.00.
Source, read 2026-08-22 →Lite $47 USD per user/month (Pro $51, Plus $61 per user/month)
1 month of Tradify equals the one-time $129.00.
Source, read 2026-08-22 →The full table — every competitor, what each does better than us, and who should stay with them: Jobora vs renting →
Which licence do I need?
It comes down to how many installations you need. Running your own business on one site is the Single licence. Building or running sites for other people — a second domain of your own, or an installation a client keeps — is the Extended licence.
Single licence
One (1) domain or subdomain
One business, running it on one site.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended licence
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
Extended licence
Unlimited sites you own or operate
Agencies, and anyone running it on more than one site.
- Everything the Single licence grants
- Install it on as many domains as you own or operate — no cap on the number
- Build and hand over one installation per client project
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt, and the licence you bought is
named on your order and in your buyer portal. The complete wording lives on the
terms page, and the live demo is free for as long
as it takes to decide.
No reviews yet — so here is what we offer instead. Every competitor price on our comparison pages is source-linked and dated, and when a vendor’s price won’t load we say so rather than guess. See the sources for yourself →
After you buy
The four things people ask right before they decide.
Your download link always serves the current build at the time you fetch it — re-download any time from your order page or the buyer portal. No renewal fee to keep what you bought.
Email support for installation and for defects in the code as delivered — a person answers, usually within a day or two. It does not cover custom development or server administration. What support covers →
Refunds are handled by Lemon Squeezy as Merchant of Record, case by case — if something is broken and we can’t fix it, we’d rather refund than argue. EU consumers additionally hold the statutory 14-day right until delivery starts. Refund terms →
Nothing stops. You hold the full PHP source, it runs on your own server, and the software does not phone home — there is no licence check that can fail and no cloud that can be switched off. LICENSE.txt ships inside the zip, so your right to keep running it never depended on this site existing.
Covered in these guides
Three live prices from the field-service market, read off the vendors' own pages on 22 August 2026, the three-year arithmetic they imply for a small crew, and an honest account of what a one-time tool has to get right before it can replace one.
Questions about Jobora
Is the invoice math really the same as Invora's?
It is the same file. The totals and status functions are byte-identical — a test extracts both function bodies and compares them — and Invora's published reference case (10 x 100.00 at 8.5% plus 1 x 500.00 at 0%, 5% discount, total 1,505.75) reproduces to the cent here, on SQLite and on MySQL. Only the three loader methods differ, because they name Jobora's own tables.
What happens if I drag a job onto someone who is already out?
It springs back and tells you who, and when, in a sentence. The drag calls the same conflict rule the booking form calls, so the board and the form can never disagree about what is allowed.
Does it take payments?
No. An invoice can carry your own payment link and you can mark it paid — that records a fact, it does not reconcile with anything. There is no card processing anywhere in the product.
Will this run on shared hosting?
Yes. PHP 8+ with PDO, MySQL or SQLite. The MySQL path is not assumed: 32 checks run against MariaDB in strict mode, including the money reference case.
Is the signature legally binding?
It is captured, not verified. It is not identity verification and not eIDAS-qualified. It carries the evidential weight of a signature on a paper job sheet — proof that somebody signed at the door.
