Guide d'utilisation · Web · Bureau · MobileUser guide · Web · Desktop · Mobile

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.

📄 Contrats & signatureLeases & e-signature 💶 Loyers & cautionsRent & deposits 🔔 RelancesReminders 📊 RapportsReports 🎯 ÉpargneSavings
💡
Astuce : utilisez le bouton FR / EN en haut à gauche pour changer la langue de tout le guide, et l'icône pour le thème clair/sombre. Le guide est aussi imprimable (Ctrl+P) en PDF. Tip: use the FR / EN button at the top-left to switch the whole guide's language, and the icon for light/dark theme. The guide also prints to PDF (Ctrl+P).
01 · Prise en mainGetting started

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.

Écran de connexion — Web & BureauSign-in screen — Web & Desktop
budget.mfspace.lu
HouseBudget
Gérez le budget de votre maison, ensemble.Manage your home's budget, together.
Se connecterSign inCréer un compteCreate account
E-mailvous@exemple.com
Mot de passePassword••••••••  👁️
Se connecterSign in
Mot de passe oublié ?Forgot password?
1 2 3 4 5 6
  1. 1
    Se connecterSign inl'onglet par défaut : entrez e-mail + mot de passe.the default tab: enter your email + password.
  2. 2
    Créer un compteCreate accountbascule vers l'inscription ; un champ « Votre nom » apparaît.switches to sign-up; a "Your name" field appears.
  3. 3
    E-mailvotre adresse e-mail (identifiant).your email address (your login).
  4. 4
    Mot de passePasswordl'icône 👁️ affiche/masque le texte saisi.the 👁️ icon shows/hides what you type.
  5. 5
    Se connecter / Créer mon compteSign in / Create my accountvalide le formulaire.submits the form.
  6. 6
    Mot 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

  1. 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.
  2. 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.
  3. 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.
📱
Sur mobile :On mobile: même écran (bouton Se connecter / Créer un compte en haut). Après connexion, l'app ouvre la liste de vos propriétés.the same screen (a Sign in / Create account toggle at the top). After signing in, the app opens your list of properties.
02 · Prise en mainGetting started

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.

Sélecteur de propriété & créationProperty picker & creation
budget.mfspace.lu/#/houses
Bienvenue, Steve 👋Welcome, Steve 👋
DéconnexionLog out
CréerCreateRejoindreJoin
GénéralGeneralLe bienPropertyÉquip.Equip.
Nom de la propriétéProperty nameRésidence du ParcParkview Residence
DeviseCurrencyXAF · Franc CFA
Créer et entrerCreate and enter
Vos propriétésYour properties (2)
🏠
Résidence du ParcParkview Residence
XAF · Code HB-7A2K9
🗑
🏠
Villa Bonapriso
XAF · Code HB-M31Q
🗑
1 2 3 4 5 6
  1. 1
    Liste des propriétésProperty listtouchez une ligne (ou la flèche →) pour entrer dans la propriété.tap a row (or the → arrow) to open the property.
  2. 2
    ÉditerEditmodifie la propriété (admin) : nom, bailleur, défauts de bail…edit the property (admin): name, landlord, lease defaults…
  3. 3
    🗑 SupprimerDeletesupprime la propriété et ses données (propriétaire seul, confirmation).deletes the property and its data (owner only, with confirmation).
  4. 4
    Créer / RejoindreCreate / Joinnouvelle propriété, ou entrer un code d'invitation.new property, or enter an invite code.
  5. 5
    Nom & deviseName & currencyles onglets « Le bien » / « Équipements » sont facultatifs.the "Property" / "Equipment" tabs are optional.
  6. 6
    Créer et entrerCreate and entercré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

  1. 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.
  2. 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.
  3. 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).
📱
Sur mobile :On mobile: même liste (titre « Bonjour Steve 👋 »). Le formulaire de création propose un dépliant « + Détails du bien (facultatif) » avec les mêmes champs et les puces d'équipements.the same list (titled "Hello Steve 👋"). The create form has a "+ Property details (optional)" expander with the same fields and equipment chips.
04 · GestionManagement

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.

