No description
- Vue 53%
- Python 30.6%
- TypeScript 8.7%
- CSS 6.4%
- Dockerfile 0.8%
- Other 0.5%
| .forgejo/workflows | ||
| backend | ||
| deploy | ||
| frontend | ||
| .gitignore | ||
| docker-compose.yml | ||
| README.md | ||
SCI Rental Manager
Application de gestion locative pour une SCI, auto-hébergeable via Docker et Traefik.
Objectifs
L'application permettra de gérer :
- Les biens immobiliers
- Les locataires
- Les réservations
- Les tarifs
- Les contrats de location
- Le planning des locations
- L'historique des locataires
Types de réservation
Airbnb
- Réservation enregistrée
- Pas de contrat généré
Réservation directe
- Réservation enregistrée
- Contrat Word généré automatiquement
- Historique conservé
Architecture
Vue 3
│
▼
FastAPI
│
▼
SQLAlchemy
│
▼
PostgreSQL
Frontend
Vue 3
TypeScript
Vite
Responsabilités :
- Affichage des données
- Formulaires
- Navigation
- Appels API REST
- Planning des réservations
Backend
FastAPI
Responsabilités :
- API REST
- Validation des données
- Logique métier
- Génération des contrats
- Gestion des réservations
ORM
SQLAlchemy
Responsabilités :
- Mapping Python ↔ PostgreSQL
- Requêtes SQL
- Persistance des données
Base de données
PostgreSQL
Responsabilités :
- Stockage des données
- Intégrité des données
- Relations entre entités
Arborescence actuelle
sci-rental-manager/
│
├── backend/
│ │
│ ├── main.py
│ │
│ ├── database/
│ │ ├── __init__.py
│ │ ├── base.py
│ │ └── session.py
│ │
│ ├── models/
│ │ ├── __init__.py
│ │ ├── property.py
│ │ └── property_schema.py
│ │
│ └── routes/
│ ├── __init__.py
│ └── properties.py
│
├── frontend/
│ │
│ ├── src/
│ │ ├── api/
│ │ ├── components/
│ │ ├── types/
│ │ └── views/
│ │
│ ├── package.json
│ └── vite.config.ts
│
├── docs/
│
└── docker-compose.yml
Installation Backend
Création du virtualenv
python3 -m venv .venv
Activation :
source .venv/bin/activate
Installation FastAPI
pip install fastapi uvicorn
Installation SQLAlchemy + PostgreSQL
pip install sqlalchemy psycopg pydantic-settings
Vérification :
pip list | grep -E "sqlalchemy|psycopg"
Démarrer PostgreSQL
docker-compose.yml
services:
db:
image: postgres:16-alpine
container_name: sci-rental-db
environment:
POSTGRES_DB: sci_rental
POSTGRES_USER: sci_user
POSTGRES_PASSWORD: sci_password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:
Démarrage
docker compose up -d
Vérification :
docker ps
Création des tables SQLAlchemy
Depuis :
backend/
Lancer :
python3 -m database.session
Résultat attendu :
✅ tables créées
Démarrage du Backend
Depuis :
backend/
©
URLs :
API : http://127.0.0.1:8000
Swagger : http://127.0.0.1:8000/docs
Installation Frontend
Création du projet Vue 3
Depuis la racine :
npm create vite@latest frontend
Choix :
Vue
TypeScript
Installation des dépendances
cd frontend
npm install
Lancement
npm run dev
URL :
http://localhost:5173
Configuration CORS
Dans main.py :
from fastapi.middleware.cors import CORSMiddleware
Ajouter :
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:5173"
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
Architecture Frontend
frontend/
│
├── src/
│ ├── api/
│ │ └── properties.ts
│ │
│ ├── types/
│ │ └── property.ts
│ │
│ ├── views/
│ │ └── PropertiesView.vue
│ │
│ ├── components/
│ │
│ ├── App.vue
│ └── main.ts
Fonctionnalités implémentées
Property
CRUD PostgreSQL :
GET /properties
GET /properties/{id}
POST /properties
PATCH /properties/{id}
DELETE /properties/{id}
Frontend :
Affichage des propriétés depuis PostgreSQL
Concepts découverts
Backend
- FastAPI
- Routers
- Pydantic
- SQLAlchemy
- PostgreSQL
- Sessions SQLAlchemy
- CRUD REST
Frontend
- Vue 3
- TypeScript
- Vite
- Components
- onMounted()
- ref()
- fetch()
- CORS
Roadmap
Sprint 1
- FastAPI
- PostgreSQL
- SQLAlchemy
- Vue 3
- Property CRUD
- Affichage des propriétés
Sprint 2
- Création de propriété depuis le frontend
- Modification de propriété
- Suppression de propriété
- Composants Vue dédiés
Sprint 3
- Tenant
- CRUD Tenant
- Historique locataire
Sprint 4
- Booking
- Réservations
- Vérification anti-chevauchement
Sprint 5
- Planning FullCalendar
- Vue mois
- Vue semaine
Sprint 6
- Templates Word
- Génération DOCX
- Téléchargement des contrats
Commandes utiles
Backend
cd backend
uvicorn main:app --reload
Frontend
cd frontend
npm run dev
PostgreSQL
docker compose up -d
docker compose down
docker ps
Création des tables
cd backend
python3 -m database.session
Git
git status
git add .
git commit -m "message"
Architecture cible
Vue 3
↓
FastAPI
↓
SQLAlchemy
↓
PostgreSQL
↓
Docker
↓
Traefik
Objectif final :
- Application self-hostable
- Gestion des biens
- Gestion des locataires
- Gestion des réservations
- Planning visuel
- Génération des contrats
- Déploiement Docker derrière Traefik