Files
RentalManager/README.md
2026-04-11 12:12:07 +02:00

132 lines
4.7 KiB
Markdown

# 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://<IP>: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