Tableau de bord — WebDashboard — Web
budget.mfspace.lu/#/dashboard
📊📄💸🏷️🚪📈⚙️
Tableau de bordDashboard
Vue d'ensemble des 6 derniers mois.Overview of the last 6 months.
⚠️ 2 loyers en retard2 overdue rents
Voir →View →
1 contrat bientôt échu1 lease ending soon
Voir →View →
PortefeuillePortfolio
6/8
Risque loyersRent risk
2
CautionsDeposits
6
ContratsContracts
6
Position de trésorerieCash position
Revenu brutGross income3.1M
Cash distribuableFree cash2.3M
EncaissementCollection
TauxRate86 %
1 2 3 4
  1. 1
    Cartes d'alerteAlert cardsactions à 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.
  2. 2
    Tuiles clésKey tilesPortefeuille (unités occupées), Risque loyers, Cautions actives, Contrats actifs.Portfolio (occupied units), Rent risk, Active deposits, Active contracts.
  3. 3
    Groupes d'indicateursKPI groupsTrésorerie, Résultat, Encaissement, Arriérés — les chiffres de pilotage.Cash, P&L, Collection, Arrears — your steering figures.
  4. 4
    GraphiquesChartsRevenus 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).
📱
Sur mobile (« Résumé ») :On mobile ("Summary"): mêmes informations empilées en une colonne, avec une carte « Cash distribuable » en tête et une cloche 🔔 en haut à droite vers les Rappels. Tirez vers le bas pour rafraîchir.the same information stacked in one column, with a "Free cash" card on top and a 🔔 bell top-right to Reminders. Pull down to refresh.
05 · GestionManagement

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.

Liste des contrats & créationContract list & creation
budget.mfspace.lu/#/contracts
📊📄💸🏷️🚪
ContratsContracts
Locataires, loyers, cautions et échéances.Tenants, rent, deposits and due dates.
⬇ Excel
 
+ Nouveau contratNew contract
Awa Ndiaye
 ActifActive En retardOverdue 👥 +1
ResteDue 150 000
Caution restanteDeposit left 300 000
🚪 Studio 2 · 150 000/moismo · DébutStart 01/03/2026
Paiements & actions ▾Payments & actions ▾ 💬 
1 2 3 4 5
  1. 1
    ⬇ Excelexporte tous les contrats en tableur.exports all contracts to a spreadsheet.
  2. 2
    + Nouveau contratNew contractouvre le formulaire (unité, locataire, loyer, caution…).opens the form (unit, tenant, rent, deposit…).
  3. 3
    Nom + statutName + statuspastille Brouillon / Actif / Terminé, « En retard », et 👥 pour les colocataires.Draft / Active / Ended pill, "Overdue", and 👥 for co-tenants.
  4. 4
    Solde & cautionBalance & depositReste / Avance / À jour, et la caution encore détenue.Due / Advance / Up to date, and the deposit still held.
  5. 5
    Paiements & actionsPayments & actionsdéplie le détail du contrat (ci-dessous). 💬 WhatsApp, ✎ modifier.expands the contract detail (below). 💬 WhatsApp, ✎ edit.
Détail du contrat (déplié) — cycle de vie, caution, loyers, documentsContract detail (expanded) — lifecycle, deposit, rent, documents
#/contracts › Awa Ndiaye
Cycle de vie du bailTenancy lifecycle
EntréeMove-inOccupationOccupancySortieMove-outCautionDepositClôturéClosed
Réaliser la sortieDo the move-out
💰 CautionDeposit  À encaisserTo collect
ConvenueAgreed
300k
EncaisséeCollected
0
DétenueHeld
0
Remb.Refund.
0
Encaisser la cautionCollect the deposit 🧾 ReçuReceipt
Enregistrer un loyerRecord a rent payment
MoisMonthMarsMarMontantAmount150kEncaisserRecord
📦 Pack locataire · SignatureTenant pack · Signature
🖨️ PDF🗜 ZIP✉️ Email✍️ Signer en ligneSign online
6 7 8 9
  1. 6
    Cycle de vieLifecycleEntré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.
  2. 7
    💰 CautionDepositConvenue / 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.
  3. 8
    Enregistrer un loyerRecord a rent paymentchoisissez mois/année/montant → « Encaisser ». L'historique dessous propose la 🧾 quittance.pick month/year/amount → "Record". The history below offers the 🧾 receipt.
  4. 9
    Documents & signatureDocuments & signatureimprimer/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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Terminer & régler la caution :End & settle the deposit: Mettre fin au contratRégler la caution → ajoutez les Déductions (et cochez « Déduire les loyers impayés ») → Enregistrer & imprimer le décompte.End the contractSettle deposit → add Deductions (and tick "Deduct outstanding rent") → Record & print settlement.
📱
Sur mobile :On mobile: identique, mais chaque formulaire (nouveau contrat, entrée/sortie, règlement de caution) s'ouvre en feuille glissant du bas. Le détail du contrat s'ouvre en touchant la carte.the same, but each form (new contract, move-in/out, deposit settlement) opens as a bottom sheet. Tap a card to open its detail.
06 · GestionManagement

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.

Transactions — liste & saisieTransactions — list & entry
#/transactions
📊📄💸🏷️🚪
Transactions
⬇ Excel
 
