up
This commit is contained in:
125
README.md
125
README.md
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user