This commit is contained in:
2026-04-11 12:12:07 +02:00
parent 3bc6e2e080
commit 5b3c5ebb2f
92 changed files with 10948 additions and 35 deletions

125
README.md
View File

@@ -1,76 +1,131 @@
# Rental Manager
Gestion comptable de biens locatifs — Go + SvelteKit + SQLite.
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
- **Backend** : Go 1.22, gorilla/mux, mattn/go-sqlite3
- **Frontend** : SvelteKit + TailwindCSS + Chart.js
- **BDD** : SQLite (WAL mode)
- **Déploiement** : Docker Compose (ESXi / NAS)
| 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 |
## Lancement développement
## Développement
```bash
# Backend
cd rental-manager
# Backend (port 9000)
go mod tidy
go run ./cmd/server
# Frontend (autre terminal)
# Frontend (autre terminal, port 5173)
cd frontend
npm install
npm run dev
```
## Déploiement production (ESXi)
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
```
L'application est accessible sur `http://<IP>:8080`
Application accessible sur `http://<IP>:8080`.
## Structure
```
cmd/server/main.go Entrypoint Go
cmd/server/main.go Point d'entrée — routes, middlewares, démarrage
internal/
auth/ Authentification, sessions, middleware
property/ Biens immobiliers
transaction/ Revenus & dépenses
calendar/ Événements d'occupation
document/ Pièces jointes
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
ical/ Sync flux iCal Airbnb (goroutine)
loan/ Prêts immobiliers, tableaux d'amortissement, split auto
category/ Catégories de transactions
importer/ Import QIF/QFX bancaire
db/ SQLite init + migrations
data/
rental.db Base SQLite (créée au démarrage)
documents/ Fichiers uploadés (property_id/année/)
web/ Frontend SvelteKit embarqué (embed.FS)
frontend/src/
routes/ Pages SvelteKit
lib/stores/api.js Client API + stores Svelte
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 |
| `PORT` | `9000` | Port d'écoute |
| `TZ` | `Europe/Paris` | Timezone |
## Premiers pas après démarrage
## Premiers pas
1. Créer le premier utilisateur (endpoint à ajouter ou via SQLite direct)
2. Ajouter les deux biens (apartement longue durée + Airbnb)
3. Renseigner l'URL iCal Airbnb dans la fiche du bien Airbnb
4. La sync démarre automatiquement toutes les heures
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
Airbnb expose un flux iCal par annonce :
`Annonce → Paramètres → Calendrier → Exporter le calendrier`
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`.
Coller l'URL `.ics` dans la fiche du bien. La goroutine `ical.Service`
synchronise automatiquement toutes les heures et loggue les résultats
dans `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