# Rental Manager Application de gestion comptable de biens locatifs — Go + SvelteKit + SQLite. Interface web embarquée, exécutable unique, sans dépendances externes. ## Fonctionnalités - **Biens immobiliers** — gestion multi-biens (longue durée & Airbnb) - **Transactions** — revenus & dépenses par bien, catégories fiscales - Import QIF/QFX depuis votre banque - Ventilation sur plusieurs biens (split) - Ventilation mixte revenu/dépense - Fusion de prélèvements scindés en deux par la banque - **Prêts immobiliers** — tableaux d'amortissement, split automatique intérêts/capital - **Calendrier** — grille mensuelle avec sync iCal Airbnb automatique (toutes les heures) - **Documents** — pièces jointes classées par année/catégorie, export ZIP - **Export fiscal** — CSV annuel par bien (revenus, charges déductibles) - **Catégories** — personnalisables, avec indicateur déductibilité fiscale - **Multi-utilisateurs** — authentification par session ## Stack | Composant | Technologie | |-----------|-------------| | Backend | Go 1.25, `gorilla/mux`, `modernc.org/sqlite` | | Frontend | SvelteKit + TailwindCSS + Chart.js + lucide-svelte | | Base de données | SQLite (mode WAL) | | Build Windows | `go build -ldflags="-H windowsgui"` | | Déploiement | Docker Compose | ## Développement ```bash # Backend (port 9000) go mod tidy go run ./cmd/server # Frontend (autre terminal, port 5173) cd frontend npm install npm run dev ``` Le frontend dev proxy les appels `/api/*` vers `:9000`. ## Build production (Windows) ```bat build.bat ``` Génère `RentalManager.exe` — interface web embarquée dans le binaire, sans console visible. ## Déploiement Docker (ESXi / NAS) ```bash docker compose up -d --build ``` Application accessible sur `http://:8080`. ## Structure ``` cmd/server/main.go Point d'entrée — routes, middlewares, démarrage internal/ auth/ Authentification, sessions cookie, middleware property/ Biens immobiliers (CRUD, URL iCal) transaction/ Revenus & dépenses, split, ventilation mixte calendar/ Événements d'occupation (CRUD) ical/ Sync flux iCal Airbnb — goroutine horaire document/ Upload pièces jointes, export ZIP année/catégorie fiscal/ Export CSV annuel loan/ Prêts immobiliers, tableaux d'amortissement, split auto category/ Catégories de transactions importer/ Import QIF/QFX bancaire db/ SQLite init + migrations web/ Frontend SvelteKit embarqué (embed.FS) frontend/src/ routes/ +page.svelte Tableau de bord (graphiques, KPI) transactions/ Liste & création de transactions import/ Import bancaire QIF calendar/ Calendrier mensuel documents/ Gestion des pièces jointes loans/ Prêts & amortissement properties/ Gestion des biens categories/ Catégories fiscal/ Export fiscal profile/ Profil & mot de passe lib/stores/api.js Client HTTP centralisé data/ rental.db Base SQLite (créée au premier démarrage) documents/ Fichiers uploadés ``` ## Variables d'environnement | Variable | Défaut | Description | |----------|--------|-------------| | `PORT` | `9000` | Port d'écoute | | `TZ` | `Europe/Paris` | Timezone | ## Premiers pas 1. Lancer l'application — un compte `admin@rental.local` / `admin1234` est créé automatiquement 2. Changer le mot de passe dans **Profil** 3. Créer vos biens dans **Biens** 4. Pour les biens Airbnb : coller l'URL iCal dans la fiche bien _(Airbnb → Annonce → Paramètres → Calendrier → Exporter le calendrier)_ 5. Configurer vos **Catégories** si besoin 6. Importer vos relevés bancaires via **Import** ## Sync iCal Airbnb La goroutine `ical.Service` synchronise automatiquement toutes les heures. Un bouton **Synchroniser** dans le calendrier force la sync immédiate. Les résultats sont loggués dans la table `ical_sync_log`. À chaque sync, les anciens événements Airbnb de la propriété sont supprimés et remplacés (ce qui gère aussi les annulations de réservations). ## Import bancaire Formats supportés : **QIF**, **QFX** _(Espace client → Mes comptes → Télécharger → Format QIF)_ Fonctionnalités : - Détection automatique des lignes déjà importées - Ventilation sur plusieurs biens - Ventilation mixte revenu + dépense (ex: loyer reçu + appel de fonds) - **Fusion** de deux prélèvements scindés par la banque → split intérêts/capital via tableau d'amortissement