Zadeet est une application web de gestion de dépenses personnelles conçue pour suivre, catégoriser et analyser votre budget mensuel.
L'application repose sur une architecture conteneurisée séparant le Frontend (statique servi par Nginx), le Backend (API Python) et la Base de données (PostgreSQL).
Le projet est divisé en trois services Docker distincts :
- Frontend : Interface utilisateur (HTML/CSS/JS) servie par Nginx (Port
80) - Backend : API REST développée en Python 3.11 (avec Uvicorn), accessible sur le port
8000 - Database : Base de données PostgreSQL 15
- Docker installé sur votre machine
- Git pour cloner le projet
- Remplir les variables du .env (réf à .env.exemple) :
cp .env.example .env
git clone https://github.com/dohaab14/zadeet.git
cd zadeetUtilisez Docker Compose pour construire les images et démarrer les conteneurs :
docker-compose up -d --buildUne fois les conteneurs lancés, vous devez initialiser les tables et les données de base :
docker exec -it backend_container python init_db.pyUtilisation Une fois l'application démarrée :
Application Web : http://localhost/
Documentation API (Swagger) : http://localhost:8000/docs (si configuré dans FastAPI)
Commandes Utiles
#Arrêter l'application
docker-compose down
#Voir les logs (en cas de problème)
# Pour le backend
docker logs -f backend_container
# Pour tous les services
docker-compose logs -f
Nettoyer l'environnement (repartir à zéro) Attention : cette action supprime toutes les données.
docker-compose down -vPour information, toutes nos ressources sont déployées dans le namespace : u-grp3
- dohaab14/zadeet-backend:latest
- dohaab14/zadeet-frontend:latest
kubectl -n u-grp3 create secret generic zadeet-secrets --from-literal=DATABASE_USER=ÀREMPLIRE --from-literal=DATABASE_PASSWORD=ÀREMPLIRE --from-literal=DATABASE_NAME=ÀREMPLIRE
/!\ faire la commande depuis le folder app
kubectl apply -R -f k8s/
Récupérer l'IP pour le DNS
kubectl get ingress -n u-grp3
Ajouter ceci dans /etc/hosts ou l'équivalent pour votre OS :
IP zadeet.u-grp3.csc8567.org
Ouvrir un navigateur et taper zadeet.u-grp3.csc8567.org
sinon :
kubectl port-forward -n u-grp3 svc/frontend 8080:80
└──
├── docker-compose.yml
├── init_db.py
├── nginx.conf
├── requirements.txt
├── seed_db.py
└── app/
├── schemas.py
├── api/
│ └── routes_plafonds.py
├── backend/
│ ├── Dockerfile
│ ├── main.py
│ ├── api/
│ │ ├── back_routes_acc.py
│ │ ├── back_routes_categories.py
│ │ └── back_routes_transactions.py
│ ├── db/
│ │ ├── database.py
│ │ ├── models.py
│ │ └── schemas.py
│ └── services/
│ ├── services_accueil.py
│ ├── services_categories.py
│ ├── services_plafonds.py
│ └── services_transactions.py
├── frontend/
│ ├── Dockerfile
│ ├── js/
│ │ └── app.js
│ ├── static/
│ │ └── style.css
│ └── templates/
│ ├── categories.html
│ ├── index.html
│ └── transactions.html
├── k8s/
│ ├── 01-configmap.yaml
│ ├── 02-secret.yaml
│ ├── ingress.yaml
│ ├── backend/
│ │ ├── 01-backend-deployment.yaml
│ │ └── 02-backend-service.yaml
│ ├── db/
│ │ ├── 01-postegres-pvc.yaml
│ │ ├── 02-postgres-deployment.yaml
│ │ └── 03-postgres-service.yaml
│ └── front/
│ ├── 01-nginx-configmap.yaml
│ ├── 02-frontend-deployment.yaml
│ └── 03-frontend-service.yaml
└── templates/
├── base.html
├── home.html
└── navbar.html
Auteurs Zadeet Team – Développement Fullstack
Dernière mise à jour : Ajout de la partie Kubernetes