+ AjouterAdd
ToutAllRevenusIncomeDépensesExpenses
🔎 Rechercher…🔎 Search…
Aujourd'huiToday
Loyer Awa — MarsRent Awa — Mar
Loyer encaissé · 🚪 Studio 2Rent income · 🚪 Studio 2
+150 000
PlomberiePlumbing
Entretien · PonctuelMaintenance · One-off
−45 000
1 2 3 4
  1. 1
    + AjouterAddnouvelle 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.
  2. 2
    FiltresFiltersTout / Revenus / Dépenses.All / Income / Expenses.
  3. 3
    RechercheSearchpar description ou catégorie.by description or category.
  4. 4
    LignesRowsgroupé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

  1. 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.
  2. 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.
  3. 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.
📱
Sur mobile :On mobile: le bouton central de la barre du bas ouvre directement « Nouvelle transaction ». Le formulaire s'ouvre en feuille du bas.the central button on the bottom bar opens "New transaction" directly. The form is a bottom sheet.
07 · GestionManagement

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.

Rappels — file d'attente & sectionsReminders — queue & sections
#/reminders
RappelsReminders
Loyers en retard, fins de bail et échéances.Overdue rent, ending leases and due dates.
Relances de loyer à validerRent reminders to validate (3)
Retard ≥ 5 jOverdue ≥ 5 d ✉️ Tout envoyerEmail all
Awa Ndiaye · 🚪 Studio 2
150 000 ✉️💬
 
Loyers en retardOverdue rent (2)
Awa · 15 j
EncaisserMark paid 💬
 
Baux se terminant bientôtLeases ending soon (1)
Jean · Dans 12 jIn 12 d
🔄 RenouvelerRenew 
1 2 3
  1. 1
    File de relancesReminder queueré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. 2
    EncaisserMark paidenregistre le loyer dû et crée la transaction de revenu automatiquement.records the rent due and posts the income transaction automatically.
  3. 3
    🔄 RenouvelerRenewnouvelle 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.

📱
Sur mobile :On mobile: mêmes sections. On y accède depuis Plus, la cloche 🔔 du Résumé, ou une carte d'alerte du tableau de bord. Le rappel disparaît une fois l'action faite.the same sections. Reached from More, the Summary 🔔 bell, or a dashboard alert card. A reminder clears once its action is done.
08 · GestionManagement

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.

Catégories — liste & formulaireCategories — list & form
#/categories
CatégoriesCategories
Catégories par défautDefault categories
 
+ AjouterAdd
LoyerRent
Revenu · Mensuel · Loyer encaisséIncome · Monthly · Rent income
EntretienMaintenance
Dépense · Variable · 80 000/moisExpense · Variable · 80,000/mo
Nouvelle catégorieNew category
NomNameCharges eauWater charges
DépenseExpenseRevenuIncomeDeuxBoth
Budget mensuelMonthly budget20 000
Mots-clésKeywordseau, facturewater, bill
EnregistrerSave
1 2 3 4
  1. 1
    Catégories par défautDefault categoriescrée d'un coup un jeu prêt à l'emploi (Loyer, Charges, Travaux…).seeds a ready-made set at once (Rent, Charges, Works…).
  2. 2
    Carte catégorieCategory cardcouleur, portée, fréquence, usage et budget. ✎ pour modifier.color, scope, frequency, purpose and budget. ✎ to edit.
  3. 3
    PortéeScopeDépense / Revenu / Les deux ; plus la fréquence et l'usage métier.Expense / Income / Both; plus the frequency and business purpose.
  4. 4
    Budget & mots-clésBudget & keywordsle 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.
📱
Sur mobile :On mobile: appui long sur une carte pour le mode sélection (Archiver / Copier vers une autre propriété). Le formulaire est une feuille du bas avec 8 couleurs et l'option « Charge récupérable ».long-press a card for select mode (Archive / Copy to another property). The form is a bottom sheet with 8 colors and a "Recoverable charge" option.
09 · GestionManagement

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.

Unités — occupation & ajoutUnits — occupancy & add
#/rooms
Unités louéesRental units
occupéesoccupied
6/8
Nom de l'unité (ex. Chambre 1, Studio)Unit name (e.g. Room 1, Studio) AjouterAdd
Toutes 8All 8Occupées 6Occupied 6Vacantes 2Vacant 2
🚪 Studio 2
OccupéeOccupied ✎
👤 Awa Ndiaye · 150 000 · À jourUp to date
🚪 Studio 5
VacanteVacant ✎
Aucun locataire actif.No active tenant.
1 2 3 4
  1. 1
    OccupationOccupancyunités occupées et loyers/mois en un coup d'œil.occupied units and rent/month at a glance.
  2. 2
    Ajout rapideQuick addtapez 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.
  3. 3
    FiltresFiltersToutes / Occupées / Vacantes.All / Occupied / Vacant.
  4. 4
    Carte d'unitéUnit cardstatut 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).
