Syndic SaaS - Documentation Complète
Plateforme multi-tenant de gestion de copropriété conçue pour les syndics professionnels et bénévoles.
Qu'est-ce que Syndic SaaS ?
Syndic SaaS est une plateforme complète de gestion de copropriété qui permet aux syndics de gérer efficacement leurs résidences, propriétaires, locataires, finances et communications. L'application offre une architecture multi-tenant où chaque organisation (syndic) opère de manière isolée avec ses propres données, utilisateurs et paramètres.
Gestion Immobilière
Gérez résidences, blocs, locaux, dépendances et contacts propriétaires/locataires.
Comptabilité Intégrée
Caisse, encaissements, décaissements, sessions et réconciliation automatique.
Cotisations & Appels
Génération automatique des appels de fonds selon le mode fixe ou proportionnel.
Gestion Fournisseurs
Suivi des achats, factures, paiements et certificats de retenue à la source.
Notifications
Alertes automatiques pour impayés, rappels et communications importantes.
Sécurité Avancée
Authentification JWT, rôles granulaires et isolation multi-tenant complète.
Architecture
Vue d'ensemble de l'architecture technique du système
Diagramme d'Architecture
┌─────────────────────┐ ┌──────────────────────┐ ┌─────────────────┐
│ Next.js 15+ │────────>│ Django REST │────────>│ PostgreSQL │
│ Frontend │ HTTP │ Framework │ SQL │ Database │
│ (Port 3000) │<────────│ (Port 8000) │<────────│ │
└─────────────────────┘ └──────────────────────┘ └─────────────────┘
│ │ │
│ React Query │ Celery Tasks │
│ SWR Caching ▼ │
│ ┌──────────────────┐ │
│ │ Redis │ │
│ │ Cache/Broker │ │
│ └──────────────────┘ │
│ │ │
▼ ▼ │
┌─────────────────────┐ ┌──────────────────┐ │
│ Cloudinary/S3 │ │ Celery Workers │ │
│ Media Storage │ │ Background Jobs│ │
└─────────────────────┘ └──────────────────┘ │
Backend (Django)
- Django 5.2 - Framework web Python robuste
- Django REST Framework - API RESTful complète
- PostgreSQL - Base de données relationnelle
- Celery + Redis - Tâches asynchrones
- JWT Authentication - Sécurité token-based
Frontend (Next.js)
- Next.js 15+ - App Router & React 19
- TypeScript - Typage statique
- Tailwind CSS - Styling utility-first
- SWR / React Query - Data fetching
- Shadcn/UI - Composants UI modernes
Rôles & Permissions
Système de contrôle d'accès granulaire basé sur les rôles
Hiérarchie des Utilisateurs
Propriétaire d'Organisation
Accès complet à toutes les fonctionnalités de l'organisation. Peut gérer les membres, rôles et paramètres.
Membre (avec rôles)
Accès défini par les rôles assignés. Peut avoir des permissions sur des résidences spécifiques.
Utilisateur Locaux
Accès limité: voir ses cotisations, soumettre des réclamations, participer aux conversations.
Permissions Granulaires
Format: app.action
articles.viewarticles.createarticles.updatearticles.deletefournisseurs.viewfournisseurs.createcaisse.viewcaisse.createcotisations.viewcotisations.createachats.viewachats.exportOrganisations
Entité principale de multi-tenancy - isolation complète des données
Modèle Organization
Champs Principaux
- •
name- Nom de l'organisation - •
owner- Propriétaire (OneToOne avec User) - •
slug- Identifiant URL unique - •
is_active- Statut actif/inactif
Paramètres Devise
- •
currency_code- Code ISO (TND, EUR, USD...) - •
currency_decimal_places- 2 ou 3 décimales - •
currency_thousand_separator- Séparateur milliers - •
currency_symbol_position- before/after
Paramètres TEJ (Fiscalité Tunisie)
- •
tax_id- Matricule fiscal - •
taxpayer_category- PM (Personne Morale) / PP - •
legal_address- Adresse légale - •
contact_email/contact_phone
Résidences
Propriétés gérées - appartenant à une organisation
Attributs de Résidence
Identification
- • Nom & Adresse
- • Slug URL unique
- • Usage (Habitation/Pro)
Compteurs
- • Nombre de blocs
- • Nombre de locaux
- • Nombre de dépendances
Garantie
- • Garantie décennale (O/N)
- • Date début/fin garantie
Modes de Cotisation
Mode FIXE
Prix fixe par type de local/dépendance
- • prix_local_commercial
- • prix_local_residentiel
- • prix_dep_parking_ss/ar
- • prix_dep_cellier
Mode PROPORTIONNEL
Calcul basé sur la surface
- • surface_globale (m²)
- • budget_annuel
- • Formule: budget × (surface_local / surface_totale)
Structures
Organisation physique: Blocs, Locaux, Dépendances, Contacts
Block
Bâtiment ou bloc au sein d'une résidence
- name
- description
- residence (FK)
- organization (FK)
LocalUnit
Appartement ou local commercial
- code
- type (résidentiel/commercial)
- surface_m²
- surface_globale_m²
- solde_anterieur
- block (FK)
LocalContact
Contact associé à un local
- role (propriétaire/locataire/payeur)
- person_type (physique/morale)
- nom/prénom ou raison_sociale
- email, téléphone
- user (FK optionnel)
Dependance
Parking, cellier, etc.
- type (parking_ss/parking_ar/cellier)
- name
- surface_m²
- block (FK optionnel)
- local (FK optionnel)
Module Financier
Vue d'ensemble des flux financiers
Entrées
- Cotisations
- Encaissements
- Approvisionnements
Caisse
- Sessions
- Mouvements
- Réconciliation
Sorties
- Paiements fournisseurs
- Dépenses
- Dépôts bancaires
Caisse
Gestion de trésorerie avec sessions et mouvements
Composants de la Caisse
Caisse
Registre de caisse par résidence. Suit le solde courant et les sessions.
CaisseSession
Période d'activité avec solde d'ouverture/clôture. Réconciliation automatique à la fermeture.
CaisseMovement
Transaction individuelle: direction (IN/OUT), type, mode de paiement, montant.
Types de Mouvements
Cotisations
Appels de fonds et suivi des paiements
Types de Cotisations
FS - Frais Syndic
Cotisations régulières pour le fonctionnement. Mode proportionnel uniquement.
EX - Exceptionnelle
Travaux, réparations. Nécessite service_name et service_budget.
AA - Autres Apports
Contributions diverses non classifiées.
Workflow des Cotisations
Achats
Gestion des fournisseurs, factures et paiements
Fournisseur
Prestataires et fournisseurs
- company_name
- matricule_fiscal
- address
- email/phone
- bank_account (RIB)
DocumentAchat
Factures et avoirs
- type (facture/avoir)
- reference
- fournisseur (FK)
- total_ht/ttc
- amount_paid_cached
- status
TEJ (Télédéclaration)
Certificats de retenue à la source pour la fiscalité tunisienne
Qu'est-ce que le TEJ ?
Le TEJ (Télédéclaration des Retenues à la Source) est le système électronique tunisien pour déclarer les retenues à la source effectuées sur les paiements aux fournisseurs. L'application génère automatiquement les fichiers XML conformes au format exigé.
TauxRetenue
Barème des taux de retenue
- code
- libelle
- taux (%)
- date_debut/fin
CertificatRetenue
Certificat par fournisseur
- fournisseur
- document_achat
- montant_brut
- taux_retenue
- montant_retenu
DepotTEJ
Dépôt de déclaration
- periode
- certificats (M2M)
- status (draft/submitted)
- xml_file
Notifications
Système d'alertes et communications
Types de Notifications
Cotisations Impayées
Alertes automatiques pour les retards
Paiements Reçus
Confirmation des encaissements
Réclamations
Nouvelles réclamations et réponses
Invitations
Invitations à rejoindre l'organisation
Stack Technique
Technologies utilisées dans le projet
Django 5.2
Backend
Django REST Framework
API
PostgreSQL
Database
Redis
Cache
Celery
Tasks
Next.js 15
Frontend
React 19
UI
TypeScript
Language
Tailwind CSS
Styling
Docker
Container
AWS EB
Deployment
Cloudinary
Media
API Reference
Endpoints REST principaux
/api/auth/google//api/auth/token/refresh//api/v1/organizations//api/v1/residences//api/v1/residences/{id}/structures/locaux//api/v1/residences/{id}/cotisations//api/v1/residences/{id}/caisse/movements//api/v1/residences/{id}/finance/certificats/Documentation API complète: Accédez à /api/schema/swagger-ui/ pour la documentation OpenAPI interactive.
Déploiement
Options de déploiement et configuration
Docker (Recommandé)
# Build et démarrer docker-compose up -d # Production docker-compose -f docker-compose.prod.yml up -d # Migrations docker-compose exec backend python manage.py migrate
AWS Elastic Beanstalk
- Configuration .ebextensions/ incluse
- Hooks de déploiement automatiques
- Procfile pour Gunicorn
- Variables d'environnement sécurisées