Application de gestion de locataires et de biens locatifs avec génération automatique d'appels de loyers au format PDF.
- Gestion des locataires (création, modification, suppression)
- Gestion des baux (biens locatifs, loyers, charges)
- Indexation automatique des loyers via les indices INSEE (IRL/ILAT)
- Génération de notifications d'appels de loyers en PDF
- Envoi d'emails avec pièces jointes PDF
- Support multi-plateforme : Web, Android, iOS
- Authentification sécurisée avec isolation des données par utilisateur
| Technologie | Version |
|---|---|
| Angular | 17.x |
| Ionic | 7.x |
| Capacitor | 5.x |
| Parse Server | Backend |
| pdfmake | Génération PDF |
- Node.js >= 18.x
- npm >= 9.x
- Compte Parse Server (Back4App, Sashido, ou self-hosted)
- Clé API INSEE (optionnel, pour l'indexation automatique)
git clone https://github.com/jurocknsail/elease.git
cd eleasenpm installCopier le fichier template et remplir avec vos identifiants :
cp src/environments/environment.example.ts src/environments/environment.ts
cp src/environments/environment.example.ts src/environments/environment.prod.tsÉditer les fichiers avec vos identifiants :
export const environment = {
production: false,
parseAppId: 'VOTRE_PARSE_APP_ID',
parseJsKey: 'VOTRE_PARSE_JS_KEY',
parseServerUrl: 'https://votre-parse-server.com/parse',
inseeApiKey: 'VOTRE_CLE_API_INSEE',
sandbox: true
};npm run startL'application est accessible sur http://localhost:4200
- Créer un compte sur back4app.com et créer une nouvelle application.
- Récupérer les clés dans App Settings > Security & Keys :
Application ID,JavaScript Key,Master Key. - Renseigner ces valeurs dans
environment.ts:
export const environment = {
production: false,
parseAppId: 'VOTRE_APP_ID_BACK4APP',
parseJsKey: 'VOTRE_JS_KEY_BACK4APP',
parseServerUrl: 'https://parseapi.back4app.com',
sandbox: true
};- Lancer l'application normalement :
npm run startCette option permet de travailler entièrement hors-ligne avec MongoDB et Parse Server installés localement.
Si vous êtes derrière un proxy d'entreprise, mongodb-runner ne fonctionnera pas. Télécharger le binaire directement :
# Adapter la version et l'OS si nécessaire
curl -L "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.14.tgz" -o mongodb.tgz
tar -xzf mongodb.tgz
mkdir -p ~/data/db
# Ajouter au PATH
echo 'export PATH="$PATH:$HOME/mongodb-linux-x86_64-ubuntu2204-7.0.14/bin"' >> ~/.bashrc
source ~/.bashrcOuvrir un terminal dédié et laisser tourner :
mongod --dbpath ~/data/dbnpm install -g parse-server parse-dashboardCréer parse-config.json à la racine du projet e-lease (hors du dossier elease/) :
{
"appId": "VOTRE_APP_ID",
"masterKey": "VOTRE_MASTER_KEY",
"clientKey": "VOTRE_CLIENT_KEY",
"javascriptKey": "VOTRE_JS_KEY",
"databaseURI": "mongodb://localhost/elease",
"serverURL": "http://localhost:1337/parse",
"port": 1337
}Ouvrir un terminal dédié et laisser tourner :
parse-server parse-config.jsonparse-dashboard \
--dev \
--appId VOTRE_APP_ID \
--masterKey VOTRE_MASTER_KEY \
--serverURL http://localhost:1337/parse \
--appName eleaseLe dashboard est accessible sur http://localhost:4040
Mettre à jour environment.ts pour pointer vers le serveur local :
export const environment = {
production: false,
parseAppId: 'VOTRE_APP_ID',
parseJsKey: 'VOTRE_JS_KEY',
parseServerUrl: 'http://localhost:1337/parse',
sandbox: true
};npm run start| Terminal | Commande | Rôle |
|---|---|---|
| 1 | mongod --dbpath ~/data/db |
Base de données |
| 2 | parse-server parse-config.json |
API backend |
| 3 | parse-dashboard --dev ... |
Interface admin (optionnel) |
| 4 | npm run start |
Application Angular |
L'application est disponible en image Docker multi-architecture (amd64 + arm64) sur Docker Hub : jurocknsail/elease:latest
docker pull jurocknsail/elease:latest
docker run -p 80:80 jurocknsail/elease:latestL'application est accessible sur http://localhost
# Build simple (architecture locale)
docker build -t jurocknsail/elease:latest .
# Build multi-architecture (amd64 + arm64)
docker buildx build --platform linux/amd64,linux/arm64 -t jurocknsail/elease:latest --push .Prérequis build multi-arch : QEMU doit être installé pour l'émulation ARM. À faire une fois (à refaire après reboot) :
docker run --privileged --rm tonistiigi/binfmt --install allLe CI GitHub Actions le gère automatiquement via
setup-qemu-action.
Le build utilise un multi-stage Dockerfile :
- Stage build — Node 20 Alpine compile l'application Angular/Ionic (
npm ci+npm run build) - Stage serve — Nginx Alpine sert le dossier
www/buildé
La configuration Nginx est optimisée pour les SPA Angular avec une stratégie de cache adaptée :
index.html: jamais mis en cache (rechargement garanti à chaque déploiement)- Assets JS/CSS (avec hash) : cache navigateur 1 an (
immutable)
Le build et le push Docker sont automatisés via GitHub Actions. Chaque push sur main déclenche un build multi-architecture et met à jour jurocknsail/elease:latest sur Docker Hub.
Dans Settings → Secrets and variables → Actions du repo GitHub, ajouter :
| Secret | Valeur |
|---|---|
DOCKERHUB_USERNAME |
Login Docker Hub |
DOCKERHUB_TOKEN |
Token Docker Hub (Account Settings → Personal Access Tokens) |
ENVIRONMENT_PROD |
Contenu complet du fichier src/environments/environment.prod.ts |
Exemple de valeur pour ENVIRONMENT_PROD :
export const environment = {
production: true,
parseAppId: 'VOTRE_APP_ID',
parseJsKey: 'VOTRE_JS_KEY',
parseServerUrl: 'https://votre-parse-server.com/parse',
inseeApiKey: 'VOTRE_CLE_API_INSEE',
sandbox: false
};Les fichiers
environment.tsetenvironment.prod.tssont git-ignorés. Le CI recrée automatiquementenvironment.prod.tsdepuis le secret, et génère unenvironment.tsfactice (remplacé parenvironment.prod.tspendant le build Angular).
name: Docker Build & Push
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create environment files
run: |
echo "export const environment = {};" > src/environments/environment.ts
echo "${{ secrets.ENVIRONMENT_PROD }}" > src/environments/environment.prod.ts
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build & Push multi-arch
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: jurocknsail/elease:latest| Commande | Description |
|---|---|
npm run start |
Serveur de développement (port 4200) |
npm run build |
Build de production dans www/ |
npm run watch |
Build avec rechargement automatique |
npm run test |
Exécution des tests unitaires |
npm run lint |
Analyse statique du code |
| Classe | Champs |
|---|---|
| Leaseholder | name, email, phone, leases (Relation) |
| Lease | address, price, charge, indexing, renewalDate, isPro |
npm run build
npx cap sync android
npx cap open androidnpm run build
npx cap sync ios
npx cap open ioselease/
├── src/
│ ├── app/
│ │ ├── model/ # Modèles de données
│ │ ├── pages/ # Composants/pages
│ │ ├── services/ # Services (Parse, INSEE)
│ │ └── validators/ # Validateurs personnalisés
│ ├── environments/ # Configuration (git-ignored)
│ └── assets/ # Ressources statiques
├── android/ # Projet Android natif
├── ios/ # Projet iOS natif
├── www/ # Build de production
├── Dockerfile # Build multi-stage Docker
├── nginx.conf # Config Nginx pour SPA Angular
└── .github/
└── workflows/
└── docker-build.yml # CI/CD GitHub Actions
- Les fichiers
environment.tsetenvironment.prod.tssont exclus du versioning - Chaque utilisateur a ses propres données via Parse ACL
- Les credentials ne sont jamais commités
- Les secrets Docker Hub sont stockés dans GitHub Secrets (jamais dans le code)
- Le multi-stage Docker garantit que le code source et les clés ne se retrouvent pas dans l'image finale — seul le bundle
www/buildé est embarqué
Projet privé - Tous droits réservés
Développé avec Angular + Ionic