📱
Sur mobile :On mobile: même ligne d'ajout et mêmes filtres ; l'édition (nom, type, m², loyer, caution, équipements, « En travaux ») s'ouvre en feuille du bas.the same add row and filters; editing (name, type, m², rent, deposit, equipment, "Under maintenance") opens as a bottom sheet.
10 · Analyse & documentsAnalysis & documents

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.

Rapport bailleur — WebLandlord report — Web
#/reporting
Rapport bailleurLandlord report
📖 GuideGuide
 
🖨️ Télécharger le PDFDownload PDF
Ce moisMonthCette annéeThis yearYTD12 moismo
RevenusIncome
14.2M
DépensesExpenses
4.1M
Trésorerie netteNet cashflow
10.1M ▲
Taux d'encaissementCollection rate
92 %
OccupationOccupancy
75 %
Cautions détenuesDeposits held
1.8M
Analyse avancéeAdvanced analysis — NOI · DSCR · LTV
Rendement netNet yield 6.2%DSCR 1.8LTV 45%+ HypothèsesAssumptions
Prévision sur 12 mois12-month forecast
1 2 3 4
  1. 1
    🖨️ Télécharger le PDFDownload PDFle rapport complet en PDF. 📖 Guide explique les hypothèses.the full report as PDF. 📖 Guide explains the assumptions.
  2. 2
    PériodePeriodCe 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.
  3. 3
    KPIRevenus, 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.
  4. 4
    Analyse avancée & hypothèsesAdvanced analysis & assumptionssaisissez 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.
📱
Sur mobile :On mobile: mêmes indicateurs et graphiques en une colonne, avec les mêmes présélections de période et le dépliant « Hypothèses ».the same metrics and charts in one column, with the same period presets and the "Assumptions" expander.
11 · Analyse & documentsAnalysis & documents

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.

Statistiques du portefeuillePortfolio statistics
#/statistics
StatistiquesStatistics
Vue d'ensemble de tout votre portefeuille.Overview of your whole portfolio.
PropriétésProperties
2
UnitésUnits
14
Contrats actifsActive contracts
11
En retardOverdue
3
Par propriétéBy property
Résidence du ParcParkview6/81.8M150k
Villa Bonapriso5/62.1M0
1 2
  1. 1
    Tuiles globalesGlobal tilesnombre 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.
  2. 2
    Tableau « Par propriété »"By property" tableune 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.
12 · Analyse & documentsAnalysis & documents

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.

Simulateur d'épargneSavings simulator
#/savings
Objectifs & ÉpargneGoals & Savings
📤 ExporterExport
 
EnregistrerSave
Budget mensuelMonthly budget
Revenus / moisIncome / mo800 000Épargne de départStarting savings1 000 000
Épargne nette / moisNet savings / mo +300 000
🎯 Objectif : 2ᵉ maisonGoal: 2nd house
Date cibleTarget date12/2028Total15 000 000
Pour réunir 15 000 000 d'ici 12/2028, épargnezTo gather 15,000,000 by 12/2028, save 417 000/moismo
1 2 3 4
  1. 1
    📤 ExporterExportl'estimation en Excel. « + Nouvelle » crée plusieurs estimations enregistrées.the estimation to Excel. "+ New" creates several saved estimations.
  2. 2
    Budget mensuelMonthly budgetrevenus, é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. 3
    🎯 ObjectifsGoalsnom, 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.
  4. 4
    SimulationSimulationcombien é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.
13 · Analyse & documentsAnalysis & documents

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.

