Rutba
Start free

Blog · How we build

Every app in the suite now opens at rutba.io

Since 6 October all 46 apps in the Rutba suite run in production, each at its own address under rutba.io, such as pos.rutba.io or books.rutba.io. Your sign-in says whose data you see, so no business needs addresses of its own.

· 6 min read · updated 12 October 2026

Share this

Until 6 October, eleven parts of the suite had an address you could open: the storefront, the till, Stock, CRM, Orders, the rider app, the time clock, Books, Manufacturing, Affiliates and the sign-in page. The other 35 apps were built, but we had kept them off the server to save memory. On 6 October they joined the rest. Every app in the suite now runs in production, 46 of them counting the storefront and the sign-in page.

Each one opens at its own name under rutba.io. The till is pos.rutba.io and the helpdesk is helpdesk.rutba.io. One copy of each app serves every business that uses it.

What joined on 6 October

  • People and pay: HR, Employee Self-Service, Payroll, Recruit, Workforce and Talent.
  • Money and buying: Accounts and Procurement.
  • The warehouse and the factory floor: Warehouse Control, Planning, Shop Floor, Quality and Maintenance.
  • Buildings, equipment and the road: Assets, Facilities, Dispatch, Fleet and Track.
  • Customers: Helpdesk, Marketplace and the Customer Portal.
  • Content and marketing: the CMS, Social and Campaigns.
  • Workspace: Mail, Docs & Sheets, Comms, Sign and Studio.
  • And the rest: Deskphone, Switchboard and Voice campaigns, the Assistant, the console a business’s own administrator works in, and Seed, where that administrator loads starter records such as letter templates.

Why a business needs no addresses of its own

We could have given every business its own set of addresses, one per app, and chose not to. The suite decides whose data to show from your sign-in, and the address plays no part in that.

When you sign in, the server behind the apps looks through the database of every business it hosts, finds the one your account belongs to, and writes the name of that database into the token it gives your browser. The token is signed, so it cannot be edited to name a different one. Every app you open after that sends the token with each request, and the server answers from that database and no other. A token naming a database the server does not hold is refused.

So pos.rutba.io can serve a bakery’s till and a hardware shop’s till from the same copy of the app, and neither sees the other’s sales. Adding a business adds a database and a line in the server’s list of them. It adds no addresses, and no new copies of any app. This is the same sign-in described in one sign-in for the whole suite; the token simply carries one more fact.

The storefront is the one app that keeps a shop’s own domain. Most people looking at a shop have not signed in, so there is no token to say whose shop it is, and the domain has to say it. The server in front of the suite tells the one behind it which domain a request came to, with a key the two of them share, and the shop’s database is opened from that.

The addresses that differ from the app’s name

AppAddressWhy
Mailinbox.rutba.iomail.rutba.io is the mail server itself
The console a business’s administrator usesadmin.rutba.ioconsole.rutba.io was already Rutba’s own console
Signapp.sign.rutba.iosign.rutba.io is the Rutba Sign website
The storefrontEach shop’s own domainA shopper is usually not signed in, so the domain names the shop
Every other app is at its own name: pos.rutba.io, books.rutba.io, helpdesk.rutba.io and so on.

Some pages are opened by people who will never sign in. A customer follows a parcel on its tracking page. A signer opens the link in their invitation. Somebody pays an invoice from a pay link, or a candidate books an interview slot. None of them is signed in, and track.rutba.io belongs to every business at once, so the address says nothing about whose page it is.

What the link does carry is a long random token of its own. Since 6 October each kind of link tells the server how to recognise one. When a link arrives with no sign-in, the server asks each business’s database in turn whether it holds that token, and answers from the one that does. If none does, or more than one, the answer is a plain not found. The search only asks whether the token exists; the page still refuses a token that has expired or been withdrawn.

These links find their own business that way:

  • a delivery’s tracking page, and the rating left on it;
  • every page of a Rutba Sign signing ceremony;
  • pay links;
  • interview booking links from Recruit;
  • shared Studio projects.

Two more joined on 8 October. One is the address another system posts to when it writes into a Comms chat channel. The other is the calendar feed a person subscribes to from another calendar app. That one needed a different test, because its signature is made with a key the whole server shares and so checks out against every business. The person it names is what tells them apart.

More joined on 9 October. A Drive share link, and the short-lived link Drive gives out for downloading a file, now find their business, and so does the public page that checks a document signed with Rutba Sign. Until then a Drive share link failed on a shared address. The careers pages (the job list and the application form) still do not find theirs. The link a job applicant uses to check on an application now does: it was fixed the same evening, after this post first went out.

Running, and still waiting for something

Some apps are deployed and open but cannot yet do their whole job, because what they need sits outside the app:

  • Meetings in Comms. Rooms, the lobby, breakout rooms, polls and the whiteboard are built, but no media server is deployed, so a meeting cannot carry sound or video yet. We built the meeting and not the media server explains why it was built in that order.
  • Deskphone, Switchboard and Voice campaigns. No phone system is connected. Deskphone shows an agent their own calls from the call ledger and dials nothing. Switchboard shows the numbers, the carriers and a wallboard, with no routing. Voice campaigns shows where and when calling is lawful in each market and has no dialler, on purpose. The half of a phone system worth building first has the reasons.
  • The Assistant. Its screens open at assistant.rutba.io, but no model is connected to it yet, so it cannot answer a question. An assistant with no account of its own describes how it is built to work once one is.
  • Drive has no address at all. Its storage is used every day by Docs & Sheets, Sign and Comms, but there is no screen of its own to put at one. We shipped the storage before the interface says what is there.

One table behind it

The script that deploys the suite holds a table with a row per app: its name, its port, its folder, its address, and the setting that carries the address into the other apps. The list of apps to build and start is worked out from those rows. So are the links in every app’s menu, and the addresses the sign-in page is allowed to send a session to.

The check we run over the whole estate reads the same table, so an app is checked from the day it gets an address. It also asks track.rutba.io for a tracking token that does not exist and expects a plain not found, which is the search above running and finding nothing.

Every app, with its own page

What each app in the suite does, drawn from the app’s own menus.

See the apps

Read next

How we build

The sign-in service no longer has a database of its own

Rutba’s sign-in kept its own database: sessions, keys, second-factor challenges, an audit trail, and a second copy of everybody. Since 21 September it keeps nothing. Every record it needs lives in the one backend that already held people.

3 min read

Business Suite

How the Rutba products fit together for a small business

A shop that sells at a counter and online, delivers some orders itself and has a bookkeeper uses five Rutba products. They work as one business because they share one product list, one stock number, one order and one customer.

4 min read

Money

A shop does not pay by the person any more

Per user was the wrong unit for a shop, not the wrong amount: a three-person counter paid three times for one till. Commerce, Inventory and Orders are now bought by the business on the orders it takes, with every member of staff and every register included.

3 min read

Share this

One family

The rest of Rutba

One account across all of it. Sign in once and the products know each other.

PORTAL-BLOG-DETAIL · 7596826