132 lines
4.7 KiB
Markdown
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
|