HouseBudget
Le manuel illustré, écran par écran, pour gérer vos biens locatifs : propriétés, contrats de bail, loyers, cautions, relances, rapports et bien plus — sur le web, l'application bureau (Windows) et le mobile/tablette. The illustrated, screen-by-screen manual for managing your rental properties: properties, leases, rent, deposits, reminders, reports and more — on the web, the desktop app (Windows), and mobile/tablet.
Connexion & création de compteSign in & create account
Le premier écran. Créez votre compte, connectez-vous, ou récupérez un mot de passe oublié. C'est identique sur le web, l'application bureau et le mobile. The very first screen. Create your account, sign in, or recover a forgotten password. It is identical on web, desktop and mobile.
- 1Se connecterSign in — l'onglet par défaut : entrez e-mail + mot de passe.the default tab: enter your email + password.
- 2Créer un compteCreate account — bascule vers l'inscription ; un champ « Votre nom » apparaît.switches to sign-up; a "Your name" field appears.
- 3E-mail — votre adresse e-mail (identifiant).your email address (your login).
- 4Mot de passePassword — l'icône 👁️ affiche/masque le texte saisi.the 👁️ icon shows/hides what you type.
- 5Se connecter / Créer mon compteSign in / Create my account — valide le formulaire.submits the form.
- 6Mot de passe oublié ?Forgot password? — envoie un code par e-mail pour réinitialiser.emails you a code to reset it.
Pas à pasStep by step
- Créer un compte :Create an account: touchez Créer un compte, saisissez votre nom, e-mail et mot de passe, puis Créer mon compte.tap Create account, enter your name, email and password, then Create my account.
- Se connecter :Sign in: e-mail + mot de passe, puis Se connecter. Si la double authentification est active, un champ Code d'authentification apparaît — entrez le code à 6 chiffres.email + password, then Sign in. If two-factor is on, an Authentication code field appears — enter the 6-digit code.
- Mot de passe oublié :Forgot password: Mot de passe oublié ? → e-mail → Envoyer le code → saisissez le code reçu + un nouveau mot de passe → Réinitialiser.Forgot password? → email → Send code → enter the emailed code + a new password → Reset.
Vos propriétésYour properties
Juste après la connexion. Choisissez une propriété pour y entrer, créez-en une nouvelle, ou rejoignez celle de quelqu'un d'autre avec un code d'invitation. Toute la suite de l'application concerne la propriété active. Right after signing in. Pick a property to open, create a new one, or join someone else's with an invite code. Everything else in the app is about the active property.
Vos propriétésYour properties (2)
- 1Liste des propriétésProperty list — touchez une ligne (ou la flèche →) pour entrer dans la propriété.tap a row (or the → arrow) to open the property.
- 2✎ ÉditerEdit — modifie la propriété (admin) : nom, bailleur, défauts de bail…edit the property (admin): name, landlord, lease defaults…
- 3🗑 SupprimerDelete — supprime la propriété et ses données (propriétaire seul, confirmation).deletes the property and its data (owner only, with confirmation).
- 4Créer / RejoindreCreate / Join — nouvelle propriété, ou entrer un code d'invitation.new property, or enter an invite code.
- 5Nom & deviseName & currency — les onglets « Le bien » / « Équipements » sont facultatifs.the "Property" / "Equipment" tabs are optional.
- 6Créer et entrerCreate and enter — crée la propriété (+ modèles de documents + chambres) et l'ouvre.creates the property (+ document templates + rooms) and opens it.
Pas à pasStep by step
- Créer une propriété :Create a property: onglet Créer → saisissez le Nom et la Devise → (facultatif) renseignez surface, chambres, équipements → Créer et entrer. Les chambres et les modèles de documents par défaut sont créés automatiquement.the Create tab → enter the Name and Currency → (optional) fill area, bedrooms, equipment → Create and enter. Rooms and default document templates are created automatically.
- Rejoindre :Join: onglet Rejoindre → collez le Code d'invitation (format HB-XXXXX) → Rejoindre. Vous entrez en tant que Lecteur.the Join tab → paste the Invite code (format HB-XXXXX) → Join. You enter as a Viewer.
- Changer de propriété plus tard :Switch property later: via le sélecteur en haut du menu (web) ou « Changer de propriété » dans Plus (mobile).via the switcher at the top of the menu (web) or "Switch property" in More (mobile).
Tableau de bordDashboard 🖥️ Web · 📱 RésuméSummary
La vue d'ensemble de la propriété active sur les 6 derniers mois : ce qu'il faut faire, la trésorerie, les impayés, et les tendances. Toutes les cartes sont cliquables et mènent à l'écran concerné. The overview of the active property over the last 6 months: what to do, cash, arrears, and trends. Every card is clickable and jumps to the matching screen.
Position de trésorerieCash position
EncaissementCollection
- 1Cartes d'alerteAlert cards — actions à faire (retards, entrées/sorties, cautions, contrats en brouillon…). Cliquez pour aller au bon écran. Vert = tout est à jour.to-dos (overdue, move-in/out, deposits, draft contracts…). Click to jump. Green = all caught up.
- 2Tuiles clésKey tiles — Portefeuille (unités occupées), Risque loyers, Cautions actives, Contrats actifs.Portfolio (occupied units), Rent risk, Active deposits, Active contracts.
- 3Groupes d'indicateursKPI groups — Trésorerie, Résultat, Encaissement, Arriérés — les chiffres de pilotage.Cash, P&L, Collection, Arrears — your steering figures.
- 4GraphiquesCharts — Revenus vs dépenses par mois et Dépenses par catégorie (rouge = dépassement de budget).Income vs expenses by month and Expenses by category (red = over budget).
ContratsContracts 🖥️ 📱
Le cœur de l'application. Un contrat = un locataire dans une unité. Ici vous créez le bail, encaissez les loyers, gérez l'entrée et la sortie (état des lieux), la caution, les documents et la signature en ligne, puis mettez fin au bail. The heart of the app. One contract = one tenant in one unit. Here you create the lease, record rent, run move-in / move-out (inventory), the deposit, documents and online signature, then end the lease.
- 1⬇ Excel — exporte tous les contrats en tableur.exports all contracts to a spreadsheet.
- 2+ Nouveau contratNew contract — ouvre le formulaire (unité, locataire, loyer, caution…).opens the form (unit, tenant, rent, deposit…).
- 3Nom + statutName + status — pastille Brouillon / Actif / Terminé, « En retard », et 👥 pour les colocataires.Draft / Active / Ended pill, "Overdue", and 👥 for co-tenants.
- 4Solde & cautionBalance & deposit — Reste / Avance / À jour, et la caution encore détenue.Due / Advance / Up to date, and the deposit still held.
- 5Paiements & actionsPayments & actions — déplie le détail du contrat (ci-dessous). 💬 WhatsApp, ✎ modifier.expands the contract detail (below). 💬 WhatsApp, ✎ edit.
Cycle de vie du bailTenancy lifecycle
💰 CautionDeposit À encaisserTo collect
Enregistrer un loyerRecord a rent payment
📦 Pack locataire · SignatureTenant pack · Signature
- 6Cycle de vieLifecycle — Entrée → Occupation → Sortie → Caution → Clôturé. Les boutons ▶ Entrée / ⏹ Sortie ouvrent l'état des lieux.Move-in → Occupancy → Move-out → Deposit → Closed. The ▶ Move-in / ⏹ Move-out buttons open the inventory.
- 7💰 CautionDeposit — Convenue / Encaissée / Détenue / Remboursée. « Encaisser » enregistre l'argent reçu et imprime un reçu. C'est de la trésorerie détenue pour le locataire, hors résultat.Agreed / Collected / Held / Refunded. "Collect" records the money received and prints a receipt. It's cash held for the tenant, outside the P&L.
- 8Enregistrer un loyerRecord a rent payment — choisissez mois/année/montant → « Encaisser ». L'historique dessous propose la 🧾 quittance.pick month/year/amount → "Record". The history below offers the 🧾 receipt.
- 9Documents & signatureDocuments & signature — imprimer/PDF, ZIP, email, et « Signer en ligne » (ou 🔔 Relancer si déjà envoyé, ✓ Signé une fois fait).print/PDF, ZIP, email, and "Sign online" (or 🔔 Remind if already sent, ✓ Signed once done).
Pas à pasStep by step
- Créer un bail :Create a lease: + Nouveau contrat → choisissez l'Unité louée (le loyer et la caution se pré-remplissent), le Nom du locataire, le Téléphone, la Date de début, le Loyer et la Caution → onglet « Détails » pour l'email, la fin, le renouvellement auto, les colocataires, le garant → Enregistrer.+ New contract → pick the Rental unit (rent and deposit auto-fill), the Tenant name, Phone, Start date, Rent and Deposit → the "Details" tab for email, end date, auto-renewal, co-tenants, guarantor → Save.
- Encaisser un loyer :Record rent: dépliez la carte → « Enregistrer un loyer » : mois, année, montant → Encaisser. Imprimez la Quittance depuis l'historique.expand the card → "Record a rent payment": month, year, amount → Record. Print the Receipt from the history.
- Encaisser la caution :Collect the deposit: bloc 💰 Caution → Encaisser la caution → saisissez le Montant reçu → confirmez ; un reçu de caution s'imprime.the 💰 Deposit block → Collect the deposit → enter the Amount received → confirm; a deposit receipt prints.
- Entrée / sortie (état des lieux) :Move-in / move-out (inventory): ▶ Réaliser l'entrée ou ⏹ Réaliser la sortie → relevez les compteurs, les clés, l'état des équipements → Enregistrer & envoyer le pack (envoie au locataire) ou Enregistrer seulement.▶ Do the move-in or ⏹ Do the move-out → record meters, keys, equipment condition → Record & send the pack (emails the tenant) or Record only.
- Générer & faire signer le bail :Generate & e-sign the lease: bloc Documents → choisissez la langue et la Ville de signature → 📦 Pack locataire pour imprimer/PDF, puis ✍️ Signer en ligne pour envoyer un lien. Une fois signé, 📄 Voir le document signé.the Documents block → choose the language and Signing city → 📦 Tenant pack to print/PDF, then ✍️ Sign online to send a link. Once signed, 📄 View signed document.
- Terminer & régler la caution :End & settle the deposit: Mettre fin au contrat → Régler la caution → ajoutez les Déductions (et cochez « Déduire les loyers impayés ») → Enregistrer & imprimer le décompte.End the contract → Settle deposit → add Deductions (and tick "Deduct outstanding rent") → Record & print settlement.
Transactions 🖥️ 📱
Le journal des revenus et des dépenses de la propriété. Saisissez, recherchez, filtrez et classez vos mouvements. Les loyers encaissés depuis un contrat apparaissent ici automatiquement. The property's income & expense ledger. Record, search, filter and classify your movements. Rent recorded from a contract shows up here automatically.
- 1+ AjouterAdd — nouvelle transaction. À côté, ⬇ Excel et ⬇ Justif. ZIP exportent les données et les justificatifs.new transaction. Beside it, ⬇ Excel and ⬇ Proofs ZIP export the data and proof files.
- 2FiltresFilters — Tout / Revenus / Dépenses.All / Income / Expenses.
- 3RechercheSearch — par description ou catégorie.by description or category.
- 4LignesRows — groupées par jour (Aujourd'hui/Hier/date). ↗ vert = revenu, ↘ = dépense. Touchez pour modifier.grouped by day (Today/Yesterday/date). ↗ green = income, ↘ = expense. Tap to edit.
Pas à pasStep by step
- Ajouter :Add: + Ajouter → choisissez Dépense ou Revenu → montant, date, description (la catégorie se propose seule grâce aux mots-clés) → Enregistrer.+ Add → pick Expense or Income → amount, date, description (the category is suggested from keywords) → Save.
- Rattacher au bien :Link to the property: choisissez une Unité et un Contrat / locataire ; pour un revenu, réglez la Nature (Loyer, Réinvesti, Don, Autre) ou détaillez la ventilation.pick a Unit and a Contract / tenant; for income, set the Nature (Rent, Reinvested, Gift, Other) or break down the split.
- Classer en masse (web) :Bulk-classify (web): cochez plusieurs lignes → barre d'outils → Loyer / Réinvesti / Don / Autre.tick several rows → toolbar → Rent / Reinvested / Gift / Other.
RappelsReminders 🖥️ 📱
Votre liste de tâches automatique : loyers en retard, entrées/sorties à réaliser, baux qui se terminent, cautions à rembourser, transactions attendues et échéances récurrentes. Chaque ligne propose l'action qui la résout. Your automatic to-do list: overdue rent, move-ins/outs to do, ending leases, deposits to refund, expected transactions and recurring due dates. Each row offers the action that clears it.
Relances de loyer à validerRent reminders to validate (3)
Retard ≥ 5 jOverdue ≥ 5 d ✉️ Tout envoyerEmail allLoyers en retardOverdue rent (2)
Baux se terminant bientôtLeases ending soon (1)
- 1File de relancesReminder queue — réglez le seuil « Retard ≥ n j », puis ✉️ par ligne ou « Tout envoyer par email » / 💬 WhatsApp.set the "Overdue ≥ n d" threshold, then ✉️ per row or "Email all" / 💬 WhatsApp.
- 2✓ EncaisserMark paid — enregistre le loyer dû et crée la transaction de revenu automatiquement.records the rent due and posts the income transaction automatically.
- 3🔄 RenouvelerRenew — nouvelle date de fin (+6/+12/+24 mois) et, en option, envoi du nouveau bail par email. ✕ masque le rappel.new end date (+6/+12/+24 mo) and, optionally, email the new lease. ✕ dismisses the reminder.
💸 Cautions à rembourserDeposits to refund
Bouton « Rembourser » → règlement de la caution."Refund" button → deposit settlement.
▶⏹ Entrées / sortiesMove-ins / outs
Mène au contrat pour faire l'état des lieux.Jumps to the contract to run the inventory.
🧾 Transactions attenduesExpected transactions
Charges récurrentes non encore saisies.Recurring charges not yet recorded.
🔍 Inspections trimestriellesQuarterly inspections
Rappel de visite du bien, avec 💬 WhatsApp.Property-visit reminder, with 💬 WhatsApp.
CatégoriesCategories 🖥️ 📱
Classez vos transactions et fixez des budgets mensuels par poste. Les mots-clés permettent le classement automatique. Vous pouvez partir des catégories par défaut et les adapter. Classify your transactions and set monthly budgets per line. Keywords enable auto-matching. You can start from the default categories and adapt them.
- 1Catégories par défautDefault categories — crée d'un coup un jeu prêt à l'emploi (Loyer, Charges, Travaux…).seeds a ready-made set at once (Rent, Charges, Works…).
- 2Carte catégorieCategory card — couleur, portée, fréquence, usage et budget. ✎ pour modifier.color, scope, frequency, purpose and budget. ✎ to edit.
- 3PortéeScope — Dépense / Revenu / Les deux ; plus la fréquence et l'usage métier.Expense / Income / Both; plus the frequency and business purpose.
- 4Budget & mots-clésBudget & keywords — le budget alimente le graphique du tableau de bord ; les mots-clés déclenchent le classement auto.the budget feeds the dashboard chart; keywords drive auto-matching.
UnitésUnits 🖥️ 📱
Les unités louables de la propriété (chambres, studios, place de parking…). Suivez l'occupation, ajoutez rapidement une unité, et renseignez loyer, caution et équipements — qui pré-remplissent ensuite les contrats. The property's rentable units (rooms, studios, parking space…). Track occupancy, quickly add a unit, and fill rent, deposit and equipment — which then pre-fill contracts.
- 1OccupationOccupancy — unités occupées et loyers/mois en un coup d'œil.occupied units and rent/month at a glance.
- 2Ajout rapideQuick add — tapez un nom → « Ajouter ». Détails et équipements se règlent ensuite en éditant.type a name → "Add". Details and equipment are set afterwards by editing.
- 3FiltresFilters — Toutes / Occupées / Vacantes.All / Occupied / Vacant.
- 4Carte d'unitéUnit card — statut Occupée / Vacante / 🛠️ Travaux, le locataire et le loyer. Touchez → modifier (loyer, caution, équipements).Occupied / Vacant / 🛠️ Maintenance status, the tenant and the rent. Tap → edit (rent, deposit, equipment).
Rapport bailleurLandlord report 🖥️ 📱
Le rapport financier complet d'une propriété : compte de résultat, taux d'encaissement, occupation, et des indicateurs d'investisseur (rendement, NOI, DSCR, LTV…). Exportable en PDF. A property's full financial report: P&L, rent-collection rate, occupancy, and investor metrics (yield, NOI, DSCR, LTV…). Exportable to PDF.
Analyse avancéeAdvanced analysis — NOI · DSCR · LTV
Prévision sur 12 mois12-month forecast
- 1🖨️ Télécharger le PDFDownload PDF — le rapport complet en PDF. 📖 Guide explique les hypothèses.the full report as PDF. 📖 Guide explains the assumptions.
- 2PériodePeriod — Ce mois / Cette année / Année à date / 12 mois. Filtres unité, encaissement, fréquence dessous.Month / Year / YTD / 12 mo. Unit, collection and frequency filters below.
- 3KPI — Revenus, Dépenses, Trésorerie nette (avec ▲/▼ vs période précédente), encaissement, occupation, cautions.Income, Expenses, Net cashflow (with ▲/▼ vs previous), collection, occupancy, deposits.
- 4Analyse avancée & hypothèsesAdvanced analysis & assumptions — saisissez valeur du bien, dette, service de la dette pour calculer rendement/DSCR/LTV et la prévision.enter property value, debt, debt service to compute yield/DSCR/LTV and the forecast.
StatistiquesStatistics 🖥️ 📱
La vue de tout votre portefeuille (toutes propriétés confondues), contrairement au Rapport qui concerne une seule propriété. En lecture seule. The view across your whole portfolio (all properties), unlike the Report which is about a single property. Read-only.
Par propriétéBy property
- 1Tuiles globalesGlobal tiles — nombre de propriétés, d'unités (et taux d'occupation), de contrats actifs, et de loyers en retard sur l'ensemble.count of properties, units (and occupancy), active contracts, and overdue rents across everything.
- 2Tableau « Par propriété »"By property" table — une ligne par bien : unités, contrats, loyer/mois, impayés, cautions — chacun dans sa propre devise.one row per property: units, contracts, rent/mo, outstanding, deposits — each in its own currency.
Objectifs & ÉpargneGoals & Savings 🖥️ 📱
Un simulateur d'épargne personnel (indépendant des propriétés) : construisez un budget mensuel, ajoutez des changements programmés et des mouvements ponctuels, fixez des objectifs, et voyez mois par mois quand vous les atteignez. A personal savings simulator (independent of properties): build a monthly budget, add scheduled changes and one-off movements, set goals, and see month-by-month when you reach them.
Budget mensuelMonthly budget
🎯 Objectif : 2ᵉ maisonGoal: 2nd house
- 1📤 ExporterExport — l'estimation en Excel. « + Nouvelle » crée plusieurs estimations enregistrées.the estimation to Excel. "+ New" creates several saved estimations.
- 2Budget mensuelMonthly budget — revenus, épargne de départ, charges détaillées ; l'app calcule l'épargne nette et le taux.income, starting savings, itemised charges; the app computes net savings and rate.
- 3🎯 ObjectifsGoals — nom, date cible et montants à réunir. Ajoutez aussi des changements programmés et mouvements ponctuels.name, target date and amounts to gather. Also add scheduled changes and one-off movements.
- 4SimulationSimulation — combien épargner par mois, faisabilité ✅/❌, et la projection cumulée mois par mois.how much to save per month, feasibility ✅/❌, and the cumulative month-by-month projection.
Modèles de documentsDocument templates 🖥️ Web seulementWeb only
Rédigez une fois vos documents réutilisables (bail, règlement intérieur, états des lieux) avec un éditeur visuel et des variables ({{locataire}}, {{loyer}}…). Ils sont ensuite proposés sur chaque contrat, pré-remplis. Author your reusable documents once (lease, house rules, inventories) with a visual editor and variables ({{tenant}}, {{rent}}…). They're then offered on every contract, pre-filled.
## Article 1
Le locataireTenant {{locataire}} …
Tapez « / » pour insérerType "/" to insert
- 1Modèles par défautDefault templates — crée un jeu prêt à l'emploi (bail, règlement, états des lieux).seeds a ready-made set (lease, rules, inventories).
- 2Liste des modèlesTemplate list — par type, avec langue et n° de version. Cliquez pour éditer, 🗑 pour supprimer.by type, with language and version number. Click to edit, 🗑 to delete.
- 3Éditeur & variablesEditor & variables — titres, articles, saut de page ; tapez « / » pour insérer une variable qui se remplira à la génération.titles, articles, page breaks; type "/" to insert a variable that fills in at generation.
- 4Enregistrer une versionSave a version — chaque enregistrement crée une nouvelle version datée. 👁 Aperçu pour imprimer un exemple.each save creates a new dated version. 👁 Preview to print a sample.
Signature en ligne (côté locataire)Online signature (tenant side) 🔗 Lien publicPublic link
Quand vous envoyez un pack « Signer en ligne », le locataire reçoit un lien. Il ouvre cette page (sans compte), lit le document, coche « Lu et approuvé », signe au doigt/souris, et vous recevez la copie signée. When you send a "Sign online" pack, the tenant gets a link. They open this page (no account), read the document, tick "Read and approved", sign with finger/mouse, and you receive the signed copy.
# CONTRAT DE BAIL … Article 1 …
- 1Le documentThe document — l'intégralité du pack s'affiche, à lire avant de signer.the whole pack is shown, to read before signing.
- 2Lu et approuvéRead and approved — case obligatoire avant de pouvoir signer.a required checkbox before signing is allowed.
- 3Signature — nom complet + signature tracée (bouton « Effacer » pour recommencer).full name + a drawn signature ("Clear" to redo).
- 4✍️ Signer et envoyerSign and submit — horodate la signature ; vous récupérez la copie signée « Lu et approuvé » dans le contrat.timestamps the signature; you get the signed "Read and approved" copy in the contract.
ParamètresSettings 🖥️ 📱
Tout ce qui concerne la propriété et votre compte : informations du bien, membres et leurs droits, sécurité (double authentification), mot de passe/e-mail, sauvegardes et journal d'audit. Everything about the property and your account: property info, members and their rights, security (two-factor), password/email, backups and the audit log.
- 1SectionsSections — Propriété, Membres & accès, Sécurité, Compte, Données, Journal d'audit (admins).Property, Members & access, Security, Account, Data, Audit log (admins).
- 2Code d'invitationInvite code — 📋 copier pour inviter, 🔄 régénérer pour invalider l'ancien.📋 copy to invite, 🔄 regenerate to invalidate the old one.
- 3Rôle du membreMember role — Propriétaire / Admin / Membre / Lecteur ; 🗑 pour retirer.Owner / Admin / Member / Viewer; 🗑 to remove.
- 4Accès aux modulesModule access — cochez les écrans autorisés pour ce membre (Tableau de bord et Réglages restent toujours accessibles).tick the screens this member may see (Dashboard and Settings always stay available).
🔐 Sécurité (2FA)Security (2FA)
« Configurer la 2FA » → scannez le QR → entrez le code → notez vos codes de récupération."Set up 2FA" → scan the QR → enter the code → save your recovery codes.
👤 CompteAccount
Changer mot de passe / e-mail, exporter vos données, supprimer le compte.Change password / email, export your data, delete the account.
💾 Données & sauvegardesData & backups
« Sauvegarder maintenant » + téléchargement JSON (sauvegardes nocturnes gardées 30 j)."Back up now" + JSON download (nightly backups kept 30 days).
📋 Journal d'auditAudit log
Qui a fait quoi. Exportable en CSV/Excel (repliable sur mobile).Who did what. Exportable to CSV/Excel (collapsible on mobile).
🛡️ Super-administrationSuper-admin 🖥️ RéservéRestricted
Réservé à l'exploitant de la plateforme (pas aux bailleurs). Supervision de tous les comptes et propriétés : statistiques globales, gestion de la flotte, utilisateurs, audit des accès, et journal global. For the platform operator only (not landlords). Oversight of all accounts and properties: global stats, fleet management, users, access audit, and a global log.
Toutes les propriétésAll properties (24)
- 1OngletsTabs — Vue d'ensemble · Flotte · Utilisateurs · Accès · Audit global.Overview · Fleet · Users · Access · Global audit.
- 2⛔/✅ Suspendre / RéactiverSuspend / Re-enable — bloque ou rouvre l'accès à une propriété.blocks or reopens access to a property.
- 3⚙️ IncarnerImpersonate / 🔒 Audit accèsAccess audit — agir en tant que propriétaire pour dépanner ; auditer/gérer les accès.act as the owner to troubleshoot; audit/manage access.
- 4🗑 Sauvegarder puis supprimerBack up then delete — télécharge une sauvegarde Excel avant de supprimer la propriété.downloads an Excel backup before deleting the property.
Architecture 🖥️ 📱 ⚙️
Comment l'application est construite « sous le capot » : un backend unique en C#/.NET, une logique métier partagée en TypeScript, et trois clients (web, bureau, mobile) qui parlent tous à la même API. C'est ce qui garantit la parité entre les plateformes. How the app is built "under the hood": a single C#/.NET backend, shared business logic in TypeScript, and three clients (web, desktop, mobile) all talking to the same API. That's what keeps the platforms in parity.
Comment ça circuleHow it flows
- Une seule logique métier :One shared codebase: les trois clients importent le même paquet @housebudget/core (TypeScript) — c'est ce qui garantit la parité entre web, bureau et mobile.all three clients import the same @housebudget/core package (TypeScript) — that's what keeps web, desktop and mobile in parity.
- Appel à l'API :Calling the API: chaque client parle à l'API en HTTPS/JSON. Sur le serveur, Caddy reçoit la requête et gère le certificat HTTPS automatiquement.each client talks to the API over HTTPS/JSON. On the server, Caddy receives the request and manages the HTTPS certificate automatically.
- Le backend :The backend: Caddy transmet à hb-api (C# / .NET 8), qui applique les règles métier et lit/écrit dans PostgreSQL via EF Core.Caddy forwards to hb-api (C# / .NET 8), which applies the business rules and reads/writes PostgreSQL through EF Core.
- Bureau & mobile :Desktop & mobile: le bureau (.exe) est le frontend React empaqueté avec Tauri (coquille native en Rust) ; le mobile est le même métier via Expo / React Native.the desktop (.exe) is the React frontend packaged with Tauri (a native Rust shell); mobile is the same logic via Expo / React Native.
Architecture 3-tiers (et non 2-tiers)3-tier architecture (not 2-tier)
HouseBudget est une architecture 3-tiers : la présentation (les clients), l'application/logique (l'API) et les données (la base) sont trois couches physiquement séparées. Ce n'est pas du 2-tiers : aucun client ne parle directement à la base de données — tout passe par l'API, qui centralise les règles métier et la sécurité. HouseBudget is a 3-tier architecture: presentation (the clients), application/logic (the API) and data (the database) are three physically separated layers. It is not 2-tier: no client talks to the database directly — everything goes through the API, which centralises business rules and security.
Les couches du backend (Api → Infrastructure → Domain)Backend layers (Api → Infrastructure → Domain)
Détail du Tier 2. Le backend est découpé en trois couches emboîtées. Une couche ne dépend que de la couche intérieure : l'Api s'appuie sur l'Infrastructure, qui s'appuie sur le Domaine. Le Domaine (les entités) ne dépend de rien — et ce sens ne s'inverse jamais. A closer look at Tier 2. The backend is split into three nested layers. A layer depends only on the inner one: Api builds on Infrastructure, which builds on the Domain. The Domain (the entities) depends on nothing — and that direction never reverses.
Diagramme de classes (modèle de données)Class diagram (data model)
Le modèle de données complet du domaine : chaque entité avec ses attributs et ses relations (cardinalités). Les noms sont ceux du code C# (universels). Faites défiler pour voir l'ensemble. The complete domain data model: every entity with its attributes and relations (cardinalities). Names are the C# code identifiers (universal). Scroll to see it all.
Énumérations (types à valeurs fixes utilisés ci-dessus) :Enumerations (fixed-value types used above):
Draft · Active · Ended
Expense · Income
Income · Expense · Both
Variable · Monthly · Quarterly · SemiAnnual · Yearly
General · RentIncome · Deposit · RoomImprovement
Owner · Admin · Member · Viewer
None · Daily · Weekly · Monthly · Yearly
Unclassified · Rent · Reinvested · Gift · Other
Pending · Signed · Declined
Contract · CheckIn · CheckOut · HouseRules
Diagramme entité-relation (ERD)Entity-Relationship Diagram (ERD)
La même information, vue « base de données » : les tables, leurs clés (PK = clé primaire, FK = clé étrangère) et les cardinalités en pattes-d'oie. Le diagramme de classes ci-dessus liste tous les attributs ; l'ERD met en avant les clés et les liens. The same information, seen as a "database": the tables, their keys (PK = primary key, FK = foreign key) and crow's-foot cardinalities. The class diagram above lists every attribute; the ERD highlights keys and links.
Diagramme de séquence — signature du bail en ligneSequence diagram — online lease signing
Le déroulé d'un des flux les plus caractéristiques : le bailleur envoie le pack, le locataire signe en ligne, et la copie signée revient — sans que le locataire ait de compte. One of the most distinctive flows: the landlord sends the pack, the tenant signs online, and the signed copy comes back — with no tenant account.
Cas d'utilisation (acteurs & rôles)Use cases (actors & roles)
Qui fait quoi, selon le rôle. Les droits sont réglables finement par module dans les Paramètres. Who does what, by role. Rights are finely tunable per module in Settings.
Diagramme d'états — cycle de vie d'un contratState diagram — contract lifecycle
Les états par lesquels passe un bail, de sa création à sa clôture. Le statut principal (Brouillon → Actif → Terminé) englobe le parcours interne quand il est actif : entrée (état des lieux) → occupation (loyers, caution, révision, reconduction) → sortie → puis règlement de la caution avant la clôture. The states a lease goes through, from creation to closure. The main status (Draft → Active → Ended) wraps the inner journey while active: move-in (inventory) → occupancy (rent, deposit, revision, renewal) → move-out → then deposit settlement before closing.
Diagramme d'activité — création d'un bailActivity diagram — creating a lease
Le parcours pas à pas, avec ses points de décision : choix de l'unité (disponible ?), saisie des informations, champs optionnels, contrôle des champs requis (unité + locataire + loyer), enregistrement, puis envoi facultatif du bail par email. Les libellés sont bilingues (FR puis EN). The step-by-step journey with its decision points: choosing the unit (available?), entering the details, optional fields, checking the required fields (unit + tenant + rent), saving, then optionally emailing the lease. Labels are bilingual (French then English).
Diagramme de déploiement (conteneurs Docker sur Hetzner)Deployment diagram (Docker containers on Hetzner)
Où tourne réellement l'application. Tout est conteneurisé (Docker) sur un serveur Hetzner unique, derrière un Caddy partagé qui gère le HTTPS et route chaque sous-domaine. La base PostgreSQL est partagée (une base isolée par application). Le backend contacte deux services externes : Firebase (notifications push) et le SMTP (e-mails). Where the app actually runs. Everything is containerised (Docker) on a single Hetzner server, behind a shared Caddy that handles HTTPS and routes each subdomain. The PostgreSQL database is shared (one isolated database per app). The backend calls two external services: Firebase (push notifications) and SMTP (email).
git push → sur le serveur git pull + docker compose up -d --build. Le guide (ce document) se met à jour d'un simple git pull — le conteneur guide le sert directement depuis le dépôt.
Updating: git push → on the server git pull + docker compose up -d --build. The guide (this document) updates with a plain git pull — the guide container serves it straight from the repo.Vous connaissez maintenant chaque écran de HouseBudget. Astuce : imprimez ce guide en PDF (Ctrl+P) pour le partager avec votre équipe.You now know every screen of HouseBudget. Tip: print this guide to PDF (Ctrl+P) to share it with your team.