Skip to content
Emblem of The Campfire Workers' Collective

Brought to you by The Campfire Workers' Collective

Le Sentier logoLe Sentier
FR

Le Sentier, the technical side

How you sign in, how data comes in, and what comes back out.

Signing in

The app is native, not a web page

Le Sentier runs on Android and on desktop (Tauri). There is no browser version: every data call goes through the native layer, which holds the client certificate. So you do not sign in from a website — you install the app.

Signing up — by invitation during the pilot

The pilot is closed: we open the accounts. Once invited, this is the path through the app.

  1. You enter your email address.
  2. A six-digit code reaches you. It lives for ten minutes.
  3. You fill in the form: username, password, company, zone, province, language.
  4. The app waits until your account is built, then you are in.

Signing in afterwards

The app's sign-in screen
Sign in

Username and password. The password does not sit in a users table on our side: HashiCorp Vault holds it and checks it. We keep neither a copy nor a hash.

Four layers

LayerWhat it proves
mTLSthat the device talking is really the app
Vaultthat the person knows their password
Redisthat the session is still open
OPAthat this role may make this particular call
Getting your data in

Three ways in

Your register, connected

For Clover, you authorise the connection once in your browser, and the server fetches your sales every 45 seconds. One connection per zone. Inventory only moves when the order is paid.

Square, Toast and Lightspeed are on the roadmap. The internal vocabulary is already provider-neutral.

Your register, by file

If your register cannot be connected, the « File » connection does the same job: no token, no authorisation, you drop in a CSV or an Excel file. Re-importing the same file never counts anything twice.

First row: the column names. Required: date, item, quantite, montant. Optional: commande, nom, prix_unitaire, paiement, devise. Dates are written YYYY-MM-DD, the time is optional. Rows sharing an order are grouped.

commande;date;item;nom;quantite;prix_unitaire;montant;paiement C1;2026-09-01;TARTE;Tarte aux pommes;2;12,50;25,00;carte

Your receipts, as photos

You photograph the receipt. It is read, and one line is proposed per recognised item — which you correct. Then two moves: apply the receipt (quantities enter stock and purchase tasks close), or attach it to an already-sealed purchase, which corrects the estimates, the stock value and the batch costs.

Getting your data out

What comes out, and what does not

  • To your register — your catalogue and your prices, on an explicit action. Nothing leaves on its own.
  • As PDF — your quotes and your invoices. The invoice is sealed when it is sent: its number and its contents no longer move.

What does not exist yet, and we may as well say so: there is no general CSV or Excel export of your data. Exports are targeted. If you need one, tell us — that is the kind of thing we add.

Under the hood

For the curious

Everything is written in Rust, from the browser to the server: Leptos and Tauri on the client, actix-web on the server. Data lives in an RDF triplestore (Apache Jena) split into two graphs — identities on one side, business data on the other — and quantities and money in TigerBeetle.

Every action becomes an event, written once, by a single writer, with an identifier that makes replay harmless. A power cut in the middle does not leave half a transaction behind.

The most unusual choice: the OWL ontology is the source of truth, and the Rust code is a projection of it. The business vocabulary is described once, formally, and the rest follows.