Éditeur de modèlesTemplate editor
#/documents
Modèles de documentsDocument templates
Modèles par défautDefault templates
  • 📄 Contrat de bailLease ·FR·v3
  • 📋 RèglementHouse rules
  • 🔑 État entréeCheck-in
  • 🚪 État sortieCheck-out
  • + Nouveau modèleNew template
    NomNameBail meubléFurnished leaseLangueLanguageFR
    Corps du documentDocument body# CONTRAT DE BAILLEASE
    ## Article 1
    Le locataireTenant {{locataire}} …
    Tapez « / » pour insérerType "/" to insert
    Enregistrer une versionSave a version
    1 2 3 4
    1. 1
      Modèles par défautDefault templatescrée un jeu prêt à l'emploi (bail, règlement, états des lieux).seeds a ready-made set (lease, rules, inventories).
    2. 2
      Liste des modèlesTemplate listpar 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. 3
      Éditeur & variablesEditor & variablestitres, 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.
    4. 4
      Enregistrer une versionSave a versionchaque 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.
    ℹ️
    Les modèles se créent et s'éditent sur le web/bureau. Sur mobile, vous les utilisez depuis le contrat (bloc Documents), mais l'édition des modèles se fait au clavier sur grand écran.Templates are created and edited on web/desktop. On mobile you use them from the contract (Documents block), but editing templates is done on a larger screen.
    14 · Analyse & documentsAnalysis & documents

    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.

    Page de signature du locataireTenant signing page
    budget.mfspace.lu/#/sign/…
     HouseBudget
    Contrat de bail — Awa NdiayeLease — Awa Ndiaye
    Merci de lire attentivement ; une copie vous sera envoyée par e-mail.Please read carefully; a copy will be emailed to you.
    [ Document affiché ici ][ Document shown here ]
    # CONTRAT DE BAIL … Article 1 …
     J'ai lu et j'approuve ce document.I have read and approve this document.
    Nom completFull nameAwa Ndiaye
    SignatureAwa N.
    ✍️ Signer et envoyerSign and submit
    1 2 3 4
    1. 1
      Le documentThe documentl'intégralité du pack s'affiche, à lire avant de signer.the whole pack is shown, to read before signing.
    2. 2
      Lu et approuvéRead and approvedcase obligatoire avant de pouvoir signer.a required checkbox before signing is allowed.
    3. 3
      Signaturenom complet + signature tracée (bouton « Effacer » pour recommencer).full name + a drawn signature ("Clear" to redo).
    4. 4
      ✍️ Signer et envoyerSign and submithorodate 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.
    15 · Compte & administrationAccount & admin

    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.

    Paramètres — membres & accèsSettings — members & access
    #/settings
    ParamètresSettings
    PropriétéPropertyMembres & accèsMembers & accessSécuritéSecurityCompteAccountDonnéesData
    Code d'invitation :Invite code: HB-7A2K9
    📋 CopierCopy 🔄 RégénérerRegenerate
    Marie K.
    marie@exemple.com
    Membre ▾Member ▾ 🗑
    Accès aux modulesModule access restreintrestricted
    1 2 3 4
    1. 1
      SectionsSectionsPropriété, Membres & accès, Sécurité, Compte, Données, Journal d'audit (admins).Property, Members & access, Security, Account, Data, Audit log (admins).
    2. 2
      Code d'invitationInvite code📋 copier pour inviter, 🔄 régénérer pour invalider l'ancien.📋 copy to invite, 🔄 regenerate to invalidate the old one.
    3. 3
      Rôle du membreMember rolePropriétaire / Admin / Membre / Lecteur ; 🗑 pour retirer.Owner / Admin / Member / Viewer; 🗑 to remove.
    4. 4
      Accès aux modulesModule accesscochez 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).

    📱
    Sur mobile :On mobile: mêmes cartes ; « Journal d'audit » et « Registre d'accès » sont repliables avec un bouton ⬇ Excel. Le téléchargement des sauvegardes (ZIP) reste sur le web.the same cards; "Audit log" and "Access register" are collapsible with a ⬇ Excel button. Backup (ZIP) download stays on the web.
    16 · Compte & administrationAccount & admin

    🛡️ 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.

    Console super-admin — flotteSuper-admin console — fleet
    #/admin
    🛡️ Super-administrationSuper-admin
    Vue d'ensembleOverviewParc (flotte)FleetUtilisateursUsersAccèsAccessAudit globalGlobal audit
    Toutes les propriétésAll properties (24)
    Résidence du ParcParkviewSteveActiveActive⛔ ⚙️ 🔒 🗑
    Villa BonaprisoMarieSuspend.Suspend.✅ ⚙️ 🔒 🗑
    1 2 3 4
    1. 1
      OngletsTabsVue d'ensemble · Flotte · Utilisateurs · Accès · Audit global.Overview · Fleet · Users · Access · Global audit.
    2. 2
      ⛔/✅ Suspendre / RéactiverSuspend / Re-enablebloque ou rouvre l'accès à une propriété.blocks or reopens access to a property.
    3. 3
      ⚙️ IncarnerImpersonate / 🔒 Audit accèsAccess auditagir en tant que propriétaire pour dépanner ; auditer/gérer les accès.act as the owner to troubleshoot; audit/manage access.
    4. 4
      🗑 Sauvegarder puis supprimerBack up then deletetélécharge une sauvegarde Excel avant de supprimer la propriété.downloads an Excel backup before deleting the property.
    🛡️
    La console super-admin n'apparaît que pour les comptes super-administrateur (icône 🛡️ dans le menu). Les actions « Incarner », « Suspendre » et « Supprimer » demandent toujours une confirmation.The super-admin console only appears for super-admin accounts (🛡️ icon in the menu). "Impersonate", "Suspend" and "Delete" always ask for confirmation.
    17 · TechniqueTechnical

    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.

    Schéma d'architecture — qui parle à quiArchitecture diagram — who talks to whom
    CLIENTS 🖥️ Web React · TypeScript budget.mfspace.lu 💻 Bureau (.exe) Desktop (.exe) Tauri v2 · Rust embarque le même React wraps the same React 📱 Mobile / Tablette Mobile / Tablet Expo · React Native · TS APK Android @housebudget/core · TypeScript logique métier partagée : types de l'API, calculs loyers / cautions, épargne, documents… shared business logic: API types, rent / deposit calculations, savings, documents… HTTPS · JSON (REST) SERVEUR HETZNER · Docker · 116.203.144.105 HETZNER SERVER · Docker · 116.203.144.105 Caddy — reverse proxy · HTTPS (Let's Encrypt) route les sous-domaines : api. · stock. · budget. · guide. routes the subdomains: api. · stock. · budget. · guide. hb-api — le Backend hb-api — the Backend C# · .NET 8 ASP.NET Core Minimal API + EF Core (ORM) authent. JWT · règles métier · PDF JWT auth · business rules · PDF guide.mfspace.lu page statique (ce guide) static page (this guide) PostgreSQL base de données (hb-db) database (hb-db) EF Core Tout est conteneurisé (Docker), fronté par un seul Caddy partagé avec les autres apps (api., stock.). Everything is containerised (Docker), fronted by a single Caddy shared with the other apps (api., stock.).
    TypeScriptweb, mobile, cœur partagéweb, mobile, shared core C# / .NET 8le backend (API)the backend (API) Rustcoquille Tauri (bureau)Tauri shell (desktop) SQL — PostgreSQL Caddyproxy + HTTPSproxy + HTTPS

    Comment ça circuleHow it flows

    1. 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.
    2. 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.
    3. 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.
    4. 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 3 tiersThe 3 tiers
    TIER 1 Présentation Presentation 🖥️ Web React · TS 💻 Bureau (.exe) 💻 Desktop (.exe) Tauri · Rust 📱 Mobile Expo · RN · TS HTTPS · JSON TIER 2 Application Application (logique) hb-api — C# / .NET 8 règles métier · authentification (JWT) · validation · PDF · EF Core business rules · authentication (JWT) · validation · PDF · EF Core Api → Infrastructure → Domain (architecture en couches) EF Core (ORM) TIER 3 Données Data PostgreSQL base de données (une par application, isolée) database (one per app, isolated)
    🧱
    À noter : à l'intérieur du Tier 2, le backend suit lui-même une architecture en couches (Api → Infrastructure → Domain) : les écrans appellent l'API, qui appelle l'infrastructure (accès données), qui s'appuie sur le domaine (les entités). Le sens des dépendances ne s'inverse jamais. Note: inside Tier 2, the backend itself follows a layered architecture (Api → Infrastructure → Domain): screens call the API, which calls infrastructure (data access), which builds on the domain (the entities). The dependency direction never reverses.

    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.

    Architecture en couchesLayered architecture
    Clients — Web · BureauDesktop · Mobile HTTPS HouseBudget.Api Endpoints (Minimal API) · Auth JWT · Validation · DTO Endpoints (Minimal API) · JWT auth · Validation · DTO HouseBudget.Infrastructure EF Core · DbContext · accès données · services EF Core · DbContext · data access · services HouseBudget.Domain Entités & énumérations Entities & enumerations ✦ aucune dépendance ✦ no dependencies dépend dedepends on dépend dedepends on PostgreSQL EF Core Les dépendances vont vers le cœur (Domaine) — jamais l'inverse. Dependencies point toward the core (Domain) — never the other way.

    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.

    Diagramme de classes UMLUML class diagram
    memberships
    1
    *
    members
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    1
    *
    User
    +Guid Id
    +string Email
    +string Name
    +string PasswordHash
    +string PreferredLanguage
    +bool IsSuperAdmin
    +bool Active
    +int MaxHouses
    +bool TwoFactorEnabled
    UserHouse
    +Guid Id
    +Guid UserId
    +Guid HouseId
    +HouseRole Role
    +string AllowedModulesJson
    +DateTime RevokedAt
    House
    +Guid Id
    +string Name
    +string Currency
    +string UniqueCode
    +bool Active
    +int BedroomCount
    +bool IsFurnished
    +string LandlordName
    +int DefaultPaymentDueDay
    +int DefaultNoticeMonths
    Room
    +Guid Id
    +Guid HouseId
    +string Name
    +double AreaM2
    +decimal MonthlyRent
    +decimal DepositAmount
    +bool UnderMaintenance
    Contract
    +Guid Id
    +Guid HouseId
    +Guid RoomId
    +string TenantFullName
    +string PhoneNumber
    +decimal MonthlyRent
    +decimal DepositAmount
    +int PaymentDueDay
    +int NoticeMonths
    +bool AutoRenew
    +ContractStatus Status
    +DateTime StartDate
    +DateTime EndDate
    +DateTime CheckInAt
    +DateTime CheckOutAt
    +decimal DepositCollectedAmount
    +decimal DepositRefundedAmount
    ContractPayment
    +Guid Id
    +Guid ContractId
    +int Year
    +int Month
    +decimal Amount
    +DateTime PaidDate
    Category
    +Guid Id
    +Guid HouseId
    +string Name
    +CategoryScope Scope
    +CategoryFrequency Frequency
    +CategoryPurpose Purpose
    +decimal MonthlyBudget
    +string Keywords
    +bool IsRecoverable
    Transaction
    +Guid Id
    +Guid HouseId
    +TransactionType Type
    +decimal Amount
    +string Description
    +DateTime OccurredOn
    +Guid CategoryId
    +Guid RoomId
    +Guid ContractId
    +Guid ContractPaymentId
    +RecurrenceFrequency Recurrence
    +IncomeUsageKind IncomeUsage
    SignatureRequest
    +Guid Id
    +Guid ContractId
    +string Token
    +SignatureStatus Status
    +string SignerName
    +string SignatureImage
    +DateTime SignedAt
    DocumentTemplate
    +Guid Id
    +Guid HouseId
    +DocumentTemplateType Type
    +string CountryCode
    +string LanguageCode
    +string Name
    +int LatestVersionNumber
    DocumentTemplateVersion
    +Guid Id
    +Guid TemplateId
    +int VersionNumber
    +string Body
    SavingsPlan
    +Guid Id
    +Guid UserId
    +string Name
    +string StartMonth
    +decimal MonthlyIncome
    +decimal MonthlyCharges
    +decimal StartingSavings
    +string Currency
    SavingsGoal
    +Guid Id
    +Guid PlanId
    +string Name
    +decimal TargetAmount
    SavingsChange
    +Guid Id
    +Guid PlanId
    +string FromMonth
    +decimal IncomeDelta
    +decimal ChargeDelta
    SavingsOneOff
    +Guid Id
    +Guid PlanId
    +string Month
    +decimal Amount

    Énumérations (types à valeurs fixes utilisés ci-dessus) :Enumerations (fixed-value types used above):

    ContractStatus
    Draft · Active · Ended
    TransactionType
    Expense · Income
    CategoryScope
    Income · Expense · Both
    CategoryFrequency
    Variable · Monthly · Quarterly · SemiAnnual · Yearly
    CategoryPurpose
    General · RentIncome · Deposit · RoomImprovement
    HouseRole
    Owner · Admin · Member · Viewer
    RecurrenceFrequency
    None · Daily · Weekly · Monthly · Yearly
    IncomeUsageKind
    Unclassified · Rent · Reinvested · Gift · Other
    SignatureStatus
    Pending · Signed · Declined
    DocumentTemplateType
    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.

    ERD — modèle relationnelERD — relational model
    USERguidIdPKstringEmailstringNameboolIsSuperAdminUSERHOUSEguidIdPKguidUserIdFKguidHouseIdFKHouseRoleRoleHOUSEguidIdPKstringNamestringCurrencystringUniqueCodeROOMguidIdPKguidHouseIdFKstringNamedecimalMonthlyRentCATEGORYguidIdPKguidHouseIdFKstringNameCategoryScopeScopeCONTRACTguidIdPKguidHouseIdFKguidRoomIdFKstringTenantFullNamedecimalMonthlyRentdecimalDepositAmountContractStatusStatusTRANSACTIONguidIdPKguidHouseIdFKguidCategoryIdFKguidRoomIdFKguidContractIdFKTransactionTypeTypedecimalAmountDOCUMENTTEMPLATEguidIdPKguidHouseIdFKDocumentTemplateTypeTypestringNameCONTRACTPAYMENTguidIdPKguidContractIdFKintYearintMonthdecimalAmountSIGNATUREREQUESTguidIdPKguidContractIdFKstringTokenSignatureStatusStatusDOCUMENTTEMPLATEVERSIONguidIdPKguidTemplateIdFKintVersionNumberSAVINGSPLANguidIdPKguidUserIdFKstringNamedecimalMonthlyIncomeSAVINGSGOALguidIdPKguidPlanIdFKstringNamedecimalTargetAmountSAVINGSCHANGEguidIdPKguidPlanIdFKdecimalIncomeDeltaSAVINGSONEOFFguidIdPKguidPlanIdFKdecimalAmountmember ofhas memberscontainsdefinesholdsrecordsownsrented byreceivessigned viaclassifiesattributed tolinked toversionsownstargetsadjusted byadjusted by

    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.

    Flux de signatureSigning flow
    PostgreSQLhb-api (.NET)PostgreSQLhb-api (.NET)LandlordTenantCreate tenant pack + request signature1Insert SignatureRequest (Pending, token)2Signing link3Send link (email / WhatsApp)4GET /sign/{token}5Load request + document6Show document + signature pad7Submit name + signature + "read & approved"8Status = Signed, image, SignedAt9Mark contract check-in / signed10Confirmation + emailed copy11Signed copy available12LandlordTenant

    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.

    Acteurs & cas d'utilisationActors & use cases
    👤 Owner / Admin
    👤 Member
    👤 Viewer
    👤 Tenant
    🛡️ Super-Admin
    Manage properties & members
    Manage leases, rent & deposits
    Record transactions
    Generate & e-sign documents
    Reports & statistics
    Read-only access
    Sign lease online
    Oversee all accounts (fleet)

    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.

    Cycle de vie (états)Lifecycle (states)
    Actif · Active
    création / created
    supprimé / deleted
    check-in (état des lieux d'entrée)
    loyer / caution encaissés · révision
    reconduction auto (tacite)
    check-out (état des lieux de sortie)
    sortie réalisée / moved out
    règlement caution (remb. − déductions)
    clôturé / closed
    activé, bail signé / activated, signed
    mettre fin au bail / end lease
    Brouillon · Draft
    Terminé · Ended
    Caution réglée · Deposit settled
    Entrée à faire · Move-in due
    Occupation · Occupancy
    Sortie à faire · Move-out due

    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).

    Activité — nouveau contratActivity — new contract
    Non / No
    Oui / Yes
    Oui / Yes
    Non / No
    Non / No
    Oui / Yes
    Oui / Yes
    Non / No
    Ouvrir Contrats → « + Nouveau contrat »
    Open Contracts → « + New contract »
    Choisir l'unité louée
    Choose the rental unit
    Unité disponible ?
    Unit available?
    Toutes occupées → créer / libérer une unité
    All occupied → create / free a unit
    Loyer & caution pré-remplis depuis l'unité
    Rent & deposit pre-filled from the unit
    Saisir : locataire, téléphone, début,
    loyer, caution, jour de paiement, préavis
    Enter: tenant, phone, start, rent, deposit, due day, notice
    Ajouter des détails ?
    Add details?
    Email · fin · renouvellement auto · statut ·
    nationalité/langue · colocataires · garant · notes
    Email · end · auto-renew · status · co-tenants · guarantor · notes
    Champs requis OK ?
    unité + locataire + loyer
    Required fields OK? unit + tenant + rent
    Signaler les champs manquants
    Flag the missing fields
    Enregistrer
    Save
    Contrat créé — Brouillon ou Actif
    Contract created — Draft or Active
    Envoyer le bail par email ?
    Email the lease?
    Envoyer au locataire
    Send to the tenant
    Étapes suivantes : documents · signature · entrée…
    Next: documents · signature · move-in…
    Fin
    End

    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).

    Déploiement — Docker / HetznerDeployment — Docker / Hetzner
    🖳 Hetzner server · Ubuntu · Docker · 116.203.144.105
    Docker network — deploy_default
    HTTPS 443
    HTTPS 443
    HTTPS 443
    budget. (SPA)
    budget./api/*
    guide.
    EF Core
    push
    email
    serves
    caddy_data
    TLS certs
    pgdata
    hb_uploads
    /root/apps/housebudget-v2/docs
    (bind-mount, read-only)
    deploy-caddy-1 · Caddy
    :80 / :443 · HTTPS (Let's Encrypt)
    hb-web
    nginx · SPA React · :80
    hb-api
    C# / .NET 8 · :8080
    guide
    static file server · :80
    db · PostgreSQL 17 · :5432
    database: housebudget
    api. / stock.
    (other apps, same Caddy & DB)
    🖥️ Web
    React · TS
    💻 Desktop .exe
    Tauri · Rust
    📱 Mobile / Tablet
    Expo · RN
    🌐 DNS — mfspace.lu
    (LWS ns*.lwsdns.com)
    *.mfspace.lu → 116.203.144.105
    Firebase FCM
    push notifications
    SMTP
    mail.mfspace.lu
    🐳
    Mise à jour : 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.
    C'est tout !That's everything!

    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.